C语言程序设计 笔试试卷(二).docx
C语言程序设计 笔试试卷(二)考试时间:120分钟注意:所有答案必须书写在答卷纸上,否则不给分!一、 单项选择题(每个选项1.5分,共60分)1、一个C程序总是从( )开始执行。A)第一个子函数 B)最后一个函数 C)第一个函数 D)主函数2、C语言的基本数据类型包括( )。A)整型,实型,逻辑型 B)整型,实型,字符型C)整型,字符型,逻辑型 D)整型,实型,逻辑型,字符型3、C语言中的函数( )。A)可以嵌套定义 B)不可以嵌套调用C)可以嵌套调用,但不可以递归调用 D)嵌套调用和递归调用均可4、以下( )组中的标识符都是合法的C语言用户标识符。A)a_10 B)CHAR C)int D)_signed3ab a#b day INT5、以下非法的语句是( )。 A) n=(i=2,+i); B) j+; C) +(i+1);D) x=j>0;6、设有定义:long x=-123456L;,则以下能够正确输出变量x值的语句是( )。 A) printf("x=%dn",x); B) printf("x=%ldn",x); C) printf("x=%8dLn",x); D) printf("x=%LDn",x);7、下列程序的运行结果是( )。A) a=%2,b=%5 B) a=2,b=5C) a=d, b=d D) a=%d,b=%d#include <stdio.h>main() int a=2,c=5;printf("a=%d,b=%dn",a,c); 8、语句 if (3/4 > 1/2) a=1; else a=0; 运行后, a的值是( )。A) 1 B) 0 C) 与机器有关 D) 语法有错9、已知字符 b 的ASCII码为 98 ,语句printf ("%d,%c", b,b+1 ) ;的输出为( )。A)98,b B)语句不合法 C)98,99 D) 98,c10、若已定义x和y为double类型,则表达式: x=1,y=x+3/2的值是( )。A)1 B)2 C)2.0 D)2.5 11、下列条件语句中,功能与其他语句不同的是( )。 A) if(a) printf("%dn",x); else printf("%dn",y);B) if(a=0) printf("%dn",y); else printf("%dn",x);C) if (a!=0) printf("%dn",x); else printf("%dn",y);D) if(a=0) printf("%dn",x); else printf("%dn",y);12、下列程序执行后的输出结果是( )。main() int k=2,i=2,m; m=(k+=i*=k); printf("%d,%dn",m,i); A) 8,6 B) 8,3 C) 6,4 D) 7,413、若char c10="%da101"则strlen(c)的值为( )。A)9 B)10 C)5 D)414、下列程序段执行后s值为( )。int i=5, s=0;do if (i%2) continue; else s+=i; while (-i);A) 15 B) 9 C) 6 D) 以上均不是15、语句if (a>b) k=0; else k=1; (int a, b, k) 等价于( )。A) k=(a>b)?1:0; B) k=a>b; C) k=a<=b; D) 以上均不是16、表示图中坐标轴上阴影部分的正确表达式是( )。X a b cA)(x<=a)&&(x>=b)&&(x<=c)B)(x<=a)|(b<=x<=c)C)(x<=a)|(x>=b)&&(x<=c)D)(x<=a)&&(b<=x<=c)17、设有定义语句int x6=2,4,6,8,5,7,*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是( )。A) for(i=0;i<6;i+) printf("%2d",*(p+); B) for(i=0;i<6;i+) printf("%2d",*(p+i);C) for(i=0;i<6;i+) printf("%2d",*p+);D) for(i=0;i<6;i+) printf("%2d",(*p)+); 18、已有定义:int i,a10,*p;,则合法的赋值语句是( )。A) p=100; B) p=a5; C) p=a2+2; D) p=a+2;19、下列程序运行后的输出结果是( )。main() int a=1,b; for(b=1;b<=10;b+) if(a>=8)break; if(a%2=1)a+=5;continue; a-=3; printf("%dn",b); A) 3 B) 4 C)5 D) 620、下列程序运行后的输出结果是( )。 main() int i; for(i=0;i<3;i+)switch(i)case 0:printf("%d",i); case 2:printf("%d",i); default:printf("%d",i); A) 022111 B) 021021 C) 000122 D) 012 21、若用数组名作为函数调用时的实参,则实际上传递给形参的是( )。A)数组的首地址 B)数组的第一个元素值C)数组中全部元素的值 D)数组元素的个数22、下列程序运行后的输出结果是( )。 main() int a=3,b=4,c=5,d=2; if(a>b) if(b>c) printf("%d",d+ +1); else printf("%d",+d +1);printf("%dn",d); A) 2 B) 3 C) 43 D) 44 23、在位运算中,操作数每右移一位,其结果相当于( )。A)操作数乘以2 B)操作数除以2 C)操作数除以16 D).操作数乘以1624、以下语句或语句组中,能正确进行字符串赋值的是( )。A) char *sp;*sp="right!" B) char s10;s="right!" C) char s10;*s="right!" D) char *sp="right!"25、对于条件表达式(M)?(a+):(a-),其中的表达式M等价于( )。A)M=0 B)M=1 C)M!=0 D.)M!=1 26、以下选项中非法的表达式是( )。A)0<=x<100 B)i=j=0 C)(char)(65+3) D)x+1=x+127、下列程序运行后的输出结果是( )。main() int k=4,n=0;for( ; n<k ; ) n+;if(n%3!=0) continue;k-; printf("%d,%dn",k,n);A)1,1 B)2,2 C)3,3 D)4,428、下列程序运行后的输出结果是 ( )。 int f(int a) return a%2; main() int s8=1,3,5,2,4,6,i,d=0; for (i=0;f(s);i+) d+=s; printf("%dn",d); A) 9 B) 11 C) 19 D) 21 29、下列程序运行后的输出结果是( )。 int f(int n) if (n=1) return 1; else return f(n-1)+1; main() int i,j=0; for(i=1;i<3;i+) j+=f(i); printf("%dn",j); A) 4 B) 3 C) 2 D) 130、以下不能正确进行字符串赋初值的语句为( )。A) charstr5= "good! "B) charstr="good! "C) char*str="good! "D) charstr5='g','o','o','d'31、下列程序运行后的输出结果是( )。int a=3; main() int s=0; int a=5; s+=a+; s+=a+; printf("%dn",s); A) 8 B) 10 C) 7 D) 1132、以下关于C语言程序的描述中,错误的是( )。 A) 不同函数中的变量可以同名B) 全局变量和局部变量可以同名C) 形式参数是局部变量D) 在main()函数中定义的变量是全局变量33、下列程序运行后的输出结果是( )。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) Abcddfefdbd34、有以下程序:#include <string.h> main(int argc,char *argv) int i,len=0; for(i=1;i<argc;i+) len+=strlen(argvi); printf("%dn",len); 程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:ex1 abcd efg 10<回车> 则运行的结果是( )。A) 22 B) 17 C) 12 D) 935、有以下说明和定义语句struct student int age; char num8;struct student stu3=20,"200401",21,"200402",109,"200403" struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是 ( )。 A) (p+)->num B)p->num C)(*p).num D)stu3.age36、若有以下说明和语句, 已知int和double类型分别占2和8个字节,则sizeof(st)的值为( )。struct st char a10;union int i;double y;A) 18 B) 20 C) 12 D) 以上均不是37、有一函数: 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 = 838、以下程序求1至10之间奇数的和,请选择正确选项填空完成程序。 main() int a=0,i; for(i=1;i<=10;i+) ( ) ; a+=i;printf(“%dn”,a);A)if(i%2!=0) continue B)if(i%2=0) continueC)if(i%2!=0) break D)if(i%2!=0) break39、设变量定义如下,则对其中的结构分量num正确的引用是( )。 struct studentint num; char name20; float score; stud10; A)stud1.num = 10; B)student.stud.num = 10; C)struct.stud.num = 10; D)struct.student.num = 10;40、在C程序中,可把整型数以二进制形式存放到文件中的函数是( )。A) fprintf函数 B) fread函数 C) fwrite函数 D) fputc函数二、 填空题(每空2分,共40分)1、执行语句for(i=1;i+<4;);后变量i的值是 【1】 。 2、对于char c; 若已知其值为小写字母, 将其转换为相应大写字母的表达式为 【2】 。3执行完下列语句段后, i,j值分别为: 【3】 。int i, j;j=10*(i=5);i+=j*=i+2;4、以下程序运行后的输出结果是 【4】 。main() int x=10,y=20,t=0; if(x=y)t=x;x=y;y=t; printf("%d,%dn",x,y); 3、执行以下程序后,输出'#'号的个数是 【5】 。#include <stdio.h>main() int i,j;for(i=1; i<5; i+)for(j=2; j<=i; j+) putchar('#');4、以下程序运行后的输出结果是 【6】 。fun(int a) int b=0;static int c=3; b+;c+; return(a+b+c); main() int i,a=5; for(i=0;i<3;i+)printf("%d %d ",i,fun(a); printf("n"); 5、以下程序的输出结果是 【7】 。 func(int a, int b) int c; c=a+b; return c;main() int x=6,y=7,z=8,r; r=func(x-,y+,x+y),z-); printf(“z=%d,r=%dn”,z,r); 6、以下程序运行后的输出结果是 【8】 。main() int a=1,b=3,c=5;if (c=a+b) printf("yesn");else printf("non");7、 以下程序运行后的输出结果是 【9】 。 void fun(int x,int y) x=x+y;y=x-y;x=x-y; printf("%d,%d,",x,y); main() int x=2,y=3; fun(x,y); printf("%d,%dn",x,y); 8、下面程序的运行结果是: 【10】 。void swap(int *a,int *b) int *t; t=a;a=b;b=t; main() int x=3,y=5,*p=&x,*q=&y; swap(p,q); printf("%d %dn",*p,*q); 9、请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。double max( 【11】 ); main() double x,y;scanf("%lf%lf",&x,&y);printf("%lfn",max(x,y);double max(double a,double b) return(a>b ? a:b); 10、以下程序的功能是计算s=1+,请填空。main() int n,i;double s=0.0,fac=1.0; scanf("%d",&n);for(i=1;i<=n;i+)fac=fac 【12】 s=s+fac; return s;11、以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。main() int i,a20,sum,count;sum=count=0;for(i=0;i<20;i+) scanf("%d", 【13】 ); for(i=0;i<20;i+) if(ai>0) count+;sum+= 【14】 ; printf("sum=%d,count=%dn",sum,count);13、通过函数求f(x)的累加和,其中f(x)x21int F( int x) return 【15】 ; int SunFun(int n)int x,s=0;for(x=0;x<=n;x+) s+=F( 【16】 ); return s;main() printf("The sum=%dn",SunFun(10);13、以下程序将整型数组a中的元素逆序输出。 void fun(int a,int n) 【17】 i,j,t; for(i=0,j=n-1;i<j;i+,j-) 【18】 =ai; ai=aj;aj=t;main() int i,n,a=1,3,5,7,9,2,4,6,8,10; n= 【19】 ; fun( 【20】 ,n); for(i=0;i<n;i+) printf(“%d”,ai); printf(“n”);15