1、c 语言程序设计期末试题语言程序设计期末试题 A(含答案含答案)一、单项选择题(选择一个最佳答案,每题 2 分,共 20 分)1.一个 C 程序的执行是从()。A)本程序的 main 函数开始,到 main 函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的 main 函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序 main 函数结束2.下列选项中,不能用作标识符的是()。A)_1234_ B)_1_2 C)int_2_ D)2_int_3.以下定义语句中正确的是()。A)char a=Ab=B;B)float a=b=10.0
2、;C)int a=10,*b=&a;D)float*a,b=&a;4.设有以下定义:#define d 2int a=0;double b=1.25;char c=A;则下面语句中错误的是()。A)a+;B)b+C)c+;D)d+;5.以下 4 个选项中,不能作为一条 C 语句的是()。A);B)a=0,b=0,c=0;C)if(a0);D)if(b=0)m=1;n=2;6.有以下定义语句 double a,b;int w;long c;若各变量已正确赋值,则下列选项中正确的表达式是()。A)a=a+b=b+B)w%(int)a+b)C)(c+w)%(int)a D)w=a=b;7.设有定义:
3、int n=0,*p=&n,*q=&p;则以下选项中,正确的赋值语句是()。A)p=1;B)*q=2;C)q=p;D)*p=5;8.设有定义:int a,*pa=&a;以下 scanf 语句中能正确为变量 a 读入数据的是()。A)scanf(“%d”,pa);B)scanf(“%d”,a);C)scanf(“%d”,&pa);D)scanf(“%d”,*pa);9.若有说明:char*language=”FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”;则表达式*language1*language2比较的是()。A)字符 B 和字符 P B)字符串 FORTRAN
4、和字符串 BASICC)字符 F 和字符 B D)字符串 BASIC 和字符串 PASCAL10.执行语句 for(i=1;i+4;);后变量 i 的值是()。A)3 B)4 C)5 D)不定一、填空题(每空 2 分,共 18 分)1.若有定义:int a=7;float x=2.5,y=4.7;则表达式 x+a%3*(int)(x+y)%2/4 的值为 。2.有程序段:int a10=1,2,3,4,5,6,7,8,9,10,*p=&a3,b;b=p5;则 b 中的值是 。3.函数 swap(int x,int y)实现对 x 和 y 值的交换。则执行语句int a2=1,2;swap(a0
5、,a1);后,a0=,a1=。4.设有以下宏定义:#define f(z)z*z,执行赋值语句 k=f(44)/f(22);(k 为 int 型变量)后,k 的值是 。5.书写语句求 a,b 两个数的最大值 max。?:;6.若 x 为 int 型变量,则执行 x=7;x=x=xx;语句后,x 的值是 。二、读程序写结果(每题 6 分,共 24 分)1.有以下程序int f(int a)int b=0;static c=3;b=b+1;c=c+1;return(a+b+c);void main()int a=2,i;for(i=0;i3;i+)printf(“%2d”,f(a);执行后输出的结
6、果是 。2.有以下程序void f(int y,int*x)y=y+*x;*x=*x+y;void main()int x=2,y=4;f(y,&x);printf(“x=%d,y=%dn”,x,y);执行后输出的结果是 。3.有以下程序#define LETTER 1#include void main()char str20=C Language,c;int i=0;while(c=stri)!=0)i+;#ifdef LETTER if(c=a&c=B&c=Z)c=c-1;else if(c=A)c=c+25;#endif printf(%c,c);执行后输出的结果是 。4.有以下程序
7、void fun(int*a,int i,int j)int t;if(ij)t=ai;ai=aj;aj=t;i+;j-;for(i=0;i4;i+)printf(%2d,ai);fun(a,i,j);void main()int x=2,6,1,8,i;fun(x,0,3);for(i=0;i4;i+)printf(%2d,xi);printf(n);执行后输出的结果是 。四、程序填空(每空 1 分,共 8 分)下面程序的功能是:计算从命令行中输入的第 2 个参数开始的所有参数中是回文字符串的参数个数。(顺读和倒读都一样的字符串称为“回文”,如“level”就是回文)请填空。#include
8、 【1】int sumhw(char*p,int n);char jughw(char*str);void main(int argc,char*argv)int s;if(argc2)printf(请输入有效参数);else s=sumhw(【2】,argc-1);printf(共有%d 个回文串n,s);int sumhw(char*p,int n)char flag;int i,sum=0;for(i=0;ib)max=a max=b6、14三、读程序写结果(每题 6 分,共 24 分)1、7 8 9 2、x=8,y=4 3、C Lbohvbhf 4、8 6 1 2 8 6 1 2 四、
9、程序填空(每空 1 分,共 8 分)【1】#include【2】argv+1【3】*(p+i)【4】flag=Y【5】str+n-1【6】p1p2【7】p2【8】p1p2五、编程题(共 30 分)1.(1)数组法(9 分)#include#include#define N 20void inv(char str,int n);void main()char strN;gets(str);inv(str,strlen(str);puts(str);void inv(char str,int n)int i,j,temp;for(i=0,j=n-1;i=j;i+,j-)temp=stri;stri
10、=strj;strj=temp;(2)指针法(9 分)#include#include#define N 20void inv(char*str,int n);void main()char strN;gets(str);inv(str,strlen(str);puts(str);void inv(char*str,int n)char*i,*j,temp;for(i=str,j=str+n-1;i=j;i+,j-)temp=*i;*i=*j;*j=temp;2.(12 分)#include int m;void del_element(int num,int n);void main()int num10;int i,n;m=10;for(i=0;i10;i+)scanf(%d,&numi);printf(please input nn);scanf(%d,&n);del_element(num,n);for(i=0;im;i+)printf(%d,numi);void del_element(int num,int n)int i,j;for(i=0;im;i+)if(numi=n)for(j=i+1;jm;j+)numj-1=numj;m-;i-;