1试卷共5个大题•单项选择题题(每题1分,共20分)•填空题(20分,每题2分)•阅读程序(20分,每题4分)•完成程序题(20分,每空2分)•程序编制题:(20分,每题10分)221、下列语句中符合C语言语法的赋值语句是A)a=7+b+c=a+7;B)a=7+b++=a+7;C)a=7+b,b++,a+7D)a=7+b,c=a+7;√2、在C语言中,要求运算数必须是整型的运算符是A)%B)/C)D)!√练习3、已知字母A的ASCⅡ码为十进制的65,下面程序的输出是main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf(%d,%c\n,ch1,ch2);}A)67,DB)B,CC)C,DD)不确定的值√34、下面程序的输出是main(){intx=10,y=3;printf(%d\n,y=x/y);}A)0B)1C)3D)不确定的值5、若执行下面的程序时从键盘上输入13和14,则输出是main(){inta,b;scanf(“%d%d”,&a,&b);if(ab)printf(“%d\n”,a++);elseprintf(%d\n,b--);}A)12B)13C)14D)156、下面程序的输出是main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf(%d\n,*(p+2));}A)3B)4C)1D)2√√√47、下面程序的输出是main(){enumteam{my,your=4,his,her=his+10};printf(%d%d%d%d\n,my,your,his,her);}A)0123B)04010C)04515D)145158、下面程序的输出是main(){inta=-1,b=4,k;k=(a++=0)&&(!(b--=0));printf(%d%d%d%\n,k,a,b);}A)003B)012C)103D)1129、下列函数的功能是intfun1(char*x){char*y=x;while(*y++);return(y-x-1);}A)求字符串的长度B)比较两个字符串的大小C)将字符串X复制到字符串YD)将字符串X连接到字符串Y后面√√√510.若fp是指向某文件的指针,且已读到该文件的末尾,则feof(fp)的返回是A)EOFB)-1C)非零值D)NULL11.根据下面的定义,能印出字母M的语句是structperson{charname[9];intage;};structpersonclass[10]={“john”,17,“paul”,19,“mary”,18,“adam”,16};A)printf(“%c\n”,class[3].name);B)printf(“%c\n”,class[3].name[1]);C)printf(“%c\n”,class[2].name[1]);D)printf(“%c\n”,clsaa[2].name[0]);12.下面程序的输出是main(){inty=9;for(;y0;y--){if(y%3==0){printf(%d,--y);continue;}}}A)741B)852C)963D)875421√√√613.下面程序的输出是main(){charx=040;printf(%d\n,x=x1):}A)100B)160C)120D)6414.下面程序的输出是main(){structcmplx{intx;infy;}cnum[2]={1,3,2,7};printf(%d\n,cnum[0].y/cnum[0].x*cnum[1].x);}A)0B)1C)3D)615.下面程序的输出是fun3(intx){staticinta=3;a+=x;return(a);}main(){intk=2,m=1,n;n=fun3(k);n=fun3(m);printf(%d\n,n);}A)3B)4C)6D)9√√√716.下面程序的输出是main(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int(*P)[4]=a,i,j,k=0;for(i=0;i3;i++)for(j=0;j2;j++)k=k+*(*(p+i)+j);printf(%d\n,k);}A)60B)68C)99D)10817.该程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是:main(){inta[10]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf(%x\n,p);printf(%x\n,p+9);}A)203B)204C)1a4D)1a6√√818.以下说法中正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分19.执行下面的程序后,a的值为main(){inta,b;for(a=1,b=1;a=100;a++){if(b=20)break;if(b%3==1){b+=3;continue;}b-=5;}}A)7B)8C)9D)10√√920.以下程序段的输出结果是intx=3;do{printf(%3d,x-=2);}while(!(--x));A)1B)30C)1-2D)死循环21.设有以下定义:inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*ptr)[3]=a,*p=a;则下列能够正确表示数组元素a[1][2]的表达式是A)*((*ptr+1)[2])B)*(*(p+5))C)(*ptr+1)+2D)*(*(ptr+1)+2)22.下列程序的输出结果是main(){char*p1,*p2,str[50]=xyz;p1=abcd;p2=ABCD;strcpy(str+2,strcat(p1+2,p2+1);printf(%s,str);}A)xyabcABB)abcABzC)ABabczD)xycdBCD√√√1023.执行以下程序后,y的值是main(){inta[]={2,4,6,8,10},y=1,x,*p;p=&a[1];for(x=0;x3;x++)y+=*(p+x);printf(%d\n,y);}A)17B)18C)19D)2024.以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空.main(){floatx,amax,amin;scanf(%f,&x);amax=x;amin=x;while(){if(xamax)amax=x;if()amin=x;scanf(%f,&x);}printf(\namax=%f\namin=%f\n,amax,amin);}√x=0.0xamin1125.不能把字符串:Hello!赋给数组b的语句是A)charb[10]={‘H’,‘e’,‘l’,‘l’,‘o’,‘!’};B)charb[10];b=“Hello!”;C)charb[10];strcpy(b,“Hello!”);D)charb[10]=“Hello!”;26.若有以下说明:inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc=‘a’,d,g;则数值为4的表达式是A)a[g-c]B)a[4]C)a[‘d’-‘c’]D)a[‘d’-c]27.若有以下说明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式是A)*p+6B)*(p+6)C)*p+=5D)p+528.若有以下说明:intw[3][4]o={{0,1},{2,4},{5,8}};int(*p)[4]=w;则数值为4的表达式是A)*w[1]+1B)p++,*(p+1)C)w[2][2]D)p[1][1]√√√√1229.若程序中有下面的说明和定义structabc{intx;chary;}structabcs1,s2;则会发生的情况是A)编译出错B)程序将顺利编译、连接、执行C)能顺利通过编译、连接、但不能执行D)能顺利通过编译`但连接出错30.下面程序输出数组中的最大值,由s指针指向该元素.则在if语句中的判断表达式应该是main(){inta[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;for(p=a,s=a;p-a10;p++)if()s=p;printf(“Themax:%d”,*s):}31.若想通过以下输入语句给a赋1,给b赋2,则输入数据的形式应该是:inta,b;scanf(a=%b,b=%d,&a,&b);√*p*sa=1,b=21332.若有定义和语句:chars[10];s=“abcd”;printf(“%s\n”,s);则结果是:(以下u代表空格)A)输出abcdB)输出aC)输出abcduuuuuD)编译不通过33.若有以下定义和语句:intu=010,v=0x10,w=10;printf(“%d,%d,%d\n,u,v,w);则输出结果是:A)8,16,10B)10,10,10C)8,8,10D)8,10,1034.若有以下定义和语句charc1=‘b’,c2=‘e’;printf(“%d,%c\n”,c2-c1,c2-‘a’+‘A’);则输出结果是:A)2,MB)3,EC)2,ED)输出结果不确定35.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是for(i=5;i;i--)for(j=0;j4;j++){...}A)20B)25C)24D)30√√√√1436.若有以下定义和语句:char*s1=“12345”,*s2=“1234”;printf(“%d\n”,strlen(strcpy(s1,s2)));则输出结果是:A)4B)5C)9D)1037.若有以下定义和语句:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是A)*pB)a[10]C)*aD)a[p-a]38.下面程序的输出是main(){char*s=121;intk=0,a=0,b=0;do{k++;if(k%2==0){a=a+s[k]-'0';continue;}b=b+s[k]-'0';a=a+s[k]-'0';}while(s[k+1]);printf(k=%da=%db=%d\n,k,a,b);}A)k=3a=2b=3B)k=3a=3b=2C)k=2a=3b=2D)k=2a=2b=3√√√1539.下面程序的输出是main(){unsigneda=32768;printf(“a=%d\n”,a);}A)a=32768B)a=-32767C)a=-32768D)a=-140.若有以下定义:floatx;inta,b;则正确的switch语句是A)switch(x)B)switch(x){case1.0:printf(*\n);{case1,2:printf(*\n);case2.0:printf(**\n);case3:printf(**\n);}}C)switch(a+b)D)switch(a+b);{case1:printf(\n);{case1:printf(.*\n);case1+2:printf(**\n);case2:printf(**\n);}}√√1641.以下程序输出的结果是main(){charw[][10]={ABCD,EFGH,IJKL,MNOP},K;for(k=1;k3;k++)printf(%s\n,&w[k][k]);}A)ABCDB)ABCDC)FGHD)FGHFGHEFGJKKLKLIJOM42.若有以下的定义:inta[]={1,2,3,4,5,6,7,88,9,10),*p=a;