《[工学]C语言全部章节习题集本.doc》由会员分享,可在线阅读,更多相关《[工学]C语言全部章节习题集本.doc(35页珍藏版)》请在三一文库上搜索。
1、C语言程序设计练习册专 业:_班 级:_学 号:_学生姓名:_ _任课教师:_ _计算机学院基础教研室编制1 语言概述一、单项选择题 1、一个C程序的执行是从( )。A.本程序的main函数开始,到main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序文件的第一个函数开始,到本程序main函数结束2、在 C 语言中,每个语句必须以( )结束。 A. 回车符 B. 冒号 C.逗号 D.分号 3、C 语言规定:在一个源程序中,main函数的位置( )。A.必须在最开始 B.必须在系统调用的库函数的后面 C
2、.可以任意 D.必须在最后4、一个C 语言程序是由( )。A. 一个主程序和若干子程序组成 B.函数组成 C.若干过程组成 D.若干子程序组成5、下列说法中错误的是( )。 A.主函数可以分为两个部分:主函数说明部分和主函数体 B.主函数可以调用任何非主函数的其他函数 C.任何非主函数可以调用其他任何非主函数 D.程序可以从任何非主函数开始执行6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( )。 A. 生成可执行目标文件 B.生成目标文件 C.输出运行结果 D.自动保存源文件 二、填空题 1、C 语言只有 个关键字和 种控制语句。2、每个源程序有且只有一个 函数,系统总是
3、从该函数开始执行C语言程序。 3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 符号作为开始标记,以 符号作为结束标记。4、C 语言中,输入操作是由库函数 完成的,输出操作是由库函数 完成的。5、系统默认的C 语言源程序文件的扩展名是 ,经过编译后生成的目标文件的扩展名是 ,经过连接后生成的可执行文件的扩展名是 。6、C 语言的标识符只能由字母、数字和 三种字符组成。三、判断题( )1、C源程序是由多个函数组成的,程序的执行是按书写顺序进行的。( )2、一个C程序可以由一个文件组成,也可由若干文件组成。( )3、变量xx和XX是一样的。( )4、C程序中无论是整数还是实数,只要在允许
4、的范围内都能准确无误的表示。( )5、简单的C程序由函数组成。( )6、C 程序的每一行结束都有一个;。3 数据类型、运算符与表达式一、单项选择题 1、以下选项中,不正确的 C 语言浮点型常量是( )。 A. 160. B. 0.12 C. 2e4.2 D. 0.02、以下选项中,( )是不正确的 C 语言字符型常量。 A. a B. x41 C. 101 D. a3、在 C 语言中,字符型数据在计算机内存中,以字符的( )形式存储。 A.原码 B.反码 C. ASCII 码 D. BCD码4、若x、i、j和k都是int型变量,则计算下面表达式后,x的值是( )。x=(i=4,j=16,k=3
5、2) A. 4 B. 16 C.32 D.525、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为( )。 A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算 C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算 6、若有代数式 ,则不正确的C语言表达式是( )。A.a/b/c*e*3 B. 3*a*e/b/c C.3*a*e/b*c D. a*e/c/b*3 7、表达式!x|a=b 等效于( )。 A. !(x|a)=b) B. !(x|y)=b C. !(x|(a=b) D. (!x)|(a=b) 8、设整型变量 m,n,a,b,c,d
6、均为1,执行 (m=ab)&(n=cd)后, m,n 的值是( )。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 9、 设有语句 int a=3;,则执行了语句 a+=a-=a*=a;后,变量 a 的值是( )。 A. 3 B. 0 C. 9 D. -12 10、在以下一组运算符中,优先级最低的运算符是( )。 A. * B. != C. + D. = 11、设整型变量 i 值为2,表达式(+i)+(+i)+(+i)的结果是( )。 A. 6 B. 12 C. 15 D. 表达式出错 12、若已定义 x 和 y为double 类型,则表达式 x=1,y=x+3/2 的值是( )。
7、A. 1 B. 2 C. 2.0 D. 2.5 13、sizeof (double)的结果值是( )。 A. 8 B. 4 C. 2 D. 出错 14、设a=1,b=2,c=3,d=4,则表达式:ab? a : cd? a : d的结果为( )。 A. 4 B. 3 C. 2 D. 1 15、设a 为整型变量,不能正确表达数学关系:10a15的 C 语言表达式是( )。 A. 10a10 & a15 D. !(a=15) 16、设 f是实型变量,下列表达式中不是逗号表达式的是( )。 A. f= 3.2, 1.0 B. f0, f0 D. f=(3.2, 1.0) 17、 表达式18/4*sq
8、rt(4.0)/8值的数据类型是( )。A. int B. float C. double D. 不确定 18、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句C2=A+6-3;后c2中的值是( )。 A. D B. 68 C. 不确定的值 D. C 19、以下用户标识符中,合法的是( )。 A. int B. nit C. 123 D. a+b 20、C 语言中,要求运算对象只能为整数的运算符是( )。 A. % B. / C. D. * 21、若有说明语句:char c=72;则变量c在内存占用的字节数是( )。 A. 1 B. 2 C. 3 D. 4 22、字符串ABC
9、在内存占用的字节数是( )。 A. 3 B. 4 C. 6 D. 8 23、要为字符型变量 a赋初值,下列语句中哪一个是正确的( )。 A. char a=3; B. char a=3; C. char a=%; D. char a=*; 24、下列不正确的转义字符是( )。 A. B. C. 074 D. 0 二、填空题 1、C 语言中的逻辑值“真”是用 表示的,逻辑值“假”是用 表示的。 2、若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 。 3、设 c=w,a=1,b=2,d=-5, 则表达式 x+1c, y!=c+2, -a-5*bb
10、)&(n=cd)后n的值为0。( )18、C语言中无逻辑变量,也无逻辑表达式。四、编程题:1、设长方形的高为 1.5,宽为 2.3,编程求该长方形的周长和面积。2、编写一个程序,将大写字母 A转换为小写字母 a。4 最简单的C程序设计顺序程序设计一、单项选择题 1、printf(f=%3.2f%,3.478);的输出结果是( )。A. f=3.48% B. f=3.5% C. f=3.48% % D. f=347.8% 2、printf(%c,%d,a, a);的输出结果是( )。 A. a,97 B. a 97 C. 97,a D. 97 a 3、有以下程序段char c1,c2,c3,c4
11、,c5,c6; scanf(cccc,&c1,&c2,&c3,&c4);c5=getchar( ); c6=getchar( );putchar(c1);putchar(c2);printf(ccn,c5,c6);程序运行后,若从键盘输入(从第1列开始):12345678。则输出结果是:( )A1267 B1256 C1278 D12454、若一个 int 类型的数据占 2 字节,则程序段:int x= 1;printf(%u,%d,x,x);的输出结果是( )。 A. 65535, 1 B. 1,65535 C. 32767, 32768 D. 32768,32767 5、在TC 中getc
12、har、putchar、printf、scanf 四个函数,均包含在头文件( )中。 A. math.h B. stdio.h C. stbio.h D. stdlib.h 6、复合语句是用( )括起来的语句组。 A. ( ) B. C. D. 7、下列格式符中,哪一个可以用于以八进制形式输出整数( )。 A. %d B. %8d C. %o D. %ld 8、下列格式符中,哪一个可以用于以十六进制形式输出整数( )。 A. %16d B. %8x C. %d16 D. %d 9、a 是int类型变量,c是字符变量,下列输入语句中哪一个是错误的( )。 A. scanf(%d,%c,&a,&c
13、); B. scanf(%d%c,a,c); C. scanf(%d%c,&a,&c); D. scanf(d=%d,c=%c,&a,&c); 10、要使double x; long a;的数据能正确的输出,输出语句应是( )。 A. printf(%d, %f,a, x); B. printf(%d, %1f,a, x);C. scanf(%1d, %1f,&a, &x); D. printf(%1d, %lf,a, x);二、程序改错题 1、以下程序的功能是,从键盘输入一个字符并鸣笛输出。 # include stdio.h mian( ) char c getchar(c); putch
14、ar(007) ; /*鸣笛*/ c=putchar( ); 2、以下程序的功能是,输入长方形的两边长(边长可以取整数和实数),输出它的面积和周长。 main int a,b,s,l; scanf(%d,%d,&a,&b); s=a*b; l=a+b; printf(l=%f,s=%fn,l); 三、写出程序运行结果1、 main( ) int a,b; scanf(%2d%*2s%2d,&a,&b); printf(%dn,a+b); 运行时输入:12345678 ,输出结果是 。2、 main( ) int a=3,b=5,x,y; x=a+1,b+6; y=(a+1,b+6); prin
15、tf(x=%dny=%dn,x,y); 输出结果是 _。四、编程题 1、输入 3 个整数,计算它们的和与平均值,平均值的结果保留 2 位小数。 2、输入两个实数a,b,然后交换它们的值,最后输出(提示:要交换两个数得借助一个中间变量temp。首先让temp存放a的值,然后把b存入a,再把temp存入b就完成了)。5 选择结构程序一、单项选择题 1、假定所有变量均已正确定义,下列程序段运行后x 的值是( )。 a=b=c=0, x=35; if(!a) x-; else if(b); if(c) x=3; else x=4; A. 34 B. 4 C. 35 D. 3 2、有以下程序段,其输出结
16、果是:( )inta,b,c; a=10;b=50;c=30;if(ab) a=b,b=c; c=a; printf(a=%d b=%d c=%dn,a,b,c);A.a=10 b=50 c=10B.a=10 b=50 c=30 C.a=10 b=30 c=10 D.a=50 b=30 c=50 3、有以下程序段,其输出结果是:( ) intx=1,y=2,z=3; if(xy)if(yy)?x:y; printf(%d,max);的输出结果是( )。 A. 5 B. 3 C. 8 D. 13 5、程序段 int x=3,a=1;switch(x) case 4: a+;case 3: a+;
17、case 2: a+;case 1: a+; printf (%d,a);的输出结果是( )。 A. 1 B. 2 C. 3 D. 4 6、下列语句应将小写字母转换为大写字母,其中正确的是( )。 A.if(ch=a&ch=a&ch=a&cha&chc) a=b;b=c;c=a; else a=c;c=b;b=a; 执行后a,b,c的值为_,_,_ (2)if(ac) a=c; else a=b;c=b;b=a; 执行后a,b,c的值为_,_,_ (3)if(a!=c) ; else a=c;c=b;b=a; 执行后a,b,c的值为_,_,_2、若整数x分别等于95、87、100、43、66、
18、79,则以下程序段运行后屏幕显示是什么? switch(x/10) case 6: case 7: printf(Passn); break; case 8: printf(Goodn); break; case 9: case 10: printf(VeryGoodn); break; default: printf(Failn); x等于 95时,程序段运行后屏幕上显示 x等于 87时,程序段运行后屏幕上显示 x等于100时,程序段运行后屏幕上显示 x等于 43时,程序段运行后屏幕上显示 x等于 66时,程序段运行后屏幕上显示 x等于 79时,程序段运行后屏幕上显示 三、阅读程序,写出运行
19、结果 1、 void main ( ) int a=10, b=4, c=3; if(ab) a=b ; if(ac) a=c ; printf(%d, %d, %dn, a, b, c) ; 2、void main ( ) int x=100, a=10, b=20, ok1=5, ok2=0 ; if(a0)&(s=3)&(s1)|(s8) x=3; else x=1;else x=0;6 循环控制一、单项选择题 1、for(i=1;i9;i+=1);该循环共执行了( )次。 A. 7 B. 8 C. 9 D. 10 2、int a=2;while(a=0) a-;该循环共执行了( )次。
20、 A. 0 B. 1 C. 2 D. 3 3、执行完循环 for(i=1;i100;i+);后,i 的值为( )。 A. 99 B. 100 C. 101 D. 102 4、以下 for语句中,书写错误的是 。 A. for(i=1;i5;i+) B. i=1;for(;i5;i+) C. for(i=1;i5;i+); D. for(i=1;i5;) i+; 5、( )语句,在循环条件初次判断为假,还会执行一次循环体。 A. for B. while C. do-while D. 以上都不是 6、有以下程序段inti=5;do if(i%3=1)if(i%5=2)printf(*%d,i);
21、break;i+;while(i!=0);其运行结果是( )A.*2*6B. *7C.*5D. *3*57、i、j已定义为 int 类型,则以下程序段中内循环体的执行次数是( ) 。 for(i=5;i;i-) for(j=0;j4;j+) A. 20 B. 24 C. 25 D. 30 8、以下不构成无限循环的语句或语句组是( )。A.n=10;while(n);n-; B.n=0; while(1)n+;C.n=0;do+n;while(n0;y-)if(y%3=0)printf(%d,-y);其运行结果是( )。A. 875421 B.963 C.852 D. 74110、有以下程序段:
22、int i,j;for(i=3;i=1;i-)for(j=1;j=2;j+)printf(%d,i+j);printf(n);其运行结果是( )。A.234B.432C.23D.453455433434 45 23二、判断题( )1、do while(0); 程序块至少会执行一次( )2、语句 for(i=0;i=10;i+) ; 至多循环10次( )3、for( ; ; )表示无限循环。( )4、下面的循环不能正常结束: for (s=0,i=1; i=10; ) s=s+i; i+; ( )5、continue语句是终止整个循环的执行。( )6、对for(表达式1;表达式3;)可理解为fo
23、r(表达式1;1;表达式3;)。( )7、下列程序段执行循环二次 x=-1; do x=x*x;while(!x);( )8、下列程序段能计算s=10!的值 i=1;s=1; do s=s*i;i+; while(i=10);( )9、下列程序段将输出3和0 , int x=3; doprintf(“%dn”,x-=2);while(!-x);三、程序填空题 1.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天后卖完? main( ) int day,x1,x2; day=0; x1=1020; while( ) x2= ; x1= ; day+; printf(day
24、=%dn,day); 2.输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。 #include void main( ) int s1=0,s2=0; char ch; while( )!=n) if(ch=0&ch=a&ch=z | ) s2+; printf(“%d,%d”,s1,s2); 3.下面程序的功能是计算1-3+5-7+-99+101的值,请填空。#include main( ) int i=1,t=1,s=0; for(i=1;i0; y-) if(y%3=0) printf(%d, -y); continue; 程序运行后输出结果为
25、 2. main( ) int n1,n2;scanf(%d,&n2);while(n2!=0) n1=n2%10; n2=n2/10; printf(%d,n1); 程序运行后,如果从键盘上输入1298;则输出结果为 3. main ( ) int s,i; for(s=0,i=1;i3;i+,s+=i); printf(%dn,s);程序运行后输出结果为 4. #include void main( ) int s=1,t=1,a,n; scanf(%d%d,&a,&n); for(int i=1;in;i+) t=t*10+1; s=s+t; s*=a; printf(SUM=%dn,s
26、); 程序运行后,如果从键盘上输入2,4;则输出结果为 五、程序改错1、以下程序是显示200,300所有能被7整除的数,每行显示5个数,此程序有 5处错。 main( ) int i,n=0; /*n用来记录每行已打印数的个数*/ while(i300) if(i%7=0) break; printf(%5d,i); n=n+1; if(n=5)/*满5个换行*/ printf(n); n=0; 2、以下程序是求 1!+2!+3!+4!+5!+6!+7!的值,其中有 3 处错误。 main() int i,s,t=0; for(i=1;i=7;i+) s=0; t=t*i; s=s+t; pr
27、intf(sum=dn,s); 六、选做题1.求序列2/1,3/2,5/3,8/5,13/8,21/13,的前20项之和。2.请完成用一元人民币换成一分、两分、五分的所有兑换方案。7 数组一、单项选择题 1、int a4=5,3,8,9;其中 a3的值为( )。A. 5 B. 3 C. 8 D. 9 2、以下 4 个字符串函数中,( )所在的头文件与其他 3 个不同。 A. gets B. strcpy C. strlen D. strcmp3、以下 4 个数组定义中,( )是错误的。 A. int a7; B. #define N 5 long bN; C. char c5; D. int
28、n,dn; 4、字符数组进行初始化,( )形式是错误。 A. char c1 =1, 2, 3; B. char c2 =123; C. char c3 = 1, 2, 3, 0; D. char c4 =123; 5、在数组中,数组名表示( )。 A. 数组第 1 个元素的首地址 B.数组第 2 个元素的首地址 C. 数组所有元素的首地址 D.数组最后 1 个元素的首地址6、若有以下数组说明,则数值最小的和最大的元素下标分别是( )。 int a12 =1,2,3,4,5,6,7,8,9,10,11,12; A. 1,12 B. 0,11 C. 1,11 D. 0,12 7、若有以下说明,则
29、数值为 4 的表达式是( )。 int a12 =1,2,3,4,5,6,7,8,9,10,11,12; char c=a, d, g ; A. ag-c B. a4 C. ad-c D. ad-c 8、设有定义:char s12 = string ; 则printf( %dn,strlen(s); 的输出是( )。 A. 6 B. 7 C. 11 D. 12 9、设有定义:char s12 = string; 则printf(%dn , sizeof(s); 的输出是( )。 A. 6 B. 7 C. 11 D. 12 10、合法的数组定义是( )。 A. char a = string ; B. int a5 =0,1,2,3,4,5; C. char a= string ; D. char a =0,1,2,3,4,5 11、合法的数组定义是( )。 A. int a3 =0,1,2,3,4,5; B. int a 3 =0,1,2,3,4; C. int a23=0,1,2,3,4,5,6; D. int a23=0,1,2,3,4,5,; 12、下列语句中,正确的是 ( )。A. char a3 =abc, 1; B. char a 3 =abc, 1; C. char a
链接地址:https://www.31doc.com/p-1976594.html