完整版推荐C语言各章节练习题含答案.docx
- 文档编号:29236461
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:37
- 大小:188.18KB
完整版推荐C语言各章节练习题含答案.docx
《完整版推荐C语言各章节练习题含答案.docx》由会员分享,可在线阅读,更多相关《完整版推荐C语言各章节练习题含答案.docx(37页珍藏版)》请在冰豆网上搜索。
完整版推荐C语言各章节练习题含答案
—、C语言概述练习题
选择1.一个C程序的执行是从A。
A)本程序的main函数开始,至Umain函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序文件的第一个函数开始,到本程序main函数结束
D)本程序的main函数开始,到本程序文件的最后一个函数结束
2.以下叙述不正确的是_D。
A)一个C源程序必须包含一个main函数B)一个C源程序可由一个或多个函数组成
C)C程序的基本组成单位是函数D)□在C程序中,注释说明只能位于一条语句的后面
3.以下叙述正确的是__C。
A)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
B)在C程序中,main函数必须位于程序的最前面
C)C语言本身没有输入输岀语句D)C程序的每行中只能写一条语句
4.一个C语言程序是由_B。
A)一个主程序和若干个子程序组成B)函数组成C)若干过程组成D)若干子程序组成
二、数据类型、运算符与表达式
选择.1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为C.
x=(i=4,j=16,k=32)A)4B)16帖2D)52
2.下列四组选项中,均不是C语言关键字的选项是__A。
A)defineIFtypeB)getccharprintf
C)includecasescanfD)whilegopow
3.下列四组选项中,均是不合法的用户标识符的选项是B
4.
A)WP_0doB)b-a[g^tointC)floatlaO_AD)-123abcTEMP
若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,%是只能用于整数运算的运算符(字符型也可以)
D)在C程序中,无论是整数还是实数,都能被准确无误地表示
9.sizeof(float)是B
A)(x=y=6,x+y,x+1)B)(x=y=6,x+y,y+1)
12•设以下变量均为int类型,则值不等于7的表达式是C
C~(x=6,x+1,y=6,x+y)D)(y=6,y+1,x=y,x+1)
intm=5,y=2;
填空1.若有以下定义,则计算表达式y+=y-=m*=y后的y值是【1】。
-16
2.在C语言中,一个int型数据在内存中占2个字节,则int型数据的取值范围为【2】。
-32768〜32767
3.若s是int型变量,且s=6,则下面表达式的值为【3】。
1s%2+(s+1)%2
4.若a是int型变量,则下面表达式的值为【4】。
26(a=4*5,a*2),a+6
5.若x和a均是int型变量,则计算表达式
(1)后的x值为【5】,计算表达式
(2)后的x值为【6】<
(1)x=(a=4,6*2)12
(2)x=a=4,6*24
6.若a是int型变量,则计算下面表达式后a的值为【7】。
2a=25/3%3
7.若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为【8】,n的值为【9】。
106x+=n++//若改为x+=++n则计算后X为11,n为6
8.若有定义:
charc='\010则变量c中包含的字符个数为【10】。
1
9.若有定义:
intx=3,y=2;floata=2.5,b=3.5;则下面表达式的值为【11】1(x+y)%2+(int)a/(int)b
10.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为【12】。
f
三、简单的C程序设计
选择1.putchar函数可以向终端输出一个D。
A)整型变量表达式B)实型变量值C)字符串D)字符或字符型变量值
2.printf函数中用到格式符%5s其中数字5表示输出的字符串占用5列。
如果字符串长度大于5,则输出按方式
B;如果字符串长度小于5,则输出按方式C。
main()
{intx,y,z;
scanf(
printf(
x+y+z=%d\n”,x+y+z);
}A)x+y+z=48B)x+y+z=35C)x+z=35
D)不确定值
4.根据下面的程序及数据的输入和输岀形式,程序中输入语句的正确形式应该为C
main()
{charch1,ch2,ch3;
输入语句
printf(“%c%%c,ch1,ch2,ch3);
}输出形式:
ABC
A)scanf(“%c%c%c,&ch1,&ch2,&ch3);B)scanf(
C)scanf(“%c%c%c‘,&chi,&ch2,&ch3);D)scanf(
5.已知ch是字符型变量,下面不正确的赋值语句是A
输入形式:
ABC
%c,%c,%c,&chi,&ch2,&ch3);
%c%c,&chi,&ch2,&ch3);
A)ch=‘a'+'b';B)ch=‘\0';C)ch=‘7'+'9'
D)ch=5+9;
填空1.在TC2环境下,以下程序的输出结果是【1】。
i:
dec=-4,oct=177774,hex=fffc,unsigned=65532
main()
{shorti;
i=-4;
printf(“i:
dec=%d,oct=%o,hex=%x,unsigned=%u\n”,i,i,i,i);
}
2.在TC2环境下,以下的输出结果是【2】。
c:
dec=120,oct=170,hex=78,ASCII=x
main()
{charc='x';
printf(“c:
dec=%d,oct=%o,hex=%x,ASCII=%c\n”,c,c,c,c);
}
3.在TC2环境下,以下的输出结果是【3】。
x=1y=2*sum*=3
10Squaredis:
100
main()
{intx=1,y=2;
printf(“x=%dy=%d*sum*=%d\n”,x,y,x+y);
printf(“10Squaredis:
%d\n”,10*10);}
4.假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空
a+=【4】;b=a-【5】;a-=【6】;bbb
5.若x为int型变量,则执行以下语句后的x值为【7】。
-14x=7;x+=x-=x+x;
6.有一输入语句scanf(“%d,k);则不能使float类型变量k得到正确数值的原因是【8】和【9]
格式控制符
应为%f;变量k前缺少&
四、逻辑运算与判断选取控制
A只能是0和1B)只能是0或非0正数C)只能是整型或字符型数据D)可以是任何类型的数据
2.判断char型变量ch是否为大写字母的正确表达式是_C。
A)‘A<=ch<=‘Z'B)(ch>=‘A)&(ch<=‘Z')C)(ch>=‘A')&&(ch<=‘Z')D)('A'<=ch)AND(‘Z'>=ch)
3.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。
则以下不能满足要求
的表达式是C。
A)A%2==1B)!
(A%2==0)C)!
(A%2)D)A%2
4.
因为m=a>b为假,所以整
设有:
inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为B
个为假,n不变
A)1B)2C)3D)4
5.以下程序的运行结果是B。
main()
{inta,b,d=241;
a=d/100%9;2%9余2
b=(-1)&&(-1);
printf(“%d,%d,a,b);
}A)6,1B)2,1C)6,0D)2,0
6.
已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是B
7.以下程序的运行结果是_C。
main()
{intm=5;
if(m++>5)Fm=6
printf(“%d\n”,m);
else;
printf(“%d\n”,m--);m--=6,m=5
}A)4B)5C)6D)7
8若运行时给变量x输入12,则以下程序的运行结果是_D。
main()
{intx,y;
scanf(“%d',&x);
y=x>12?
x+10:
x-12;x=12>12Fy=x-12=0
printf(“%d\n”,y);
}A)4B)3C)2D)0
编程题1.编程实现:
输入整数a和b,若a2+b2大于100,则输出a2+S百位以上的数字,否则输出两数之和
2.编程判断输入的正整数是否既是5又是7的整倍数。
若是,则输岀yes;否则输岀no
3.用switch编程实现:
『-1(xvO)
y=0(x=O)
'1(x>0)
4.用switch语句编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩,设:
分为’B',70〜79分为’C,60〜69分为’D'60分以下为’E'
#include
voidmain()
{
inta;
scanf("%d",&a);
if((a>=0)&&(a<=100))
switch(a/10)
{
case10:
case9:
printf("A\n");break;
case8:
printf("B\n");break;
case7:
printf("C\n");break;
case6:
printf("D\n");break;
default:
printf("E\n");break;
}
else
printf("error\n");
}
五、循环控制
选择1.设有程序段intk=10;
while(k=0)k=k-1;while是先判断在执行
这下面描述中正确的是—C.
a)while循环执行10次b)
循环是无限循环
c)循环体语句一次也不执行
d)循环体语句执行一次
2.语句while(!
E);中的表达式
!
E等价于
C.!
!
=E为真,即!
=0为真
a)E==0b)E!
=1
c)E!
=0
d)E==1
3•下面程序段的运行结果是
c
.循环次数为
b.
intn=0;
4.下面程序的运行结果是__C
#include
main()
{intnum=0;
5.以下程序段
x=-1;
do{
x=1x=1*1=1F
6.若有如下语句
intx=3;
7.下面程序的运行结果是
#include
while(!
(--x));
main()
{
inty=10;
do{y--;}
while(--y);
printf("%d\n",y--);
进入循环前:
y=10
a)无限次b)0次c)1次d)2次
9.执行语句for(i=1;i++<4;);后变量i的值是__C,
a)3b)4c)5d)不定
10.以下正确的描述是—B.
a)continue语句的作用是结束整个循环的执行(break)b)只能在循环体内和switch语句体内使用break语句
c)在循环体内使用break语句或continue语句的作用相同(不)d)从多层循环嵌套中退出时,只能使用goto语句
(二)、填空题
1.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。
请填空。
intn=0,c;
c=getchar();
while(_c!
='\n')
{
if(__c>='0'&&c<=99___)n++;
c=getchar();
2•下面程序的功能是用”辗转相除法”求两个正整数的最大公约数。
请填空
#include
main()
{intr,m,n;
scanf("%d%d",&m,&n);
if(m r=m%n; while(r){m=n;n=r;r=__m%n;} printf("%d\n",n); } 3•下面程序的运行结果是s=254二. #include main() {inta,s,n,count; a=2;s=0;n=1;count=1; while(count<=7){n=n*a;s=s+n;++count;} printf("s=%d",s); } 4•下面程序段的运行结果是_a=-5_. i=1;a=0;s=1; do{a=a+s*i;s=-s;i++;}while(i<=10); printf("a=%d",a); 5•下面程序段的运行结果是旦. i=1;s=3; do{s+=i++; if(s%7==0)continue; else++i; }while(s<15); printf("%d",i); 二、编程 1、从键盘上输入若干学生的成绩,当输入负数时结束输入,统计并输岀最高成绩和最低成绩。 2、输出如下图所示的下三角形乘法九九表 1 2 3 4 5 6 7 8 9 1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81 六、数组 1.以下为一维整型数组a的正确说明是D. a)inta(10);b)intn=10,a[n]; c)intn;d)#defineSIZE10 scanf("%d",&n);inta[SIZE]; inta[n]; 2•以下对二维数组a的正确说明是___C. a)inta[3][];b)floata(3,4);c)doublea[1][4]d)floata(3)(4); 3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为_D.(假设a[0][0]位于数组的第一个位置上。 ) a)i*m+jb)j*m+ic)i*m+j-1d)i*m+j+1 4.若二维数组a有m列,则在a[i][j]前的元素个数为B. a)j*m+ib)i*m+jc)i*m+j-1d)i*m+j+1 5•若有以下程序段: inta[]={4,0,2,3,1},i,j,t; for(i=1;i<5;i++) {t=a[i];j=i-1; while(j>=0&&t>a[j]) {a[j+1]=a[j];j--;} a[j+1]=t;} 则该程序段的功能是___B. a)对数组a进行插入排序(升序)b)对数组a进行插入排序(降序) c)对数组a进行选择排序(升序)d)对数组a进行选择排序(降序) 6.有两个字符数组a、b,则以下正确的输入语句是___B. a)gets(a,b);b)scanf("%s%s",a,b);c)scanf("%s%s",&a,&b);d)gets("a"),gets("b"); 7.下面程序段的运行结果是D. chara[7]="abcdef"; charb[4]="ABC"; strcpy(a,b);复制函数,将字符2的复制到1 printf("%c",a[5]);a)空格b)\0c)ed)f 8.判断字符串s1是否大于字符串s2,应当使用___D. a)if(s1>s2)b)if(strcmp(s1,s2))c)if(strcmp(s2,s1)>0)d)if(strcmp(s1,s2)>0) 9.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔,请选择填空。 #include main() { chars[80],c1,c2=''; inti=0,num=0; gets(s); while(s[i]! ='\0') {c1=s[i]; if(i==0)c2=''; elsec2=s[i-1]; if(___)num++; i++; } printf("Thereare%dwords.\n",num); } a)c1==''&&c2==''b)c1! =''&&c2==''c)c1==''&&c2! =''d)c1! =''&&c2! ='' 10.下面程序的运行结果是__B. #include {charstr[]="SSSWLIA",c; intk; for(k=2;(c=str[k])! ='\0';k++) {switch(c) {caseT: ++k;break; case'L': continue; default: putchar(c);continue; } putchar('*'); } } a)SSW*b)SW*c)SW*Ad)SW 填空1.若有定义: doublex[3][5];则x数组中行下标的下限为_0,列下标的上限为4 2•下面程序以每行4个数据的形式输岀a数组,请填空。 #defineN20 main() {inta[N],i; for(i=0;i scanf("%d",__&a[i]); for(i=0;i {if(i%4==0)_printf(“\n”) printf("%3d",a[i]); } printf("\n"); } 3.下面程序可求岀矩阵a的主对角线上的元素之和,请填空。 main(){inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(_」==j)sum=sum+_a[i][i]__; printf("sum=%d\n",sum); } 4. 10010 当从键盘输入18并回车后,下面程序的运行结果是 main() {intx,y,i,a[8],j,u,v; scanf("%d",&x); y=x;i=0; do {u=y/2; a[i]=y%2; i++;y=u; }while(y>=1); for(j=i-1;j>=0;j--) printf("%d",a[j]); } 5.下面程序用插入法对数组a进行降序排序。 请填空 main() {inta[5]={4,7,2,5,1}; inti,j,m; for(i=1;i<5;i++) {m=a[i]; j=_i-1—; while(j>=0&&m>a[j]) {_a[j+1]=a[j]; j--; } _a[j+1]=m; } for(i=0;i<5;i++) printf("%d",a[i]); printf("\n"); } 6.下面程序的功能是在三个字符串中找岀最小的,请填空。 #include #include main() {chars[20],str[3][20]; inti; for(i=0;i<3;i++)gets(str[i]); strcpy(s,_str[0]); if(strcmp(s,str[1])<0)strcpy(s,str[1]); if(strcmp(str[2],s)<0)strcpy(s,str[2]); printf("%s\n",__s); } 7.下面程序的运行结果是__#&*&____.(#&*&%) #include main() {chars[]="ABCCDA"; intk; charc; for(k=1;(c=s[k])! ='\0';k++) {switch(c) {case'A': putchar('%');continue; case'B': ++k;break; default: putchar('*'); caseC: putchar('&');continue; putchar('#'); } } 七、函数 选择1.以下正确的说法是D___.建立函数的目的之一是 a)提高程序的执行效率b)提高程序的可读性c)减少程序的篇幅d)减少程序文件所占内存2.以下正确的函数定义形式是___A. x,y); a)doublefun(intx,inty)b)doublefun(intx;inty)c)doublefun(intx,inty);d)doublefun(int 3.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为_B. A)地址传递B)单向值传递C)由实参传给形参,再由形参传回给实参D)由用户指定传递方式 4.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是__B. a)floatb)intc)longd)double 5.已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为__Binta[3][4]; f(a); a)f(intarray[][6])b)f(intarray[3][])c)f(intarray[][4])d)f(intarray[2][5]) 前面括号的可以省,后面的不可以。 6.以下程序的正确运行结果是C. #include voidnum() { externintx,y; inta=15,b=10; x=a-b; y=a+b; } intx,y; main() x=a+b; y=a_b; num(); printf("%d,%d\n",x,y); } a)12,2b)不确定c)5,25d)1,12 填空1.以下程序的运行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 推荐 语言 各章 练习题 答案