2022年C语言习题课 .pdf

上传人:Che****ry 文档编号:27262024 上传时间:2022-07-23 格式:PDF 页数:14 大小:136.26KB
返回 下载 相关 举报
2022年C语言习题课 .pdf_第1页
第1页 / 共14页
2022年C语言习题课 .pdf_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《2022年C语言习题课 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言习题课 .pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 C语言习题课一、单项选择题:1. 以下A是 C语言中有效的变量名称。A_abc B2abc Cchar Da#3 变量名只能以下划线和字母开头2. 下面四个说法中错误的是B。Afor循环不仅可以和for循环嵌套,而且可以和While 循环嵌套。B当在循环体内执行continue语句的时候,将结束整个循环。Cwhile循环最少循环0 次, do-while循环最少循环1 次。Dgoto 语句也可以实现循环的功能。3. 在 while ( x )中的 x 与下面条件表达式等价的是DAx = = 0 Bx= = 1 Cx! = 1 Dx ! = 0 4. 为表示关系xyz, 应使用 C语言表达式

2、AA(x=y)&(y=z) B(x=y)AND(y=z) C(x=y=z) D(x=y)&(y=z) 5. 设有如下定义:int x=9,y=2,z;则语句 printf(“%dn” ,z= x/y);的输出结果是CA1 B4.5 C4 D3 整形中的“ /”是整除6. 若有以下语句:static char x =”12345” ;static char y =1 , 2 , 3 , 4 , 5 ;则正确的说法是 B 。Ax 数组和 y 数组的长度相同Bx 数组的长度大于y 数组的长度Cx 数组的长度小于y 数组的长度Dx 数组与 y 数组等价字符串后有一个“0 ”7. 已知有定义: char

3、 ch ;则下面正确的赋值语句为A。Ach=X Bch=55 C ch=M D ch=55 8. 以下说法中正确的是CAC 语言程序总是从第一个的函数开始执行B在 C 语言程序中 , 要调用的函数必须在main() 函数中定义CC 语言程序总是从main() 函数开始执行DC 语言程序中的main() 函数必须放在程序的开始部分9.C 语言中,形参的缺省存储类型说明是:A A.auto B.static C.register D.extern 10.C 语言中的简单数据类型有:B A整型实型 逻辑型B整型实型 字符型C整型字符型逻辑型D整型实型 逻辑型字符型11. 以下程序段的输出结果是:C

4、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 2 A1 int x=3; B3 0 do C1 -2 printf(%3d,x-=2); D死循环 while(!(-x); 12. 以下非法的赋值语句是:A An=(i=2,+i); Bj+ ;C+(i+1);Dx=y0;13. 设 a 和 b 均为 double 型变量,且a5.5 ,b=2.5 ,则表达式 (int)a+b/b的值是: D A6.500000 B6 C5.

5、500000 D6.000000 14. 已知 x=3,y=2,则表达式x*=y+8 的值为: C A3 B2 C30 D10 y+8 是一个整体15. 设 x,y,z均为 int型变量,则执行以下语句后,t 的值为: C x=y=z=1; t=+x|+y&+z;A不定值 B 2 C1 D0 16. 为了测试字符串的实际长度,C语言规定了一个“字符串结束标志”,这个结束标志字符是:B A n B 0 C x D 9 17.C 程序的三种基本结构是: A A顺序结构、选择结构、循环结构B逻辑结构、层次结构、网状结构C顺序结构、逻辑结构、选择结构D层次结构、顺序结构、循环结构18. 若 int i

6、=10;执行完下面程序判断后,变量i 的正确结果是D。A10 switch ( i ) B11 C12 case 7: i+=1; D13 case 10: i+=1; case 17: i+=1; default: i+=1; case 后有 break ,结束跳出结果,没有break ,继续执行具体见书本105 页19. 下列关于 C 语言注释的描述中,错误的是:D 。AC语言中用 /* ,*/ 表示注释部分B注释只是给人看的,对编译和运行不起作用C注释可以加在程序中的任何位置DC语言中用 * ,* 表示注释部分20. 下列关于 C 程序的描述中,错误的是:D 。AC程序是由函数构成的B一

7、个 C程序总是从main 函数开始执行CC程序书写格式自由,一行内可以写几个语句,一个语句也可以分写在多行上名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 3 DC语言中是利用输入/ 输出运算符构成输入/ 输出语句完成输入/ 输出操作的21.C 源程序的后缀名默认为:B 。Acpp Bc Cobj Dexe C语言的默认后缀名是.c ,在 C+中才是 cpp 22. 以下不属于C语言的基本数据类型的是:B 。A整型B布尔型C字

8、符型D实型23. 下列标识符中,符合C语言语法规范的是:C。AM.D.John B$123 C_name D3D64 24. 下列选项中,不是C 语言中的关键字的是:C。Aauto Bif CVOID Dbreak 25. 下列常量中,合法的长整型常量是:A。A0L B4962710000 C0.05472 D2e+2 长整型的范围是 -21474836482147483647 26. 设 int型变量 m ,n,a,b,c,d 均为 0,执行表达式 (m=a=b)|(n=c=d)后,m和 n 的值是:C。A0,0 B0,1 C1,0 D1,1 当在“或”的前面为1,后面不再执行。在“与”前面

9、为0,后面也不在执行,出现“短路”现象。27. 若 a 为 int类型,且其值为3,则执行完表达式a+=a-=a*a 后, a 的值是:C。A 3 B9 C 12 D6 28. 假设 double 型变量 x,y 已经正确定义,则表达式x=1,y=x+3/2的值是:D。A1 B2.0 C2 D2.5 29. 已知 A的 ASCII 码为 65,则下列程序的运行结果为:A。main() char ch1= A; char ch2=ch1+3; printf(“%d,%cn”,ch1,ch1); printf(“%d,%c ”,ch2,ch2); A65,A 68,D BA,65 D,68 CA,

10、D 65,68 DD,68 A,65 30. 以下关于 while语句的叙述正确的是BAwhile 语句构成的循环必须用break 语句才能退出Bwhile 循环语句中,当while 子句中的表达式值为零时,结束循环C不能使用while 语句来构成循环结构Dwhile 语句的循环体至少被执行一次二、填空题:1. 程序段 float x=165.323; printf(“x=%-10.2f ”,x) ;执行时输出的结果为:165.32 p76 2. 设 x,y,z,k 都是 int型变量,则执行表达式x=(y=4,z=16,k=32)后, x 的值为:323. 要将两个字符串连接成一个字符串,可

11、以使用的标准库函数名为:strcat P147 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 4 4. 多分支选择结构中, 若在执行某一个case 语句后,使流程跳出 switch 结构, 应该使用语句break p105 。5. 若有定义 int a34=1,2,3,4,5,6,7,8,9,10,11,12,则 a127 p137 6.C 语言中,结束本轮循环,将循环是否继续交给循环判断条件确定的语句是:continue。

12、7. 设 x2.5,a=7,y=4.7,则算术表达式x+a%3*(int)(x+y)%2/4的值为:2.58.C 语言中,函数是程序的基本构成单元,其中main 函数是必须的,且唯一。9. 在 C语言程序中,用关键字float定义单精度实型变量。10. 设有语句“ int i=1,s=1;for(;s+iy)&(-x0)”后 x 的值为1。12. 多分支选择结构中, 若在执行某一个case 语句后,使流程跳出 switch 结构, 应该使用语句break p105 13.C 语言中的 if语句属于三种基本结构中的选择结构的语句。14. 若变量 ch 为 char 类型,判断ch 为数字字符的表

13、达式是ch0& ch9。15. 设 x2.5,a=7,y=4.7,则算术表达式x+a%3*(int)(x+y)%2/4的值为:2.516.continue语句只能用在三种基本结构中的循环结构的语句中。17. 如果在用户的程序中要使用C 库函数中的数学函数时应在该源文件中使用的include命令是:math.h18. 若有定义: int x5; 则访问 x 数组中的元素时,下标的上限为:4 。19.C 语言中,函数是程序的基本构成单元,其中main函数是必须的,且唯一。20.C 语言本身没有输入输出语句,格式化的标准输出是借助库函数实现。三、程序阅读题:1. 阅读下列程序,并给出程序运行的结果。

14、void main() int n,d,k; n=263; d=1; k=1; do k*=n%10; n/=10; printf(%d, d); d+; while(n); printf(n); printf(%dn,k); printf(%dn,n); 运行结果: 1,2,3 36 0 2. 阅读下列程序,并给出程序运行的结果。void main() int x=2345,t; int sum,muti; sum=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共

15、14 页 - - - - - - - - - 5 muti=1; printf(数字为: %dn,x); while (x!=0) t=x%10; sum+=t; muti*=t; x=x/10; printf(构成数字的和: %dn,sum); printf(构成数字的乘积:%dn,muti); 运行结果:数字为:2345 构成数字的和:14 构成数字的乘积:120 3. 阅读下列程序,并给出程序运行的结果。void main( ) int x=20,y=30,z60;while(xy)xx+4;yy+4; zz/2; printf(“dn ”,x) ;printf(“ dn ”,y) ;

16、printf(“ dn ”, z); 运行结果: 32 34 30 4. 阅读下列程序,并给出程序运行的结果。void main() int i,j,l,m,a10=9,8,7,6,5,4,3,2,1,5; for(i=0;i=8;i+) l=i; for(j=i+1;j=9;j+) if(ajal) l=j; if(l!=i) m=ai; ai=al; al=m; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 6 for(

17、i=0;i=9;i+) printf(%d ,ai); if(i%3=0&i!=0) printf(“n ”); 运行结果: 1 2 3 4 5 5 6 7 8 9 四、编程题:(8 分每题,共16 分)1. 写一个函数, 输入一个四位数字, 要求输出这4 个数字字符, 但每两个数字间空一个空格。例如输入 1990,应该输出“ 1 9 9 0” 。算法一:# include void main( ) int a,b,c,d,e; /定义四个数, a 是一个四位数,b 是它的千位, c 是百位, d 是十位, e 是个位 printf(“请输入一个四位数:”); scanf(“%d ”,&a);

18、 b=a/1000; /获取它的千位 c=(a-b*1000)/100; /获取它的百位 d=(a-b*1000-c*100)/10; /获取它的十位 e=a-b*1000-c*100-d*10; /获取它的个位 printf(“%d %d %d %dn ”,b,c,d,e); /将它的每一位重新排序输出 算法二:# include /这方法与第3 题类似void main() char c; printf(“请输入数字:”); /提示while(c=getchar()!=n) /逐个获取数字(当然字母也可以,n 个数都可以)printf(“%c ”,c); /逐个数字输出(数字与数字之间有空

19、格)printf(“n ”); 算法三:# include void main() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 7 int a10,n,i=0; printf(“请输入一个数:”); scanf(“%d ”,&n); while(n!=0) ai+=n%10; n/=10; for (i-;i=0;i-) printf(“%d ”,ai); printf(“n ”); 2. 编写程序,用公式41-13 +1

20、5 -17 +19 -111 + ,求 的近似值,直到最后一项小于10-5为止。解法一:#include #include void main() double x=1,i=1; /定义 x=1/i (i是分数的分母 ) int j=1; /定义该数列有j 项 double p=0; /定义 p 是该数列的和,初始为0 while(x1e-5) /在该条件下循环 x=1/i; /x是每一项的值 i+=2; /数列的分母 +2 if(j%2!=0) /奇数项相加,偶数项相减获得p 的值 p 为 /4 p+=x; if(j%2=0) p-=x; j+; p=p*4; /获得 的值 printf(=

21、%lfn,p); /输出值 解法二: # include # include void main() int s; float n,t,pi; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - 8 t=1;pi=0;n=1.0;s=1; do pi+=t; n+=2; s=-s; t=s/n; while(fabs(t)1e-5); pi*=4; printf(“=%.5fn ”,pi); 3. 输入一行字符(不超过100) ,

22、将其中的大写字符变成小写,小写字符变成大写,其余字符不变。解法一:# include void main() char c; while(c=getchar()!=n) /获得字符 if (c=a&c=A&c=Z) /大写字母变小写字母 c=c+32; printf(%c,c); else /其他字符不变 printf(%c,c); printf(n); 解法二: # include void main() int i=0; char a100,c; printf(请输入字符串的内容:t); do scanf(%c,&ai); 名师资料总结 - - -精品资料欢迎下载 - - - - - -

23、- - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - 9 c=ai; i+; while(c!=n); ai=0; i=0; printf(输入字符串的内容为:t); while(ai!=0) printf(%c,ai); i+; printf(转换后字符串的内容为:t); i=0; while (ai!=0) c=ai; if(c=a&c=A&c=Z) ai+=32; printf(%c,ai); i+; 4. 以下程序把100200 之间不能被 3 整除的数输出# include void m

24、ain() int i; for (i=100;i=200;i+) /100到 200 之间循环 if (i%3!=0) /排除能被 3 整除的数(余数不为0) printf(%dn,i); 5. 输入 3 个数,按从小到大的顺序输出。方法一:# include void main() int x,y,z,t; printf(请输入要比较的三个数:); scanf(%d %d %d,&x,&y,&z); if (xy) t=x; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页

25、,共 14 页 - - - - - - - - - 10 x=y; y=t; if(yz) t=z; z=y; if (xt) y=t; else y=x; x=t; printf(%d %d %dn,x,y,z); 方法二: # include /此题使用了冒泡排序的方法void main( ) int a3; /定义 3 个数 int temp,i,j,k; printf(请输入 3 个数 :); /提示输入 for(i=0;i3;i+) scanf(%d,&ai); /给输入的 3 个数进行编号 for (j=0;j2;j+) /进行 2 次循环 for(k=0;kak+1) /进行比较

26、把大的数放到最后 temp=ak; ak=ak+1; ak+1=temp; for(i=0;i3;i+) /将排好序的3 个数重新编号 printf(%d ,ai ); /输出 3 个数 printf(n); 方法三: # include /这种方法比较麻烦,需要一一列出来 void main () 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - 11 int a,b,c,d,e,f; printf(“请输入 3 个数 :

27、”); scanf(“%d %d %d ”,&a,&b,&c); /获取 3 个数 a,b,c if(a=b&b=c) /a=b=c的情况 printf(“%d %d %dn”,c,b,a); /重新排序输出 else if(a=c&c=b) / a=c=b的情况 printf(“%d %d %dn”,b,c,a); /重新排序输出 else if(b=a&a=c) / b=a=c的情况 printf(“%d %d %dn”,c,a,b); /重新排序输出else if(b=c&c=a) / b=c=a的情况 printf(“%d %d %dn”,a,c,b); /重新排序输出else if(

28、c=b&b=a) /c=b=a的情况 printf(“%d %d %dn”,a,b,c); /重新排序输出else if(c=a&a=b) /c=a=b printf(“%d %d %dn”,b,a,c); /重新排序输出 6. 以下程序用while 语句计算式子n=1100n 方法一:用while 计算# include /此题要算从1 加到 100 void main() int s=0,n=1; while(n=100) /n从 1 到 100 之间循环 s+=n; n+; printf(%dn,s); 方法二:用for计算# include void main() int s=0,n;

29、 /s为累加的初始值for (n=1;n=100;n+) /n从 1 到 100 之间循环 s=s+n; printf(%dn,s); 7. 求 100200 间的全部素数。方法一: # include 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - 12 void main() int i , n ; for(n=101 ;n 200;n+=2) for(i=2;i=n-1;i+) if(n%i=0) break; if(

30、i= n ) printf(%5dn,n); 方法二:# include # include void main() int m,i,k,n=0; for(m=101 ;m=200;m+=2) k=sqrt(m); for(i=2;i=k+1) printf(%dn,m); n+=1; printf(n); 8. 函数 pi()的功能是根据以下公式求 值,2 =1+13 +1325 +132537 +13253749 + ,直到最后一项小于10-5为止。#include double jiecheng1(int x) /定义一个函数阶乘 1,可以得到一个从1 乘到 x 的值 double s=

31、1; for(int i=1;i=x;i+) s=s*i; return(s); double jiecheng2(int x) /定义一个阶乘2 函数可以得到一个从3*5*7* 。 。 。 。 。 。*2x-1的值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 14 页 - - - - - - - - - 13 double s=1; for(int i=1;i1e-5) /1e-5 是 10-5 x=(jiecheng1(i)/(jiecheng2(i); /这一步

32、不用说了吧,自己看吧i=i+1; p=p+x; / /2=p, 所以 =2*p printf(%lfn,2*p); 9. 判断输入的一个年份是否是闰年。# include void main() int x; printf(请输入年份: ); scanf(%d,&x); if(x%400=0|(x%4=0&x%100!=0) /根据闰年的定义判断 printf(%d年是闰年 n,x); else printf(%d年不是闰年 n,x); 10. 编写程序,在屏幕上打印输出下列图形。1 # include 222 void main()33333 4444444 for (int i=1;i=9

33、;i+) /一共有 9 行循环555555555 66666666666 for(int j=1;j=9-i;j+)7777777777777 printf( ); /每一行输出 9-i个空格888888888888888 for ( int k=1;k=2*i-1;k+)99999999999999999 printf(%d,i); / 每一行再输出2*i-1个数printf(n); /而输出的这个数就是行所对应的数 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 1

34、4 页 - - - - - - - - - 14 11. 输出所有“水仙花数” ,所谓“水仙花数”是指一个3 位数,其各位数字立方和等于其本身。例如: 153 是“水仙花数” ,因为 153=13+53+33# include # include void main() int a,b,c,i; double x; for(i=100;i1000;i+) a=i/100; b=(i-a*100)/10; c=i-a*100-b*10; x=pow(a,3)+pow(b,3)+pow(c,3); if(x=i) printf(%dn,i); 12.编写程序,输入三角形三条边的边长,求三角形的面积。#include # include void main( ) float a,b,c; double s,t; printf(请输入三角形三边:); scanf(%f %f %f,&a,&b,&c); if(a+b)=c)|(a+c)=b)|(b+c)0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁