专升本C语言联大复习题答案.docx
- 文档编号:12845417
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:35
- 大小:38.12KB
专升本C语言联大复习题答案.docx
《专升本C语言联大复习题答案.docx》由会员分享,可在线阅读,更多相关《专升本C语言联大复习题答案.docx(35页珍藏版)》请在冰豆网上搜索。
专升本C语言联大复习题答案
2021年C语言升本复习题〔重要〕
1.以下四个选项中哪个不是关键字〔C〕
A)whileB)switchC)ReturnD)goto
2.以下四个选项中哪个是关键字〔D〕
A)_whileB)switch1C)ReturnD)goto
3.以下四个选项中哪个是正确的标识符〔C〕
A)whileB)switchC)ReturnD)goto
4.以下四个选项中哪个不是正确的标识符〔A〕
A)1whileB)_switchC)ReturnD)_2goto
5.以下四组选项中,均不是C语言关键字的是:
〔A〕
A)defineB)getcC)includeD)while
IFcharscanfgo
typeprintfcasepow
6.下面四组选项中,均是不合法的用户标识符的选项是:
(都不是合法的标识符)〔C〕
A)AB)floatC)b-aD)_123
P_01a0gototemp
do_AintINT
7.以下说法正确的选项是:
〔D〕
A)C程序由define和主函数组成
B)C程序由include和主函数组成
C)C程序只由主函数组成
D)C程序由主函数和其他函数组成
8.以下说法错误的选项是:
〔B〕
A)C程序可以包含多个函数。
B)C程序由include命令和主函数组成。
C)任何C程序都有一个主函数。
D)C程序由主函数和其他函数组成。
9.C源程序的根本单位是【函数】。
10.一个C源程序至少包含一个【主函数】。
11.C源程序的注释由【/**/】和【//】构成。
12.构造化程序设计主要由【顺序语句】、【分支语句】和【循环语句】语句构造构成。
13.下面不正确的字符串常量是〔A〕
A)’abc’B)〞12’12〞C)"0〞D)"〞
14.下面四组选项中,均是正确的八进制或十六进制数的选项是:
〔C〕
A)-10B)0abcdC)0010D)0a12
0x8f-017-0x11-0x123
-0110xc0xf1-0xa
15.下面四组选项中,均是合法转义字符的选项是:
〔A〕
A)‘\’’B)‘\’C)‘\018’D)‘\\0’
‘\\’‘\017’‘\f’‘\101’
‘\n’‘\"’‘xab’‘x1f’
16.下面四组选项中,均是合法整型常量的选项是:
〔A〕
A)160B)-0xcdfC)-01D)-0x48a
-0xffff01a986,0122e5
0110xe06680x
17.在C语言中,根本数据类型除了单精度和双精度类型外,还有【int】【long】【char】。
18.在C语言中,float型变量在内存占【4】字节,double型变量在内存占【8】字节。
19.假设有代数式
那么不正确的表达式是:
〔C〕
A)a/b/c*e*3B)3*a*e/b/c
C)3*a*e/b*cD)a*e/c/b*3
20.以下符合C语言语法的赋值表达式是:
〔B〕
A)d=9+e+f=d+9B)d=9+e,f=d+9
C)d=9+e,e++,d+9D)d=9+e++=d+7
21.在C语言中,要求运算数必须是整型的运算符是:
〔D〕
A)/B)>C)!
=D)%
22.假设有代数式
,那么正确的表达式是:
(A)
A)sqrt(fabs(pow(y,x)+log(y)))
B)sqrt(abs(pow(y,x)+log(y)))
C)sqrt(fabs(pow(x,y)+log(y)))
D)sqrt(abs(pow(x,y)+log(y)))
解释:
ABS是绝对值函数的输入参数类型为整型,fabs函数的输入参数类型为浮点型。
23.假设有定义:
inta=7;floatx=2.5,y=4.7;那么表达式(A)
x+a%3*(int)(x+y)%2/4的值是:
A)2.500000B)2.75000C)3.500000D)0.000000
24.假设有定义:
intk=7,x=12;那么值为3的表达式是:
(D)
A)x%=(k%=5)B)x%=(k-k%5)
C)x%=k-k%5D)(x%=k)-(k%=5)
25.假设有定义:
charw;intx;floatydoublez;,那么表达式w*x+z-y的类型是:
(D)
A)charB)intC)floatD)double
26.printf("%d,%d,%d〞,a,b,c);与printf("%d,%d,%d〞,(a,b,c),b,c);的区别。
27.解析:
前面打印a,b,c后面打印c,b,c。
逗号表达式,值为最后一项的值。
28.假设intx=5,n=5;,那么计算表达式x+=n++后,x、n的值分别为【10】和【6】。
29.假设inta=6;,那么计算表达式a+=a-=a*a后,a的值是【-60】。
30.假设inta;,那么表达式(a=4*5,a*2),a+6的值是【26】。
31.已有如下定义,假设要求给a1、a2、c1、c2输入的值为10,20,A和B,当从第1列开场输入数据时,正确的输入方式是_______.(注意:
inta1,a2;charc1,c2;
scanf("%d%c%d%c〞,&a1,&c1,&a2,&c2);〔C〕
A)10A└┘20B
C)10A20B
32.以下程序输出的结果是:
__〔D〕____。
(注意:
└┘表示空格)
main()
{printf("\n*s1=%15s*〞,〞ChinaBeijing〞);
printf("\n*s2=%-5s*〞,〞chi〞);
}
A)*s1=ChinaBeijing└┘└┘└┘*B)*s1=ChinaBeijing└┘└┘└┘*
*s2=**chi**s2=chi└┘└┘
C)*s1=*└┘└┘ChinaBeijing*D)*s1=└┘└┘└┘ChinaBeijing*
*s2=└┘└┘chi**s2=chi└┘└┘*
33.以下程序的输出结果是:
____。
#include
main()
{inta=252;
printf("a=%oa=%#o\n",a,a);
printf("a=%xa=%#x\n",a,a);
}
答案:
a=374a=0374
a=fca=0xfc
34.判断字符变量ch中是否为字母’y’和’n’。
【分析】对这个判断应当明确是否也包含大写字母。
一般情况下应当包含,因此,只要ch中存储的是字母’Y’、’y’、’N’和’n’之一,命题都成立,显然,这是一种逻辑"或〞的关系。
【结论】对应的逻辑表达式为:
ch==’Y’||ch==’y’||ch==’N’||ch==’n’
35.判断数据x是否在区间[0,60]内。
包含[]不包含边界〔〕
【分析】x在区间[0,60]内,既要满足x>=0,又要满足x<=60,这是一种逻辑"与〞的关系。
这里的"既……又要……〞实际表达了同时成立的意图。
【结论】对应的逻辑表达式为:
x>=0&&x<=60
思考:
为什么不能写成:
0<=x<=60"
36.x和y都等于100
【分析】假设使命题成立,既要满足x是100,又要满足y是100。
【结论】对应的逻辑表达式为:
x==100&&y==100
37.判断a是否为3、5、7的公倍数。
【分析】a为3、5、7的公倍数的条件是,a能被3整除且a能被5整除且a能被7整除,这里的"且〞实际是同时成立的意思,因此是逻辑"与〞的关系。
【结论】对应的逻辑表达式为:
a%3==0&&a%5==0&&a%7==0
思考:
为什么不能写成:
a%(3,5,7)==0"
38.判断a是否能被3、5、7中的任意一个数除尽。
【分析】a能被3、5、7中任一个数整除,那么条件成立,也就是a能被3整除或a能被5整除或a能被7整除。
这里应该使用逻辑"或〞。
【结论】对应的逻辑表达式为:
a%3==0||a%5==0||a%7==0
思考:
为什么不能写成:
a%(3||5||7)==0或者a%3==0&&a%5==0&&a%7==0"
39.判断变量year表示的年份是否闰年。
【分析】闰年的规律是:
年份能被4整除,但不能被100整除;或者年份能被400整除。
这个规律已经说明了逻辑关系。
"年份能被4整除,但不能被100整除〞可以用year%4==0&&year%100!
=0表示;而"年份能被400整除〞可以用year%400==0表示。
【结论】判断年份year是闰年的完整的逻辑表达式为:
(year%4==0)&&(year%100!
=0)||(year%400==0)
40.在C语言中,表示逻辑"真〞用【!
0】。
41.能表示"当x取值在[1,10]和[200,210]为真,否那么为假〞的表达式为:
〔C〕
A)(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B)(x>=1)||(x<=10)||(x>=200)||(x<=210)
C)(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)
42.判断字符型变量ch是否大写字母的正确表达式是:
(C)
A)‘A’<=ch<=‘Z’B)(ch>=‘A’)&(ch<=‘Z’)
C)(ch>=‘A’)&&(ch<=‘Z’)D)(ch>=‘A’)AND(ch<=‘Z’)
43.x=43,ch=‘A’,y=0;那么表达式(x>=y&&ch<‘B’&&!
y)的值是:
(C)
A)0B)语法错C)1D)"假〞
44.以下不正确的if语句形式是(C)
A)if(x>y&&x!
=y);B)if(x==y)x+=y;
C)if(x!
=y)scanf("%d〞,&x)elsescanf("%d〞,&y);
D)if(x 45.intx=10,y=20,z=30;以下语句执行后x,y,z的值是(B) if(x>y) z=x; x=y; y=z; A)x=10,y=20,z=30B)x=20,y=30,z=30 C)x=20,y=30,z=10D)x=20,y=30,z=20 46.假设w=1,x=2,y=3,z=4,那么条件表达式w y z的值是;〔D〕 A)4B)3C)2D)1 47.A=7.5,B=2,C=3.6,表达式A>B&&C>A||A C>B的值是【0】。 48.条件"2 49.inta=3.b=4,c=5;那么表达式! (a+b)+c-1&&b+c/2的值是【1】。 50.以下程序如果输入一个小写字母,那么将其循环变为其后的第5个字母输出,如a变为f输出,z变为e输出。 #include〞stdio.h〞 main() { charch; ch=getchar(); if(ch>=‘a’&&ch<=‘u’)【ch+=5】; elseif(ch>=‘v’&&ch<=‘z’)【ch=‘a’+ch-’v’】; putchar(ch); } 51.假设程序运行时输入35/<回车>,那么以下程序运行结果是【0.60000】。 main() { floatx,y; charch; doubler; scanf("%f%f%c〞,&x,&y,&ch); switch(ch) { case‘+’: r=x+y;break; case‘-’: r=x-y;break; case‘*’: r=x*y;break; case‘/’: r=x/y;break; } printf("%f\n〞,r); } 52.设有以下程序段,那么: 〔B〕 intx=0,s=0; while(! x! =0)s+=++x; printf("%d〞,s); A)运行程序段后输出0B)运行程序段后输出1 C)程序段中的控制表达式是非法的D)程序段执行无限次 53.下面程序段的运行结果是: 〔D〕 x=y=0; while(x<15)y++,x+=++y; printf("%d,%d〞,y,x); A)20,7B)6,12C)20,8D)8,20 解析: x=0y=1y=2x=2 X=2y=3y=4x=6 X=6y=4y=6x=12 X=12y=7y=8x=20 54.以下程序段能计算1×2×3×…×10的程序段是: 〔C〕 A)do{i=1;s=1; s=s*i;i++; }while(i<=10); B)do{i=1;s=0; s=s*i;i++; }while(i<=10); C)i=1;s=1; do{ s=s*i;i++; }while(i<=10); D)i=1;s=0; do{ s=s*i;i++; }while(i<=10); 55.以下不是无限循环的语句是〔A〕 A)for(y=0,x=1;x>++y;x=i++)i=x; B)for(;;x=i++); C)while (1){x++;} D)for(i=0;;i--〕sum+=i; 56.以下是死循环的程序段是: 〔C〕 A)for(i=0;;) {if(++i%2==0)continue; if(++i%3==0)break; } B)i=32767; do{if(i<0)break;}while(++i); C)for(i=1;;)if(++i<10)continue; D)i=1; while(i--); 57.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符完毕输入,请填空。 intn=0,c; c=getchar(); while(【c! =‘\n’】) {if(【c>=‘0’&&c<=‘9’】)n++; c=getchar(); } 58.下面的程序段中循环体运行的次数是【3】 a=10; b=0; do{b+=2;a-=b+2;}while(a>=0); 59.下面程序段的运行结果是【**】 x=2; do{printf("*〞);x--;}while(! x==0); 60.以下程序运行后的输出结果是(B) main() {intx[3]={2,3,5},i,s=0; for(i=1;i<=3;i++) {s+=x[(i+5)%3]; printf("%d",s); } } A〕2615B〕2510 C〕61510D〕63060 61.有如下定义和语句,执行完后,变量p和i的值分别为〔C〕 inti,p; for(i=7,p=1;i>0;i-=3) p=p*i; A〕18,0B〕2,-1 C〕28,-2D〕15,随机 62.以下函数的功能是(C) intfindmax(inta,intb) { intc; for(c=a;;c--) if(a%c==0&&b%c==0)break; returnc; } 分析: for循环里没有完毕条件,只有break可以完毕循环。 If为真才能够执行break语句。 &&两侧都必须为真才可以IF为真。 也就是ab除c都可以整除才能值为0,0==0,为1. c为最大公约数。 想一想这个求的是什么 for(c=a;;c++) if(c%a==0&&a%b==0)break; 最小公倍数。 A〕求a,b较大者 B〕求a,b较小者 C〕求a,b的最大公约数 D〕求a,b的最小公倍数 63.假设有定义intaa[10];,那么对数组aa元素的正确引用是: 〔D〕 A)aa[10]B)aa[3,5]C)aa(5)D)a[10-10] 64.以下能对一维数组a进展初始化的语句是: 〔D〕 A)inta[10]=(0,0,0,0);B)inta[10]={}; C)inta[]={0};D)inta[10]={10*1}; 65.以下对二维数组正确的定义是: 〔C〕 A)inta[3][];B)floata(3,4); C)doublea[1][4];D)floata(3)(4); 66.假设有定义: inta[3][4];,那么对数组元素正确的引用是: 〔C〕 A)a[2][4]B)a[1,3]C)a[1+1][0]D)a (2) (1) 67.以下能对二维数组初始化的语句是: 〔BD〕 A)inta[2][]={{1,0,1},{5,2,3}}; B)inta[][3]={{1,2,3},{5,2,3}}; C)inta[2][4]={{1,2,3},{4,5},{6}}; D)inta[][3]={{1,0,1},{},{5,2,3}}; 68.假设有定义: doublex[3][5];那么x数组中,行下标的下界是【0】,列下标的上界是【4】。 69.假设有定义: inta[3][4]={{1,2},{0},{4,6,8,10}};,那么a[1][2]的值是【0】,a[2][1]的值是【6】。 70.以下程序以每行4个数据的形式输出a数组元素,请填空。 #defineN20 main() {inta[N],i; for(i=0;i for(i=0;i {if(【i%4==0】)【printf("\n〞);】 printf("%3d〞,a[i]);} } 71.以下程序运行后的输出结果是(C) main() { intx[3][3]={{1,2,3},{11,12,13},{21,22,23}}; inti,j; for(i=0,j=3;i<3;i++,j--) printf("%d",x[2-i][j-1]); } A〕11121B〕31323 C〕23122D〕11223 72.设有定义语句: chara[【】]=〞ABCD〞;,如果程序中有语句 strcat(a,〞edfg! ! ! 〞);,那么,在【】中所填写的数字应当是(B) A)大于等于11B〕至少12C〕11D〕可以不填数字 解析: strcat把后面字符串添加到前面字符串的结尾处(覆盖前面字符串结尾处的'\0') 73.但凡函数中为指明存储类别的局部变量,其隐含的存储类别都是〔A〕。 A)自动(auto)B)静态(static) C)外部(extern)D)存放器(register) 74.以下不正确的说法是〔D〕。 A)不同函数中可以使用一样名称的变量 B)形式参数是局部变量 C)在函数内定义的变量值在本函数范围内有效 D)在函数内的复合语句中定义的变量在函数内有效 75.假设用一维数组名作为函数的实参,那么以下正确的说法是〔C〕。 A)必须在主函数中说明此数组的大小 B)实参的数组类型与形参数组类型可以不匹配 C)在被调函数中,不需要考虑形参数组的大小 D)实参数组名必须与形参数组名一致。 76.假设用数组名作为函数调用的实参,传给形参的是〔A〕。 A)数组的首地址B)数组第1个元素的值 C)数组中全部元素的值D)数组元素的个数 77.以下程序的运行结果是〔〕。 main() {inta=2,i; for(i=0;i<3;i++)printf("%4d〞,f(a));} f(inta) {intb=0;staticintc=3; b++;c++;returna+b+c;} A)777B)71013 B)7911D)789 78.在C语言中,一般函数由两局部组成,它们是【函数头】和【函数体】。 79.下面add函数的功能是返回两个数的和,函数中错误的局部是【void】,改正后应为【float】。 80.voidadd(floata,floatb) {floatc;c=a+b;returnc;} 下面求xy的pow函数中的空应当如何填? intpow(intx,inty) {intj; for(【j=1】;【y>0】;【y--】)j=j*x; returnj;} 81.执行以下程序后,a的值为【①C】,b的值为【②C】。 main() {inta,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; b=(-*p1)/(*p2)+7; printf("a=%d\n",a); printf("b=%d\n",b); } 【①】A)-1B)1C)0D)4 【②】A)5B)6C)7D)10 82.已有定义: intk=2;int*ptr1,*ptr2;,且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是〔B〕。 A)k*ptr1+*ptr2B)ptr2=k; C)ptr1=ptr2;D)k=*ptr2*(*ptr1); 83.设char*s="\ta\018bc〞;,那么指针s指向的字符串所占的字节数是〔D〕。 A)9B)5C)6D)7 解析: 如果char*s="\ta\017bc〞就是6 84.以下正确的程序段是〔C〕。 A)charstr[20];B)char*p; scanf("%s〞,&str);scanf("%s〞,p); C)charstr[20];D)charstr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 联大 复习题 答案