C语言程序设计 笔试试卷(一).pdf
1C 语言程序设计 笔试试卷(一)考试时间:考试时间:120120 分钟分钟注意:注意:请将答案书写在答卷纸上,否则不给分!一、一、单项选择题(每个选项单项选择题(每个选项 1.51.5 分,共分,共 6060 分)分)1、以下叙述中正确的是()。A)构成 C 程序的基本单位是函数 B)可以在一个函数中定义另一个函数C)main()函数必须放在其它函数之前D)所有被调用的函数一定要在调用之前进行定义2、以下对 C 语言函数的有关描述中,正确的是()。A)函数必须有返回值,否则不能使用函数B)C 函数既可以嵌套定义又可以递归调用 C)在 C 中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参D)C 程序中有调用关系的所有函数必须放在同一个源程序文件中3、C 语言的基本数据类型包括()。A)整型,实型,逻辑型 B)整型,实型,字符型C)整型,字符型,逻辑型 D)整型,实型,逻辑型,字符型4、C 语言中用于结构化程序设计的三种基本结构是()。A)顺序结构、选择结构、循环结构 B)if、switch、breakC)for、while、do-while D)if、for、continue25、下述合法的 C 语言的字符常量是()。A)A B)65 C)A D)t6、下面不正确的赋值语句是()。A)+t;B)n1=(n2=(n3=0);C)k=i=j;D)a=a+b=1;7、b在内存中以()个字节存放。A)1 B)2 C)3 D)不确定8、a 是 int 类型变量,c 是字符变量。下列输入语句中哪一个是错误的()。A)scanf(%d,%c,&a,&c);B)scanf(%d%c,a,c);C)scanf(%d%c,&a,&c);D)scanf(d=%d,c=%c,&a,&c);9、假设定义:int x=3,y=3;则复合赋值表达式 x/=1+y 的值为()。A)0 B)0.75 C)6 D)以上都错10、a=3*4,a+5;a 的值为()。A)17 B)12 C)60 D)511、若已定义 x 和 y 为 double 类型,则表达式:x=1,y=x+3/2 的值是()。A)1 B)2 C)2.0 D)2.5 12、设 a 为整型变量,不能正确表达数学关系 10a15 的 C 语言表达式是()。A)10a10&a15 D)!(a=15)13、对于 int x,y;语句 if(x=0)if(x)y=1;else y=-1;B)if(x!=0)if(x0)y=1;else y=-1;else y=0;C)if(x0)y=1;else y=0;14、下列程序段执行后 s 值为()。int i=1,s=0;do if(!(i%2)continue;s+=i;while(+i10);A)1 B)45 C)25 D)以上均不是15、下列程序执行后,输出结果为()。int func(int x,int y)return x+y;main()int a=1,b=2,c=3,d=4,e=5;printf(%dn,func(a+b,b+c,c+a),(d,e);A)15 B)5 C)函数调用出错 D)916、对于以下程序段,运行后 i 值为()。int i=0,a=1;switch(a)case 1:i+=1;case 2:i+=2;break;default:i+=3;A)1 B)3 C)6 D)上述程序有语法错误417、设有以下程序段,则()。int x=0,s=0;while(!x!=0)s+=+x;printf(“%d”,s);A)运行程序段后输出 0 B)运行程序段后输出 1C)程序段中的控制表达式是非法的 D)程序段执行无限次18、下列程序中的变量已正确定义,要求程序段完成求 5!(阶乘)的计算,不能完成此操作的程序段是()。A)for(i=1,p=1;i=5;i+)p*=i;B)for(i=1;i=5;i+)p=1;p*=i;C)i=1;p=1;while(i=5)p*=i;i+;D)i=1;p=1;dop*=i;i+;while(ia)|(m=ab);printf(%d,%dn,k,m);A)0,0 B)0,1 C)1,0 D)1,120、下列程序运行后的输出结果是()。void fun(char*c,intd)*c=*c+1;d=d+1;printf(%c,%c,*c,d);5main()char a=A,b=a;fun(&b,a);printf(%c,%cn,a,b);A)B,a,B,a B)a,B,a,B C)A,b,A,b D)b,B,A,b21、下列程序运行后的输出结果是()。int f(int n)if(n=1)return 1;else return f(n-1)+1;main()int i,j=0;for(i=1;i3;i+)j+=f(i);printf(%dn,j);A)4 B)3 C)2 D)122、下列程序执行后的输出结果是()。char st=hello,friend!;void func1(int i)printf(%c,sti);if(i3)i+=2;func2(i);void func2(int i)printf(%c,sti);if(i3)i+=2;func1(i);main()6 int i=0;func1(i);printf(n);A)hello B)hel C)hlo D)hlm23、在位运算中,操作数每左移 1 位,其结果相当于()。A)操作数乘以 2 B)操作数除以 2 C)操作数除以 16 D)操作数乘以 1624、下列数组定义语句中合法的是()。A)int a=string;B)int a5=0,1,2,3,4,5;C)char a=string;D)char a=0,1,2,3,4,5;25、若有以下的定义:int a=1,2,3,4,5,6,7,8,9,10,*p=a则值为 3 的表达式是()。A)p+=2,*(p+)B)p+=2,*+p C)p+=3,*p+D)p+=2,+*p 26、下列语句或语句组中,能正确进行字符串赋值的是()。A)char*sp;*sp=right!;B)char s10;s=right!;C)char s10;*s=right!;D)char*sp=right!;27、假定所有变量均已正确说明,下列是程序段运行后 x 的值是()。a=b=c=0;x=35;if(!a)x-;else if(b);if(c)x=3;else x=4;A)34 B)4 C)35 D)3728、下列程序运行后的输出结果是()。main()int p8=11,12,13,14,15,16,17,18,i=0,j=0;while(i+y?x:y;int f2(int x,int y)return xy?y:x;main()int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d);f=f1(f2(a,b),f2(c,d);g=a+b+c+d-e-f;printf(%d,%d,%dn,e,f,g);A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,730、下列函数的功能是()。fun(char*a,char*b)8 while(*a!=0)&(*b!=0)&(*a=*b)a+;b+;return(*a-*b);A)计算 a 和 b 所指字符串的长度之差 B)将 b 所指字符串连接到 a 所指字符串中 C)将 b 所指字符串连接到 a 所指字符串后面 D)比较 a 和 b 所指字符串的大小31、下列程序运行后的输出结果是()。point(char*p)p+=3;main()char b4=a,b,c,d,*p=b;point(p);printf(%cn,*p);A)a B)b C)c D)d32、下列程序运行后的输出结果是()。void ss(char*s,char t)while(*s)if(*s=t)*s=t-a+A;s+;main()char str1100=abcddfefdbd,c=d;ss(str1,c);printf(%sn,str1);A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd33、C 语言中函数返回值的类型是由()决定的。A)return 语句中的表达式类型 B)调用该函数的主调函数类型C)调用函数时临时指定 D)定义函数时所指定的函数类型934、设有定义:struct skint a;float b;data,*p;若有 p=data;,则对 data 中的 a 域的正确引用是()。A)(*p).data.a B)(*p).a C)p-data.a D)p.data.a 35、若有下列说明和定义,则以下叙述中错误的是()。union dt int a;char b;double c;data;A)data 的每个成员起始地址都相同B)变量 data 所占的内存字节数与成员 c 所占字节数相等C)程序段:data.a=5;printf(%fn,data.c);输出结果为 5.000000 D)data 可以作为函数的实参36、以下叙述中错误的是()。A)二进制文件打开后可以先读文件的末尾,而顺序文件不可以 B)在程序结束时,应当用 fclose 函数关闭已打开的文件 C)利用 fread 函数从二进制文件中读数据,可以用数组名给数组中所有元素读入数据 D)不可以用 FILE 定义指向二进制文件的文件指针37、有下列程序#include main(int argc,char*argv)int i,len=0;for(i=1;iargc;i+)len+=strlen(argvi);printf(%dn,len);程序编译连接后生成的可执行文件是 ex1.exe,若运行时输入带参数的命令行是:ex1 abcd efg 10 10则运行的结果是()。A)22 B)17 C)12 D)938、若用数组名作为函数调用时的实参,则实际上传递给形参的是()。A)数组首地址 B)数组的第一个元素值C)数组中全部元素的值 D)数组元素的个数39、有一函数:int f(int a)auto int b=0;static int c=3;b=b+1;c=c+1;return(a+b+c);如果有 int i,j;则执行两次调用:i=f(2);j=f(2)后,i,j 值为()。A)i=7,j=7 B)i=7,j=8C)i=8,j=7 D)i=8,j=840、有下列函数则,调用 f(“1234”)的返回结果是()。int f(char*s)int k=0;while(*s)k=k*10+*s+-0;11 return(k);A)“1234”B)1234 C)“4321”D)4321二、二、填空题(每空填空题(每空 2 2 分,共分,共 4040 分)分)1、判断一个字符是否是字母或数字的逻辑表达式是:【1】。2、执行语句:for(i=1;i+10&x50)x+;if(x/3)x+;break;else continue;printf(%dn,x);7、下面程序的功能是输出以下形式的金字塔图案是:*main()int i,j;for(i=1;i=4;i+)for(j=1;j=4-i;j+)printf(“);for(j=1;j=【8】_;j+)printf(“*”);printf(“n”);8、下面程序的功能是:将 n 行 n 列的矩阵 A 转置为 A,例如:13#define N 4main()int aN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;int i,j,t;for(i=0;iN;i+)for(j=0;【9】;j+)t=aij;【10】;aji=t;9、下面程序的功能是用公式求 的近似值,直到最后一项的小2222213121116n于 10-6为止。请填空。#include#include main()当 A1 2 3 45 6 7 89 10 11 1213 14 15 16则A1 5 9 132 6 10 143 7 11 154 8 12 1614long i=1;【11】pi=0;while(i*i=1e+6)pi=【12】;i+;pi=sqrt(6.0*pi);printf(“pi=%10.6fn”,pi);10、以下程序的功能是调用函数 fun 计算:m=1-2+3-4+9-10,并输出结果。请填空。int fun(int n)int m=0,f=1,i;for(i=1;i=n;i+)m+=i*f;f=【13】;return m;main()printf(m=%dn,【14】);11、以下程序运行后的输出结果是 【15】。main()int i,n=0,0,0,0,0;for(i=1;ib?a:b);