答案)
一、填空题
1、设x=10100011,若要通过x*y使x的高4位取反,低4位不变,则y的二进制数是_______。
2、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数________完成的。
3、在C语言源程序中,一个变量代表【 】。
4、若有定义语句:int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为_______
5、若有定义语句:inte=1,f=4,g=2;float m=10.5,n=4.0,k;,则执行表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是_______。 6、下面程序段的运行结果是_______。
char s[80],*sp=\"HELLO!\"; sp=strcpy(s,sp); s[0]='h';puts(sp);
7、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。请填空。
for(x=0;x<=30;x++) {y=30一x;
if(_______)printf(\"%d,%d\\n\",x,y); }
8、设有一输入函数scanf(\"%d”,k);它不能使float类型变量k得到正确数值的原因是_______未指明变量k的地址和_______格式控制符与变量类型不匹配。
9、设有以下定义和语句,请在printf语句的_______中填上能够正确输出的变量及相应的格式说明。
union
{int n;doublex;}num; num.n=10; num.x=10.5;
printf(\"_______\",_______); 10、下面程序段的运行结果是_______。 int i=5;char c[6]=\"abcd\"; do{c[i]=c[i-1];}while(--i>0); puts(c);
二、选择题
11、下面不正确的字符串常量是( )
A.'abe' B.\"12'12\" C. \"o\" D.\"\" 12、下列4组选项中,不是C语言关键字的选项是。( ) A.define B.getc C.include D.while
IF char scanf go
Type printf case pow
13、阅读以下程序,当输入数据的形式为25,13,10<回车>,程序的输出结果
#include {int x,y,z; scanf(\"%d%d%d”,8.x.&y,&z); printf(\"x+y+z=%d\\n\",x+y+z); return0; } A.x+y+z=48 B.x+y+z=35 C.x+z=35 D.不确定值 14、以下C程序的运行结果是。(注:口表示空格) #include printf(\"y=%3o\\n\",y); printf(\"y=%8o\\n\",y); printf(\"y=%#8o\\n\",y); return 0; } A.y=口口口2456 B.y=囗口□4630 y=口口口口口口口口2456 y=口口口口口口口04630 y= ########2456 y= ########4630 C.y=2456 D.y=4630 y=口口口口2456 y=口口口口4630 y=口口口02456 y=口口口04630 15、判断字符串a和b是否相等,应当使用( )。 A.if(a==B. B.if(a=B.C.if(strcpy(a,B.)D.if(strcmp(a,B.) 16、以下叙述正确的是 A.在C程序中,main函数必须位于程序的最前面 B.C程序的每行中只能写一条语句 C.C语言本身没有输入输出语句 D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误 17、与下面程序段等价的是( )。 for(n=100;n<=200;n++) {if(n%3==0)continue; printf(\"%4d\",n); } A.for(n=100;(n%3)&&n<=200;n++)printf(\"%4d\",n); B.for(n=100;(n%3)|| n<=200;n++)printf(\"%4d\",n); C.for(n=100;n<=200;n++)if(n%3!=0)printf(\"%4d\",n); D.for(n=100;n<=200;n++){if(n%3)printf(\"%4d\",n);else continue;break;} 18、若用数组名作为函数调用的实参,则传递给形参的是( ) A.数组的首地址 B.数组第一个元素的值 C.数组中全部元素的值 D.数组元素的个数 19、若有以下定义,则数值不为3的表达式是( )。 int x[10]={0,1,2,3,4,5,6,7,8,9},*p1; A.x[3] B.p1=x+3,*p1++ C.pl=x+2,*(p1++) D.pl=x+2,*++pl 20、若有函数max(a,B.,并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是( ) A.(*p)max(a,B.; B.*pmax(a,B.; C.(*p)(a,B.; D.*p(a,B.; 21、以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。 #include {floatx,y,z,sum; scanf(\"%f%1%f\",8.x,&y,8.z); sum=f(【】)+f(z+y,z-y); printf(\"sum=%fNn\",sum); return(0); } float f(float a,float B. {float value; value=a/b; return(value); } A)x-y,x+y B)x+y,x-y C)z+y,z-y D)z-y,z+y 22、下面程序段的功能是输出两个字符串中对应相等的字符,请选择填空( )。 charx[]=\"programming\"; char y[]=\"Fortran\"; int i=0; while(x[i]!='\\o'&&.y[i]!='\\o') if(x[i]==y[i])printf(\"%c\",【】); else i++; A.x[i++] B.y[++i] C.x[i] D.y[i] 23、下面程序的运行结果是( )。 #include {char str[]=\"SSSWLIA\",c;int k; for(k=2;(c=str[k])!=\\o';k++) {switch(C. {case'I':++k;break; case'L':continue; default:putchar(C.;continue; putchar('*’); } return 0; } A.SSW* B.SW* C.SW*A D.SW 24、以下程序的运行结果是( )。 #include b=(-1)8&.8&(-1); printf(\"%d,%d\",a,B.; return0; } A.6,1 B.2,1 C.6,0 D.2,0 25、下面程序段的运行结果是( )。 for(y=1;y<10;)y=((x=3*y,x+1),x-1); printf(\"x=%d,y=%d\",x,y); A.x=27,y=27 B.x=12,y=13 C.x=15,y=14 D.x=y=27 三、读程序填空 26、以下printf语句中*号的作用是_______,输出结果是_______。 #include int main() {inti=1;printf(\"##%*d\\n\",i,i); i++; printf(\"##%*d\\n\",i,i); i++; printf(\"##%*d\\n\",i,i); return 0; } 27、以下程序的输出结果是_______。 #include {int x=10;float pi=3.1416; printf(\"(1)%d\\n\ printf(\"(2)%6d\\n\ printf(\"(3)%f\\n\ printf(\"(4)%14fNn\ printf(\"(5)%e\\n\ printf(\"(6)%14e\\n\ printf(\"(7)%g\\n\ printf(\"(8)%12g\\n\ return 0; } 28、下面程序的功能是:根据表4-3中给定的函数关系,对输入的每个x值计算出相应的y值。请填空。 函数关系 x y 0 x=a或x=-a -a 29、若有以下程序段,且grade的值为C,则输出结果是_______。 switch(grade) {case'A':printf(\"85~100\\n\"); case'B':printf(\"70~84n\"); case'C':printf(\"60~69\\n\"); case'D':printf(\"(60\\n\"); default:printf(\"error!\\n\"); } 30、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,下面的程序统计卖完所需的天数。请填空。 #include {int day=0,x1=1020,x2; while(_______){x2=_______;x1=x2;day++;} printf(\"day=%d\\n\",day); return 0; } 31、阅读下面程序,完成下列问题中的填空。问题(1)此程序在调用函数f后的运行结果是_______。(2)若将函数f中的for(j=i+1;j<4;j++)改为for(j=0;j<3一i;j++),则程序的运行结果是_______。 #include for(i=0;i<3;i++) for(j=i+1;j<4;j++) {k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;} int main() {int s[4][4],i,j; for(i=0;i<4;i++) for(j=0:j<4;j++) s[i][j]=i-j; f(s); for(i=0;i<4;i++) {printf(\"\\n\"); for(j=0;j<4;j++) printf(\"%4d',s[i][j]); return(0); } 32、下面程序的功能是给一维数组a输入6个任意整数,假设为: 7 4 8 9 1 5 然后建立一个具有以下内容的方阵并打印。请填空。 5 7 4 8 9 1 1 5 7 4 8 9 9 1 5 7 4 8 8 9 1 5 7 4 4 8 9 1 5 7 7 4 8 9 1 5 #include {int a[6],i,j,k,m; for(i=0;i<6;i++) scanf(\"%d\",&.a[i]); for(i=5;i>=0;i--) {k=a[5];for(_______;j>=0;j-一) a[j+1]=a[j]; _______; for(m=0;m<6;m++) printf(\"%d\",a[m]); printf(\"\\n\"); } return 0; } 33、以下程序的运行结果是_______。 #include for(i=0;i {int a[N]={11,66,33,77,55,99},i; printf(\"\\n\"); fun(a); for(i=0;i 34、编写程序实现功能:读入两个运算数(datal和data2)及一个运算符(op),计算表达式datal op data2的值,其中op可以为十、一、*、/四个符号中的任一种(用switch语句实现)。 35、从键盘输入一个字符串a,并在a串中的最大元素后边插入字符串b(b[]= \"ab\")。试编程。 参考答案 一、填空题 1、11110000 2、【1】scanf【2】printf 3、内存中的一个存储单元 4、5.500000 5、13.700000 6、hELLO! 7、2*x+4*y==90 8、【1】格式控制符与变量类型不匹配。 scanf 语句的正确形式应该是:scanf(\"%f\",8.k); 【2】未指明变量k的地址。 9、【1】%If【2】num.x 10、aabcd 二、选择题 11、A 12、A 13、D 14、D 15、D 16、C 17、C 18、A 19、B 20、C 21、B 22、A 23、B 24、B 25、C 三、读程序填空 26、【1】可以使同一输出语句中的输出宽度得以改变。 【2】##1 ##囗2 ##囗囗3 27、(1)10 (2)口口口囗10 (3)56.100000 (4)口口口口口口3.141600 (5)5.68100e+02 (6)口口口3.14160e+00 (7)3.1416 (8)口口口口囗囗3.1416 (注:答案中的囗代表空格)