1/8江苏省五年一贯制专转本《C语言程序设计》模拟试卷一(晓庄)一、填空題(每空1分,共20分)1.C程序是由构成的,一个C源程序至少且仅包含一个。2.C语言规定标识符只能由、和下划线3种字符组成,且第一个字符必须为或下划线。3.设有说明语句:chara='\72';则变量a包含______个字符。4.条件“20<x30”的C语言表达式是。5.若已知a=10,b=20,则!ab的值为.6.表达式21%4的值为。7.C语言中没有专门的变量,如果想将一个字符串存放在变量中以便保存,必须使用字符数组。8.已知a=79.345,则表达式(int)a的值为。9..下面程序的输出结果为。main(){intx=023;printf(“%d\n”,--x);}10.设inta=2;,则执行a+=a*=15;后,变量a的值是__________。11.已知ch='B',则表达式【(ch='A'&&ch='Z')?(ch+32):ch】的值为。12.C中定义符号常量PI为3.14159的宏命令是。13.函数形参和调用的实参是普通变量时,参数按方式进行传递。14.C中逻辑运算符的优先次序是:。15.定义一个共用体变量,共三个成员分别是字符型、整形和单精度浮点型,则该共用体变量所占内存长度为个字节。15.设有变量定义:inta=10,c=9;则表达式(--a!=c++)?—a:++c的值是。2/8二、单项选择题(每题2分,共40分)1.下列C语言标识符中,合法的是()A.ifB.returnC.23aD.a232.欲从键盘给整型变量a赋值3,b赋值2,则对应语句scanf(%d,%d,&a,&b);的输入格式是()A.32B.2,3C.23D.3,23.C语言源程序文件经过C编译程序编译连接之后生成的文件后缀名是()A..exeB..objC..batD..c4.结构化程序设计的三种基本结构是()A.顺序结构、复杂结构、循环结构B.顺序结构、复杂结构、分支结构C.顺序结构、分支结构、选择结构D.顺序结构、选择结构、循环结构5.以下表达式中,值为0的是()A.4%5B.4/5.0C.4/5D.456.设下列表达式中所涉及的变量均已正确定义,则不符合C语言语法的是()A.4&&3B.a++C.a=b=5D.int(3.14159)7.设inta,x=2;执行语句a=x0?3*x:(x=10);后,变量x的值是()A.1B.2C.6D.108.在C语言程序中,在函数内部定义的变量称为()A.全局变量B.外部变量C.全程变量D.内部变量9.设有以下程序段:intx=2,y=2,z=0,a;a=++x||++y&&z++;printf(″%d,%d,%d\n″,x,y,z);执行后输出的结果是()A.2,2,0B.3,3,1C.3,2,0D.3,2,13/810.若变量c为char类型,则能正确判断出c为小写字母的表达式是()A.(c='a')||(c='z')B.'a'=c='z'C.(c='a')&&(c='z')D.('a'=c)and('z'=c)11.在C语言中,字符串″\\TOP\t\65\″″的长度是()A.5B.7C.9D.1212.逗号表达式a=2*6,a*3,a+5的值是()A.12B.17C.36D.4113.设inta=11,b=2;,执行下述程序段后,变量a和b的值分别是()do{a/=b++;}while(ab);A.1,3B.1,4C.2,3D.2,414.下列程序的执行结果是()。main(){intk=8;if(k=0)if(k==0)printf(####);elseprintf(&&&&);elseprintf(****);}A)####B)&&&&C)****D)有语法错误,无输出结果15.以下表达式中,不正确的字符常量是()A.'n’B.aC.'2’D.'\101’16.若【intx=12,*p=&x;】,则正确的赋值表达式是()A.p=xB.p=*xC.*p=xD.*p=*x16.若有以下定义:floatx;inta,b;则正确的switch语句是A.switch(x){case1.0:printf(*\n);case2.0:printf(**\n);}4/8B.switch(x){case1,2:printf(*\n);case3:printf(**\n);}C.switch(a+b){case1:printf(*\n);case1+2:printf(**\n);}D.switch(a+b);{case1:printf(*\n);case2:printf(**\n);}17.设有如下程序段:inti=5;for(;i=10;)i++;执行完这段程序后,i的值是()A.5B.6C.10D.1118.设有如下程序段:inti=15;while(i15)i++;则以下描述中正确的是()A.循环体语句执行15次B.这是一个死循环C.循环体语句一次也不执行D.循环体语句只执行一次19.设i,j,k均为int型变量,则执行完下面的for循环后,k的值为()for(i=0,j=10;i=j;i++,j--)k=i+j;A)12B)10C)11D)920.下列程序段的输出结果是()。inta=1,c=0;if(ac){c=a;c++;}printf(%d,c);A)4B)2C)0D)15/8三、程序填空(每空3分,共15分)1.已知fibonacci数列:1,1,2,3,5,8,......,它可由下面公式表述:F(1)=1n=1F(2)=1n=2F(n)=F(n-1)+F(n-2)n2以下程序的功能是求F(49)的值,请在下划线处填上正确内容,使程序能正确运行。#includemath.h#includestdio.h#includeconio.hmain(){inti;doublef[50];f[1]=;f[2]=;for(i=3;i=49;i++)f[i]=;printf(f[49]=%12.0lf,f[49]);}2.以下程序的功能是用递归法求n!,请在下划线处填上正确的语句,使程序能正确运行。#includestdio.h6/8longf(intn){if(n==1)return();elsereturn();}main(){intn;printf(n=);scanf(%d,&n);printf(%d!=%ld,n,f(n));}四、写出以下程序运行结果(每题4分,共12分)1.以下程序的运行结果是:main(){inti=2,x=5,j=7;fun(j,6);printf(“i=%d;j=%d;x=%d\n”,i,j,x);}fun(inti,intj){intx=7;printf(“i=%d;j=%d;x=%d\n”,i,j,x);}7/82.以下程序输出的结果是:#includestdio.hvoidmain(){inti,g,s,b,q;for(i=1234;i1236;i++){g=i/1%10;s=i/10%10;b=i/100%10;q=i/1000%10;printf(%d%d%d%d\n,g,s,b,q);}}3.main(){intx=15;while(x20){x++if(x/3!=0){x++;break;}elsecontinue;}printf(″%d\n″,x);}五、编程题(第1题5分,第2题8分,共13分)1.将一张百元大钞对换成1元、5元、10元的小钞,要求每种小钞最少要一张,编程求共有多少种对换方法。2.编程输出所有水仙花数。(一个三位数等于它每一位数字的立方和,那么我们8/8称这个数为水仙花数)