[理学]c语言综合复习题1答案新.doc

上传人:sccc 文档编号:4543609 上传时间:2023-04-27 格式:DOC 页数:35 大小:166.39KB
返回 下载 相关 举报
[理学]c语言综合复习题1答案新.doc_第1页
第1页 / 共35页
[理学]c语言综合复习题1答案新.doc_第2页
第2页 / 共35页
[理学]c语言综合复习题1答案新.doc_第3页
第3页 / 共35页
[理学]c语言综合复习题1答案新.doc_第4页
第4页 / 共35页
[理学]c语言综合复习题1答案新.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《[理学]c语言综合复习题1答案新.doc》由会员分享,可在线阅读,更多相关《[理学]c语言综合复习题1答案新.doc(35页珍藏版)》请在三一办公上搜索。

1、C语言程序设计习题第1章 C语言概述1-1.编写一个C程序,在DOS屏幕输出以下字符串: This is my first C !答案:#include “stdio.h”void main()阿嫂 printf(“This if my first C”);1-2.请根据自己的认识,写出C语言的主要特点。1-3.写出一个C程序的构成。头文件引用区全局变量定义区宏语句区函数(自定义)声明区main() 局部变量(包括数组、指针、结构体等变量)定义区 程序语句区,其中没对花括号的起始位置还可以定义局部变量。函数定义区1-4.C语言用途是什么?它和其他高级语言有什么异同?1-5.上机运行本章所有例题

2、,熟悉所有系统的上机方法与步骤。第2章 数据类型与表达式2-1.选择题1C语言中的数据的基本类型包括()。A)整型、实型、字符型和逻辑型B)整型、实型、字符型和结构体C)整型、实型、字符型和枚举型D)整型、实型、字符型和指针型C2C语言中能用八进制表示的数据类型是()。A)字符型、整型B)整型、实型C)字符型、实型、双精度型D)字符型、整型、实型、双精度型A3下列变量名中合法的是()。A)B.C.TomB)3a6bC)_6a7bD)$BCC4.下列属于合法的语言字符常数是()。A)97B)AC)tD)0A5下列算术运算符中,只能用于整型数据的是()。A)-B)+C)/D)%D6以下叙述中正确的

3、是()。)输入项可以是一个实型常量,如:scanf(%f,3.5)。)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf(a=%d,b=%d)。C)当输入一个实型数据时,格式控制部分可以规定小数点后的倍数,例如:scanf(%4.2f,&d)。D)当输入数据时,必须指明变量地址,例如:scanf(%f,&f)。D7若有以下程序段:int c1=2,c2=4,c3;c3=1.0/c2*c1;则执行后,c3中的值是()。A)0B)C)D)A8设x、y、z和k都是int型变量,则执行表达式:x=(y=52,z=26,k=32)后,x的值为()。A)4B)26C)32D)52C9以下程

4、序的输出结果是()。main( ) int a=12,b=12; printf(%d%dn,-a,+b);A)10 11B)11 13C)11 10D)11 12B10若有以下定义和语句:int y=10;y+=y-=y-y;则y的值是()。A)10B)20)30D)40B11有变量说明语句int a,b,c;,顺序执行下面语句:a=b=c=1;+a|+b&+c;那么,变量b的值应是()。A)2B)1C)0D)3B12设x,y,z均为int型变量,则执行以下语句后,x,y,z的值为()。x=1;y=0;z=2;y+&+z|+x;A)2,1,3B)2,0,3)2,1,3)2,1,2D13已知字母

5、A的ASCII码值为65,执行下面的程序:#includemain() char c1=B,c2=Y;printf(%d,%dn,+c1,-c2);则输出结果是()。A)66,89B)67,88C)B,YD)C,XB14以下程序中c的二进制值是( )。char a=3,b=6,c;c=abb?*a=%d:#b=%d,a,b);A)输出控制格式错误)*a=2)#b=2)#b=3C2-2.填空题1有表达式2020&x2)/(y1)的值是()。4请写出以下数学式的C语言表达式()。5若有以下定义:char a;unsigned int b;float c;double d;则表达式a*b+d-c值的

6、数据类型为(double)。6以下程序的输出结果是( 10,11)。main() int x=10,y=10; printf(%d,%d,x-,+y);7执行下列程序时输入:1 2 3456789,输出结果是(1,2,3456789)。main() char s100; int c,i scanf(%c,&c); scanf(%d,&i); scanf()%s,&s); printf(%c,%d,%sn,c,i,s); 2-3.程序题1写出以下程序的运行结果:e、t的ascii码值为101、116main() char c1=a,c2=b,c3=c,c4=101,c5=116;printf(a

7、%cb%ctc%ctabcn,c1,c2,c3);printf(tb%c%c,c4,c5);结果为:aabb cc abcAN2写出以下程序的运行结果:main() int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(%d,%d,%d,%d,i,j,m,n);结果为:9,11,9,103将College译成密码。密码规律:用原来的字母后面第2个字母代替原来的字母,例如,字母A后面第个字母是C,用C代替A。因此,College应译为Eqnngig。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5、c6、c7七个变量的值分别为 C、o、l、l、e、g、e。经过运算,

8、使c1、c2、c3、c4、c5、c6、c7分别变为、q、n、n、g、i、g输出。方法一:完全符合原题要求#include stdio.hvoid main() char c1,c2,c3,c4,c5,c6,c7; c1=C; c2=o; c3=l; c4=l; c5=e; c6=g; c7=e; c1+=2; c2+=2; c3+=2; c4+=2; c5+=2; c6+=2; c7+=2; printf(%c%c%c%c%c%c%c,c1,c2,c3,c4,c5,c6,c7); 方法二:用字符数组(因本章未学字符数组和循环,故不符合题意,但结果是一样的)#include stdio.hvoi

9、d main() char c=College; int i; for(i=0;i7;i+) ci+=2; printf(%s,c);4编写程序,它接受键盘上输入的一个小写字母,然后将其转换大写字母输出。例如,输入a,输出A。程序如下:#include stdio.hvoid main() char c; printf(请输入一个小写字母); c=getchar()-32; /c=getchar()-u+U; printf(转成大写字母); putchar(c);第3章 顺序结构程序设计3-1.选择题1若以下选项中的变量已正确定义,则正确的赋值语句是( )A)x1=26.8%3; B)1+2=

10、x2; C)x3=0x12; D)x4=1+2=3;C2设x,y均为float型变量,则以下不合法的赋值语句是( )A)+x; B)y=(x%2)/10; C)x*=y+8; D)x=y=0;B3已知ch是字符型变量,下边正确的赋值语句是( ) A) ch=123; B)ch=xff; C)ch=08; D) ch=;B4若int a, b; scanf(%d%d, &a, &b); 不可以用( )作为输入的分隔符。A), B)空格 C)回车 D)TAB键A5阅读以下程序,当输入数据的形式是:25,13,10,正确的输出结果是( )。 main() int x,y,z; scanf(%d%d%

11、d,&x,&y,&z); printf(x+y+z=%d,x+y+z);A) x+y+z=48 B)x+y+z=35 C)x+z=35 D)不确定值D3-2.填空题1. 以下程序的输出结果是_。main() int a=1124; double x=30.1415; printf(a=%+6d,a=%-6d,x=%f,x=%7.3f,a,a,x,x);a= +1124,a=1124 ,x=30.141500,x=30.1422以下程序的输出结果是_。 main() int x=10;float y=26.75; printf(%f,x+y);36.7500003若x为int型变量,则执行以下语

12、句后x的值是_。 x=7; x+=x-=x+x; -144.有以下语句段 int n1=10,n2=20; printf(_,n1.n2);要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。n1=10n2=20答案是:n1=%dnn2=%d5.已知字符A的ACSII码值为65,以下语句的输出结果是_。 char ch=B;printf(%c %dn,ch,ch);B 663-3.编程题1.编程序,用getchar 函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出这两个字符。并思考以下问题:(1)变量c1,c2应定义为字符型或整型?还是二者皆可?(2

13、)要求输出c1和c2的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整型变量和字符型变量是否在任何情况下都可以互相代替?#include stdio.hvoid main() char c1,c2; c1=getchar(); c2=getchar(); putchar(c1); printf(%c,c2); 2.设正方型的长a=3.12,宽b=5.36,求正方型周长,正方型面积。用scanf 输入数据,用printf输出计算结果,输出时要求有文字说明,取小数点后两位数字。#include stdio.hvoid main() float a,b,c,s; prin

14、tf(输入长和宽); scanf(%f%f,&a,&b); c=2*(a+b); s=a*b; printf(周长=%8.2ft面积=%8.2f,c,s);运行结果:周长=16.96 面积=16.723指出以下程序的错误并改正,并上机把程序调通。main() int a; scanf(%f, a); printf(a=%f , a); char c; c=A; printf(%f ,c) 改正后:main() int a; char c; scanf(%d, &a); printf(a=%d , a); c=A; printf(%c ,c); 第4章 选择结构程序设计4-1.编写电子词典主控程

15、序,假定电子词典具有单词查询、增加词条、修改词条、删除词条等功能项,每个功能项暂用空语句代替或用printf()函数输出一些提示信息。#includemain() int n; char c; while(1) printf(nt*); printf(nt* 1.单词查询 *); printf(nt* 2.增加词条 *); printf(nt* 3.修改词条 *); printf(nt* 4.删除词条 *); printf(nt* 0.退 出 *); printf(nt*); printf(nt请选择:); scanf(%d,&n); if(n=1) printf(单词查询-); else i

16、f(n=2) printf(增加词条-); else if(n=3) printf(修改词条-); else if(n=4) printf(删除词条-); else if(n=0) printf(退出); break; else printf(选择错误,请重新选择); 4-2.屏幕功能选择。输入任意数字,将所选择的字符串打印出来。程序功能:模拟自动饮料机,按下合法按钮,可获得相应饮料。4-3.求分段函数y=f(x),f(x)的表达式如下: x2-1 (x1)#include stdio.hvoid main() float x,y; printf(请输入x的值:); scanf(%f,&x);

17、 if(x=-1&x3) price=7+2.1*(s-3); else price=7;else if(type=2) if(s3) price=8+2.4*(s-3); else price=8;else if(type=3) if(s3) price=9+2.7*(s-3); else price=9;else printf(车型输入错误!);printf(出租车价格=%8.2f,price);4-5.现在是网络信息时代,很多市民通过电话上网。目前南京电信局的上网收费和付费方式分以下几类(以月为单位);(a)保月服务:小于30小时,60元/月,超过30小时的部分按5分/分钟累计(包括电话

18、费),每月随电话费收费。(b)990用户:10分/分钟(包括电话费)。每月随电话费收费。(c)169用户:上网信息费7分/分钟,电话费21分/3分钟(不足3分钟按3分钟计),每月到电信局以现金方式收费或用卡付费。由键盘输入用户类别和上网时间,输出应付费用及相应的付费方式。#include stdio.hvoid main()#include stdio.hvoid main()int type,time1,time3,price;printf(请输入电信缴费类型(1、保月服务 2、990用户 3、169用户):);scanf(%d,&type);printf(上网时间(分钟):);scanf(

19、%d,&time1);if(type=1) if(time130) price=60+5*(time1-30); else price=60;else if(type=2) price=10*time1;else if(type=3) printf(请输入通话时长(分钟); scanf(%d,&time3); price=7*time1+21*(time3/3);else printf(电信缴费用户类型输入错误!);printf(电信缴费总额=%d,price); 第5章 循环结构程序设计5-1.分析下面程序的运行结果(1) main() int i; for(i=1;i=20;i+) if(

20、i%3=0) printf(%dn,i); 结果为:369121518(2) main() int i,sum=0; for(i=0;i3;+i) printf(%d sum=%dn,i,sum+=i); 结果为:0 sum=01 sum=12 sum=3(3) main() int i=0,j=1; do j+=i+; while(i4); printf(%dn,i); 结果为:4(4) main() int i; for(i=1;i=5;i+) printf(#%*dn,i,i); 结果为:#1# 2# 3# 4# 5(5) main() int x=1,total=0,y; while(

21、x=10) y=x*x; printf(%dn,y) total+=y; +x; printf(total is %dn,total); 结果为:149162536496481100total is 385(6) main() int i=3; while(i10) if(i6) i+=2; continue; else printf(i=%d,+i); 结果为:i=8i=9i=105-2. 打印输出个位数为6并且能被3整除的所有的5位数。要求用while、dowhile、 for语句分别实现。答案为:For语句#include stdio.hvoid main()int i;for(i=10

22、006;i=a & ci=A&ci=0&ci=9) sumnum+=1; else if(ci= ) sumspace+=1; else sumother+=1;printf(n字符有%d个,数字有%d个,空格有%d个,其它有%d个。,sumchar,sumnum,sumspace,sumother); 5-4. 计算e的近似值:(设n=10)提示:编程时要注意1/2与1.0/2的区别。答案为:#include stdio.hvoid main()int i=1;float n=1,s=1;for(i=1;i=10;i+)n=n*i;s=s+1/n;printf(ne的近似值=%f,s); 5

23、-5. 编程求的值5-6. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如:153是一水仙花数,因为153=1的立方+5的立方+3的立方。答案是:#include stdio.hvoid main()int i,n1,n2,n3;for(i=100;i=1000;i+)n1=i/100%10;n2=i/10%10;n3=i%10;if(n1*n1*n1+n2*n2*n2+n3*n3*n3)=i) printf(%d是水仙花数t,i);5-7. 一个数如果恰好等于它的因子之和,这个数就是“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是

24、“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子: 6 its factors are 1,2,3答案是:#include stdio.hvoid main()int i,j,k,s,a999;for(i=2;i=1000;i+) s=0; for(j=1;ji;j+) if(i%j=0) s+=j; if(s=i) s=0; printf(n%d its factors are ,i); for(j=1;ji;j+) if(i%j=0) s+=j; if(s!=i) printf(%d,j); else printf(%d,j); 5-8. 打印出如下形式的两种图案。 (1

25、) * (2) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *答案是:(1)#include stdio.hvoid main()int i,j;for(i=1;i=6;i+) printf(n); for(j=1;j=1;i-) printf(n); for(j=1;j=i;j+) printf(* ); 5-9. 一球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?答案是:#include stdio.hvo

26、id main() float h=100,s=0; int i; for(i=1;i=10;i+) s+=h; /此语句有问题 h=h/2; printf(小球第10次落地时共经过%f米,第10次反弹高度为%f,s,h); 5-10. 求之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。答案是:#include stdio.hvoid main() long int a,n,s=0; int i,k=1; printf(请输入a和n的值:); scanf(%d%d,&a,&n); k=a; s=a; for(i=2;i=n;i+) k=k*10

27、+a; s+=k; printf(n+nn+nnn+nnnn+.的值为%ld,s); 第6章 数组6-1. 选择题1.以下关于数组的描述正确的是())数组的大小是固定的,但可以有不同的类型的数组元素)数组的大小是可变的,但所有数组元素的类型必须相同)数组的大小是固定的,所有数组元素的类型必须相同)数组的大小是可变的,可以有不同的类型的数组元素B.以下定义数组的语句中正确的是() )int a(10); )char str ; )int n=5; )#define size 10 int a4n; char str1size,str2size+2;D3.在定义int a;之后,对a的引用正确的是

28、()A)a10 B)a6.3 C)a(6) D)a10-10D4.当调用函数时,实参是一个数组名,则向函数传送的是())数组的长度 )数组的首地址)数组每一个元素的地址 )数组每个元素中的值B5.以下只有在使用时才为该类型变量分配内存的存储类说明是())auto 和 static B) auto和register)register和static D) extern和 register6.执行下列程序时输入:空格空格回车,输出结果是()), ),), ),main( ) char s100;int c, i; scanf(%c,&c); scanf(%d,&i); scanf(%s,s); pr

29、intf(%c ,%d, %sn, c, i ,s); D 7.执行下面的程序段后,变量k中的值为())不定值 )33 )30 )10 int k=3,s2; s0=k;k=s1*10;A8.下列程序执行后的输出结果是())you&me B)you C)me D)err main( ) char arr24; strcpy(arr,you); strcpy(arr1,me); arr03=&; printf(%sn,arr); A9. 定义如下变量和数组: int i; int x33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是() for(i=0;i3;i+) printf(

30、%d,xi2-i);A)159 B)147 C)357 D)369C6-2.编程题有一个数组,内放10个整数,要求找出最小的数和它的下标。然后把它和数组中最前面的元素对换位置。答案是:#include stdio.hmain( ) int a10=12,22,3,5,66,7,16,8,1,11; int i,k,t; t=a0; for(i=0;i10;i+) if(ait) t=ai; k=i; ak=a0; a0=t; for(i=0;i10;i+) printf(%dt,ai);2.打印出以下的杨辉三角形(要求打印行). . .答案是:#include stdio.hvoid main() int i,j,a1010=1; for(i=0;i9;i+) printf(n); ai+10=1; for(j=0;j=i;j+) ai+1j+1=a

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号