一、选择题1.下列C语言标识符中,不合法的是(B)A)_1B)a-bC)a_bD)AaBb2.下列选项中,哪个不是C语言关键字(B)A)whileB)integerC)breakD)static3.下列选项中,能用作数据常量的是(D)A)o115B)0118C)1.5e1.5D)115L4.关于转义字符,下列选项中错误的是(D)A)'\\'B)'\''C)'\n'D)'\80'5.设有定义:inta=3,b=2,c=1;,下列选项中错误的赋值表达式是(A)A)a=(b=4)=3B)a=b=c+1C)a=(b=4)+cD)a=1+(b=c=4)6.设有定义:inta,b,y;,则执行y=(a=4,b=5,a+b);后,变量y的值是(C)A)4B)5C)9D)不确定7.设有定义intx=2;,下列表达式中,值不为6的是(D)A)x*=x+1B)x++,2*xC)x*=(1+x)D)2*x,x+=28.若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是(A)A)1B)0C)2D)不能确定9.设有定义charw;intx;floaty;doublez;,则表达式w*x+z-y值的数据类型是(D)A)floatB)charC)intD)double10.下列关于switch语句的叙述中正确的是(C)A)switch后面的表达式可以是任意值B)switch语句中必须包括default语句C)通常break语句与case子句配合使用D)break语句只能用于switch语句中11.下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求的是(B)A)if(s1==s2)ST;B)if(strcmp(s1,s2)==0)ST;C)if(strcpy(s1,s2)==1)ST;D)if(s1-s2==0)ST;12.若有语句inta,b;scanf(“%d;%d”,&a,&b);,则使得a=3,b=5的正确输入数据是(D)A)35B)3,5C)35D)3;513.设有语句:inti=5,n=0;while(i--)n++;,则运行后变量n的值是(C)A)0B)3C)5D)614.执行语句for(i=10;i0;i-=2);后变量i的值是(B)A)-2B)0C)1D)215.若有定义inta[3][4];则对数组元素引用正确的是(B)A)a[1][4]B)a[2][0]C)a(2)(1)D)a[1,3]16.下列选项中错误的是(A)A)inta[2][]={1,2,3,4}B)inta[][3]={1,2,3,4}C)inta[2][3]={1,2,3,4}D)inta[][3]={{1,2},{3,4}}17.若函数首部定义为intfunc(doublex[10],intn),则下列函数声明中错误的是(A)A)intfunc(double,int);B)intfunc(doublex[],intn);C)intfunc(doublea[10],intb);D)intfunc(double*x,intn);18.设有inta[]={1,3,5,7,9},*p=a;,则下列选项中值为7的表达式是(A)A)*(p+3)B)p+3C)*(p+4)D)p+419.设有定义语句:structstu{inta;doubleb;}s1;,则下列说法错误的是(A)A)s1是用户定义的结构体类型名B)structstu是用户定义的结构体类型C)a和b都是结构体成员D)struct是定义结构体类型的关键字20.若要打开当前文件夹中的文本文件abc.txt追加写入新内容,应使用(D)打开文件A)fopen(abc.txt,r)B)fopen(abc.txt,w+)C)fopen(abc.txt,w)D)fopen(abc.txt,a)21.结构化程序设计所规定的三种基本控制结构是(C)A)输入、处理、输出B)树形、网形、环形C)顺序、选择、循环D)主程序、子程序、函数22.要把高级语言编写的源程序转换为目标程序,需要使用(D)A)编辑程序B)驱动程序C)诊断程序D)编译程序23.英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为(D)A)50B)66C)52D)6824.若有定义:inta=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为(B)A)1.4B)1C)2.0D)225.若变量a是int类型,并执行了语句:a='A'+1.6;,则正确的叙述是(D)A)a的值是字符CB)a的值是浮点型C)不允许字符型和浮点型相加D)a的值是字符'A'的ASCII值加上1。26.以下选项中不属于C语言的类型的是(D)A)signedshortintB)unsignedlongintC)unsignedintD)longshort27.若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是(A)A)scanf(%d%d%d,&a,&b,d);B)scanf(%d%d%d,&a,&b,&d);C)scanf(%d%d%d,a,b,d);D)scanf(%d%d%d,a,b,*d);28.不合法的main函数命令行参数表示形式是(C)A)main(inta,char*c[])B)main(intarc,char**arv)C)main(intargc,char*argv)D)main(intargv,char*argc[])29.若定义:inta=511,*b=&a;,则printf(%d\n,*b);的输出结果为(D)A)无确定值B)a的地址C)512D)51130.在C语言中,形参的缺省存储类是(A)A)autoB)registerC)staticD)extern31.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是(A)A)p=2*(int*)malloc(sizeof(int));B)p=(int*)malloc(2*sizeof(int));C)p=(int*)malloc(2*4);D)p=(int*)calloc(2,sizeof(int));32.若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是(B)A)fopen(A:\user\abc.txt,r)B)fopen(A:\\user\\abc.txt,r+)C)fopen(A:\user\abc.txt,rb)D)fopen(A:\\user\\abc.txt,w)33.以下不能正确进行字符串赋初值的语句是(A)A)charstr[5]=good!;B)charstr[]=good!;C)char*str=good!;D)charstr[5]={‘g',‘o',‘o',‘d'}34.在说明语句:int*f();中,标识符f代表的是(D)A)一个用于指向整型数据的指针变量B)一个用于指向一维数组的行指针C)一个用于指向函数的指针变量D)一个返回值为指针型的函数名35.以下叙述中正确的是(A)A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C)main()函数必须放在其它函数之前D)所有被调用的函数一定要在调用之前进行定义36.以下选项中合法的实型常数是(C)A)5E2.0B)E-3C).2E0D)1.3E37.以下选项中合法的用户标识符是(B)A)longB)_2TestC)3DmaxD)A.dat(4)已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是(A)A)字符AB)字符aC)字符eD)非法的常量38.以下非法的赋值语句是(C)A)n=(i=2,++i);B)j++;C)++(i+1);D)x=j0;39.设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)A)6.500000B)6C)5.500000D)6.00000040.已知i、j、k为int型变量,若从键盘输入:1,2,3回车,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是(C)A)scanf(“%2d%2d%2d”,&i,&j,&k);B)scanf(“%d%d%d”,&i,&j,&k);C)scanf(“%d,%d,%d”,&i,&j,&k);D)scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);41.已有定义:intx=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是(D)A)6B)0C)2D)142.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是(D)A)必须是逻辑值B)必须是整数值C)必须是正数D)可以是任意合法的数值43.以下叙述正确的是(B)A)可以把define和if定义为用户标识符B)可以把define定义为用户标识符,但不能把if定义为用户标识符C)可以把if定义为用户标识符,但不能把define定义为用户标识符D)define和if都不能定义为用户标识符44.有以下程序#includestring.hmain(intargc,char*argv[]){inti,len=0;for(i=1;iargc;i++)len+=strlen(argv);printf(“%d\n”,len);}程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:ex1abcdefg10回车则运行的结果是:A)22B)17C)12D)9二、填空题1.运行一个C程序的基本步骤是:编辑、编译、连接、运行。2.已知字母A的ASCII值为65。则语句printf(%d,'D');的输出结果是68。3.若有定义inti=6,j;,则执行j=i++;后,j的值是6。4.如有定义inta=2;,则执行语句a+=a-=a*a后,变量a的值是-4。5.若有定义inta=2,b=7则表达式(float)b/a的结果是3.5。6.表示条件“x能同时被3和5整除”的逻辑表达式是x%3==0&&x%5==0。7.若下列代码运行后输出“21”,则代码问号处应填写语句:break。for(s=0,n=1;n=10;n++){s+=n;if(s20)?;}printf(%d,s);8.若有代码chars[10]=”abcd\0ef”;,则printf(%s,s);的输出结果是abcd。9.设有#defineF(x,y)x*y,则F(1+3,3+2)的值是12。10.设有定义uniondata{charc;intx;doublef;}a;,则变量a所占空间是8字节。三、阅读理解题1.下列程序的运行结果是(ga)。#includestdio.hmain(){chara[]=program,*p1=a;charb[]=language,*p2=b;inti;for(i=0;i8;i++)if(*(p1+i)==*(p2+i))printf(%c,*(p1+i));}2.下列程序的运行结果是(s=8765)#includestdio.hmain(){inti=1,j=8,s;for(s=0;ij;i++,j--)s=s*10+j;printf(s=%d\n,s);}3.下列程序的运行结果是(s1=18,s2=10)#includestdio.hmain(){inta[][3]={9,7,5,3,1,2,4,6,8};inti,j,s1=0,s2=0;for(i=0;i3;i++)for(j=0;j3;j++){if(i==j)s1+=a[i][j];if(i+j==2)s2+=a[i][j];}printf(s1=%d,s2=%d\n,s1,s2);}4.下列程序的运行结果是(45)。#includestdio.hintfun(intn){if(n==1)return5;elsereturn10+fun(n-1);}main(){intn