一、判断下列问题描述及语句正确与否,正确的打“√”。1.C的关键字都是小写的。(√)2、C语言规定:在一个源程序中,main函数的位置必须在最开始。(×)3.一个复合语句是作为一个语句处理的且在逻辑上相互关联的一组语句。(√)4、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是8。(√)5、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为静态存储。(×)6.#definePI=3.14159(×)7、C语言中规定函数的返回值的类型是由return语句中的表达式类型所决定。(×)8.局部变量在进入代码块时生成,退出代码块时消失。(√)9、在C语言中对文件操作必须先关闭当前文件,然后再打开一个新文件。(×)10.inta=123456;(×)11、C语言程序的基本单位是语句。(×)12.函数可以嵌套定义,也可嵌套调用。(×)13.switch与if不同,switch只能测试是否相等,而if中还能测试关系和逻辑表达式。(√)14.break和continue语句都可用于选择结构和循环结构中。(×)二、单项选择题:1、假设已定义chara[10]和char*p=a,下面的赋值语句中,正确的是:)A)a[10]=”TurboC”;B)a=”TurboC”;C)*p=”TurboC”;D)p=”TurboC”;2.C语言中基本数据类型包括(B)。A.整型、实型、逻辑型B.整型、实型、字符型C.整型、字符型、逻辑型D.整型、实型、逻辑型、实型3、下面关于运算符优先顺序的描述中正确的是:(C)A)关系运算符算术运算符赋值运算符逻辑与运算符B)逻辑运算符关系运算符算术运算符赋值运算符C)赋值运算符逻辑与运算符关系运算符算术运算符D)算术运算符关系运算符赋值运算符逻辑与运算符4.已知inti,a;执行语句“i=(a=2*3,a*5),a+6;”后,变量a的值是(A)。A.6B.12C.30D.365、以下正确的描述是。(B)A)continue语句的作用是结束整个循环的执行B)只能在循环体内和switch语句体内使用break语句C)在循环体内使用break语句或continue语句的作用相同D)从多层循环嵌套中退出时,只能使用goto语句6.C语言中规定函数的返回值的类型是由(D)。A.return语句中的表达式类型所决定B.调用该函数时的主调用函数类型所决定C.调用该函数时系统临时决定D.在定义该函数时所指定的函数类型所决定7、用8位无符号二进制数能表示的最大十进制数为(C)A)127B)128C)255D)2568.不能进行++和--运算的数据类型是(B)。A.指针B.doubleC.intD.long9、下列叙述中正确的是:(D)A)C语言中既有逻辑类型也有集合类型B)C语言中没有逻辑类型但有集合类型C)C语言中有逻辑类型但没有集合类型D)C语言中既没有逻辑类型也没有集合类型10.为了判断两个字符串s1和s2是否相等,应当使用(D)。A.if(s1==s2)B.if(s1=s2)C.if(strcpy(s1,s2))Dif(strcmp(s1,s2))11、以下对C语言函数的有关描述中,正确的是:(A)A)调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B)函数既可以嵌套定义又可以递归调用C)函数必须有返回值,否则不能使用函数D)程序中有调用关系的所有函数必须放在同一个源程序文件中12.若有以下说明和语句:structstu{intno;char*name;}student,*p=&student;则以下引用方法不正确的是(D)。A.student.noB.(*p).noC.p-noD.student-no13、在C语言中,不正确的int类型的常数是:(A)A)32768B)0C)037D)0xaf14.以下不是死循环的语句为(D)。A.for(;;x+=k);B.while(1){x++};C.for(k=10;;k――)sum+=k;D.for(;(c=getchar())!=’\n’;)printf(“%c”,c);15、以下叙述中不正确的是:(D)A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在一个函数内的复合语句中定义的变量在本函数范围内有效16.以下错误的描述是(D)。A.不同的函数中可以使用相同的变量名B.形式参数是局部变量C.一个函数内部定义的变量只能在本函数范围内有效D.在一个函数内部的复合语句中定义的变量可以在本函数范围内有效17、以下说法中正确的是:(D)A)#define和printf都是C语句B)#define是C语句,而printf不是C)printf是C语句,但#define不是D)#define和printf都不是C语句18.若用数组名作为函数调用时实参,则实际上传递给形参的是(A)。.数组首地址B.数组的第一个元素值C.数组中全部元素的值D.数组元素的个数19、若有以下定义和语句:doubler=99,*p=&r;*p=r;则以下正确的叙述是:(B)A)以下两处的*p含义相同,都说明给指针变量p赋值B)在“doubler=99,*p=&r;”中,把r的地址赋值给了p所指的存储单元C)语句“*p=r;”把变量r的地址值赋给指针变量pD)语句“*p=r;”取变量r的值放回r中20.已知inta,*p=&a;则为了得到变量a的值,下列错误的表达式是(A)。A.*&pB.*pC.p[0]D.*&a三、填空题:1、下面程序的功能是:输入一行字符,统计其中有多少个单词,单词之间用空格分开。请填空完成。#includestdio.hmain(){charstr[81];intI,num=0,word=0;charc;gats(str);for(I=0;c=str[I]!=‘\0’;I++)if(c==‘’)word=0;elseifword==0{word=1;num++;}printf(“Thereare%dwordinline.\n”,num);}2.已知int*p,a;则语句p=&a;中的运算符&的含义是将变量a的地址存入指针变量p中。3、下面程序的功能是:用选择排序法对数组中10个数据按由小到大排序。请填空完成。voidsort(inta[],intn){intI,j,k,t;for(I=0;In-1;I++){k=I;for(j=I+1;jn;j++)if(a[j]a[k])k=j;if(k!=I){t=a[k];a[k]=a[I];a[I]=t;}}}main(){intb[10],I;printf(“enterthearray\n”);for(I=0;I10;I++)scanf(“%d”.&b[I]);sort(b,10);printf(“thesortedarray:\n”);for(I=0;I10;I++)printf(“%d”,b[I]);printf(“\n”);}4.凡在函数体内没有明显存储类别说明的变量是自动变量。5、判断m是否是素数#includemath.hmain(){intm,i,k;scanf(“%d”,&m);k=sqrt(m);for(i=2;i=k;i++)if(m%i==0)break;if(i=k+1)printf(“%disaprimenumber\n”,m);elseprintf(“%disnotaprimenumber\n”,m);}6.已知:struct{intk;charc;floata;}test;则sizeof(test)的值是7。7、假设当年产值为100,工业产值的增长率分别为6%、8%、10%、12%时,求工业产值分别经过多少年可实现翻番。请填空完成。main(){inty[4],I;floats[4]={100,100,100,100},c[4]={0.06,0.08,0.10,0.12};clrscr();for(i=0;i4;i++){y[i]=0;while(s[i]=200){s[i]=s[i]*(1+c[i]);y[i]++;}printf(\ny=%d\ts=%.2f\tc=%.2f,y[i],s[i],c[i]);}}8.已知i=3,执行语句k=(i++)+(i++)+(i++)后,k的值为9。9.当a=3,b=2,c=1时,表达式f=abc的值是0。10.设有以下程序:#includestdio.hmain(){charc;while((c=getchar())!=’?’)putchar(--c);}程序运行时,如果从键盘上输入:Y?N?↙,则输出的结果是X。11.当接收用户输入的含空格的字符串时,应使用的函数是gets()。12.在定义“inta[5][6]”后,第十一个元素是a[1][4] 。13.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空st=(char*)*maclloc(11)。14.把名为file的文件拷贝到新文件new.dat中,请填空将程序补充完整.#includestdio.hmain(){intc;FILE*fp2,*fp2;p1=fopen(“file”,r);p2=fopen(“new.dat”,w);c=fgetc(p1);while(c!=EOF){fputc(c,p2);c=fgetc(p1);}fclose(p1);fclose(p2);}}四、读程序,写出运行结果:1、main(){intx=10,y=10,I;for(I=0;I8;y=++I)printf(“%d%d”,x--,y);}运行结果:1010912、main(){intm=37,n=13;while(m!=n){while(mn)m=m-n;while(nm)n-=m;}printf(“m=%d\n”,m);}运行结果:m=13、main(){intx=9;for(;x0;x--){if(x%3==0){printf(“%d”,--x);continue;}}}运行结果:8524、main(){inta=7,b=2;floatx=2.5,y=4.7,z;z=x+a%3*(int)(x+y)%2/4;printf(“%f\n”,z);z=(a+b)/2+(int)x%(int)y;printf(“%f”,z);}运行结果:2.5000006.0000005.main(){inta=5,b=4,x,y;x=a++*a++*a++;printf(“a=%d,x=%d\n”,a,x);y=――b*――b*――b;printf(“b=%d,y=%d\n”,b,y);}运行结果:a=8,x=125b=1,y=16.#includestdio.hmain(){structs1{charc[4],*s;}s1={“abc”,“def”};structs2{char*cp;structs1ss1;}s2={“ghi”,{“jkl”,“mno”}};printf(“%c%c\n”,s1.c[0],*s1.s);printf(“%s%s\n”,s1.c,s1.s);printf(“%s%s\n”,s2.cp,s2.ss1.s);printf(“%s%s\n”,++s2.cp,++s2.ss1.s);}运行结果:adabcdefghimnohino7.#includestdio.hfunc(intb[]){intj;for(j=0;j4;j++)b[j]=j;}main(){inta[4],k;func(a);for(k=0;k4;k++)printf(“%d\n”,a[k]);}运行结果:01238.voidfun(){staticinta=5;a++;printf(“a=%d\n”,a);}main(){intm;for(m=0;m=1;m++)fun();}运行结果:a=6a=7五、编程写一个程序