朱昌杰C语言程序设计课本习题解答.doc

上传人:豆**** 文档编号:23856493 上传时间:2022-07-02 格式:DOC 页数:33 大小:297.50KB
返回 下载 相关 举报
朱昌杰C语言程序设计课本习题解答.doc_第1页
第1页 / 共33页
朱昌杰C语言程序设计课本习题解答.doc_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《朱昌杰C语言程序设计课本习题解答.doc》由会员分享,可在线阅读,更多相关《朱昌杰C语言程序设计课本习题解答.doc(33页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流朱昌杰C语言程序设计课本习题解答.精品文档.习题1一选择题(1)以下叙述正确的是( )A. 计算机不仅能执行机器语言程序,也可以直接执行其它高级语言编写的程序B. 汇编语言是一种面向机器的低级语言,所以计算机可以直接执行用汇编语言编写的源程序C. 高级语言是与自然语言或数学语言相近的计算机语言,用高级语言编写的源程序计算机都不能直接执行D. 用高级语言编写的源程序只能经过解释程序边解释边执行(2)以下不正确的概念是( )A. 一个C程序必须包含一个main函数B. 一个C程序可以只有一个语句C. 一个C程序可以由一个或多个函数组成D. 一个C

2、语言函数可以没有任何可执行语句(3)在C语言程序中( )。A. main函数必须放在程序最前头B. main函数必须放在程序最后C. main函数必须放在所有函数之前D. main函数可以放在程序任何允许放置函数的位置(4)以下C语言源程序的书写格式不正确的是( )A. 正确的函数首部,其后必须加上分号B. 分号是语句的一部分C. 一行上可以书写多条语句D. 一个语句可以写在多行之上(5)以下不正确的叙述是( )A. 一个#include命令只能指定一个被包含文件B. 一个#include命令可以指定多个被包含文件C. 在#include命令中,文件名可以用尖括号或双引号括起来D. 一个C程序

3、中,可以使用多个#include文件包含命令二填空题(1)计算机程序设计语言分为 语言、 语言和 语言。(2)正确的算法应具有五个重要的特征是: , , , , 。(3)算法的表示方法主要有 、 、 、自然语言和 语言等。(4)程序设计方法主要分为 程序设计方法和 程序设计方法。(5)语言的函数一般由 和 两部分组成。(6)注释部分从 开始,以 结束。(7)任何C程序的执行都是从 函数开始。(8)函数体一般包括 部分和 部分。(9)一个C语言程序由若干个函数组成,其中必须有一个 函数。三编程题(1)上机运行本章例题,熟悉所用C语言系统(如:Turbo C/C+和Visual C+ 6.0等)的

4、上机方法与步骤。(2)参照本章例题编写一个C语言程序,并上机运行,要求输出一下信息: Hello,World!【参考答案】一选择题 (1) C (2) B (3) D (4) A (5) B二填空题 (1) 机器语言、汇编语言、高级语言 (2) 有穷性、确定性、有效性、输入、输出。(3) 传统流程图、N-S图、伪代码、计算机程序 (4) 面向过程、面向对象(5) 函数首部、函数体 (6) /* 、*/ (7) main (8) 声明、执行 (9) main三编程题(1) 例1.3 输出一行信息,内容为:This is my first C program./* exa1-3.c */#incl

5、ude void main()printf(This is my first C program.n);例1.4 键盘输入两个整数,求两个整数中的较大者。/* exa1-4.c */#include stdio.h /* 头文件 */void main() /* 主函数 */int max(int x,int y); /* 对被调用函数max的声明 */int a,b,c; /* 定义三个整型变量a,b,c */printf(Please input two integers a,b: ); /* 提示输入 */scanf(%d,%d,&a,&b); /* 键盘输入变量a和b的值 */c=ma

6、x(a,b); /* 调用max函数,将函数返回值赋值给变量c */printf(max=%dn,c); /* 输出c的值 */int max(int x,int y) /* 定义整型函数max,其两个形式参数x,y也为整型 */int z; /* 函数max的声明部分 */if(xy) z=x; /* 如果xy,将x赋值给z */else z=y; /* 否则,将y赋值给z */return(z); /* 将z的值返回给调用函数的位置 */(2)解答:/* exe1-3-2.c */#include void main()printf(*n);printf( Hello,World!n);p

7、rintf(*n);习题2一选择题(1)以下哪一个可以作为正确的变量名( )。AforB$abcC3*xD_file(2)以下哪一个不是正确的C语言常量( )。A0x2acB3.25e-8C800D0486(3)以下哪一个是合法的C语言实型常量( )。A3E2.5BE6C2A8D218(4)以下哪一个整型常数值最大( )。A35B035C0x35D50(5)以下不是字符型常量的是( )。AmBnC115Dx8c(6)以下哪一个字符与其他3个字符不相等( )。AaBACX41D101(7)以下哪一个是C语言合法的字符串常量( )。AI am a student.B中国ChelloD$abc$(8

8、)C语言中short型整数占2个字节,则unsigned short型数据的其值范围是:( )。A065535B065536C3276832767D6553565535(9)在C语言中,数字018是一个( )。A十进制数B八进制数C十六进制数D非法数(10)在C语言中,不同数据类型占用内存的字节长度是( )。A相同的B与编译环境有关的C任意的D由用户自己定义的(11)以下哪一个不是C语言中的数据类型( )。A实型B浮点型C空类型D关系型(12)以下哪一个是C语言中的数据类型( )。A集合型B双精度型C复数型D逻辑型二、填空题(1)C语言的常量分为:_常量、_常量、_常量、_常量和_常量。(2)

9、 C语言中的整型数据有三种表示方法,分别是:_进制、_进制和_进制。(3)C语言规定,变量必须_定义,_使用。(4)C语言中,sizeof( )是分别是测定某种类型数据所占存储空间长度的_。(5)C语言中,运算符的结合性有两种:左结合和右结合,左结合是_计算,右结合是_计算。(6)C语言中,+i是先_,后_;i-是先_,后_。(7)赋值运算符比逗号运算符的优先级别_。(8)_运算符的优先级别最低,级别为15。(9)C语言的类型转换有三种方式:_类型转换、_类型转换和_类型转换。三、计算与编程题(1)给出下列公式的C语言表达式。 y=ax+bx+c y=ax+bcx+d 3.25108+(b4a

10、c)-x-y y=1/2+2/3+(x+y)/(a+b) 求表达式3*2+4.0/515%4+(5*8/9+4)%51/2+1.0/2的值。(2)上机运行本章例题,熟悉所用C语言编译系统的使用。(3)用运算符sizeof( )测试以下数据类型在内存中所占空间的大小:char、unsigned char、int、short、long、unsigned、unsigned short、unsigned long、float、double、long double,输出时一行输出一种数据类型的内存字节大小,并给出清晰的提示信息。【参考答案】一选择题(1) D (2) D (3) D (4) C (5)

11、B (6) A(7) B (8) B (9) D (10) B (11) D (12) B二填空题(1) 字符、整型、实型、字符串、符号(2) 十、八、十六(3) 先、后(4) 运算符(5) 从左到右、从右到左(6) 加1、引用、引用、减1(7) 高(8) 逗号(9) 自动、赋值、强制三、计算与编程题 (1) y=a*x*x+b*x+c y=(a*x+b)/(c*x+d) 3.25e8+sqrt(b*b-4*a*c)-x*x-y*y*y y=1.0/2+2/3.0+x*x/(a*a)+y*y/(b*b) 7.3(2) 略(3) /* exe2-3-3.c */#include int main

12、() printf(char: %d bytesn,sizeof(char); printf(unsigned char: %d bytesn,sizeof(unsigned char); printf(int: %d bytesn,sizeof(int); printf(short: %d bytesn,sizeof(short); printf(long: %d bytesn,sizeof(long); printf(unsigned: %d bytesn,sizeof(unsigned); printf(unsigned short: %d bytesn,sizeof(unsigned

13、short); printf(unsigned long: %d bytesn,sizeof(unsigned long); printf(float: %d bytesn,sizeof(float); printf(double: %d bytesn,sizeof(double); printf(long double: %d bytesn,sizeof(long double);习 题 3一选择题(1)若有定义:double a=22;int i=0,k=18;,则不符合语言规定的赋值语句是( ). a=a+,i+; . i=(a)=(ik);. i=%11; . i=!a; (2) 若有

14、定义:int x,y; char a,b,c; 并有以下输入数据(此处,代表换行符)1 2A B C则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是()A. scanf(x=%dy=%d,&x,&y);a=getchar();b=getchar();c=getchar();B. scanf(%dy%d,&x,&y);a=getchar();b=getchar();c=getchar();C. scanf(%d%d%c%c%c%c%c%c,&x,&y,&a,&a,&b,&b,&c,&c);D. scanf(%d%d%c%c%c,&x,&y,&a,&b,&c)

15、;(3)若有定义:int a,b;,通过语句scanf(“%d;%d”,&a,&b);,能把整数3赋给变量a,5付给变量b的输入数据是()A. 3 5 B. 3,5 C. 3;5 D. 35(4)若有定义语句:int k1=10,k2=20;,执行表达式(k1=k1k2)&(k2=k2k1)后,k1和k2的值分别为()A. 0和1 B. 0和20 C. 10和1 D. 10和20(5)以下不能输出字符A的语句是()(注:字符A的ASCII码值为65,字符a的ASCII码值为97)A.printf(“%cn”,A-32) B.printf(“%dn”,A); C.printf(“%cn”,65)

16、; D.printf(“%cn”,B-1);二填空题(1) 有以下程序(说明:字符0的ASCII码值为48)#includemain() char c1,c2;scanf(%d,&c1);c2=c1+9;printf(%c%cn,c1,c2); 若程序运行时从键盘输入48,则输出结果为_。(2) 以下程序的输出结果为:_。 main( ) float a=3.14, b=3.14159; printf(%f, %5.3fn,a,b); (3) 编制程序对实数a与b进行加,减,乘,除计算,要求显示如下结果。jia=70.000000jian=30.000000cheng=1000.000000c

17、hu=2.5000000程序:#includevoid main(void) (1) a=50.0;b=20.0;printf(jia=%fn, (2) );printf(jian=%fn ,(3) );printf(cheng=%fn,(4) );printf(chu=%fn, (5) );将缺少的部分填在空白处。(4)下列程序的输出结果是_。#includemain()char a;a=A;printf(%d%c,a,a); (5)分析下面程序main()int x=2,y,z;x*=3+2;printf(%dn,x);x*=y=z=4;printf(%dn,x);x=y=1;z=x+-1

18、;printf(%d,%dn,x,z);z+=-x+ +(+y);printf(%d,%d,x,z); 程序的输出结果是_。三编程题(1) 从键盘上输入一个大写字母,要求改用小写字母输出。(2) 请编写一个程序,能显示出以下两行文字。I am a student.I love China.【参考答案】一选择题(1) C (2) C (3)A (4) B (5) B 二填空题(1)09 (2)3.140000, 3.142double a,b a+b a-b a*b a/b(4)65A (5) 10 40 2.0 3.0三、编程题(1) #includevoid main()char c;sca

19、nf(%c, &c);if (c=A)&(c=Z)printf(%cn, c+a-A);elseprintf(输入的不是大写字母n);(2)#includevoid main()printf(I am a student.nI love China.n);习 题4一选择题 (1)以下程序段:int i,a=3,b=2;i=(-a=b+)?-a:+b;printf(i=%d a=%d b=%d,i,a,b);输出结果是 。)i=1 a=1b=3 )i=3 a=2 b=3)i=4 a=1b=4 )i=4 a=2 b=4(2)若是数值类型,则逻辑表达式(a1)(a!)的值是 。)1 )0 )2 )不

20、知道a的值,不能确定(3)能正确表示x的取值范围在0,100和-10,-5内的表达式是 。A)(x=-5)&(x=100)B)(x=-10)&(x=0)&(x=-10)&(x=0)&(x=100)D)(x=-5)&(x=100)(4)以下程序的运行结果是 。main( )int c,x,y; x=1; y=1; c=0; c=x+|y+; printf(“n%d%d%dn”,x,y,c);A)110 B)211 C)011 D)001(5)两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 。main( ) int x; scanf(“%d”,&x); if(x+5) printf(

21、“%d”,x); else printf(“%dn”,x-);A)7和5 B)6和3 C)7和4 D)6和4(6)写出下面程序的执行结果 。main( )int x,y=1; if(y!=0) x=5; printf(“%dt”,x); if(y= =0) x=3;else x=5;printf(“%dtn”,x);A)1 3 B)1 5 C)5 3 D)5 5(7)写出下面程序的执行结果 。main()int x=1,y=1,z=0;if(z0) x=3;else x=5;printf(%dt,x);if(z=y0) x=3;else if(y= =0 ) x=5;else x=7;prin

22、tf(%dt,x);printf(%dt,z);A)1 7 0 B)3 7 0 C)5 5 0 D)1 5 1(8)假定所有变量均已正确说明,下列程序段运行后x的值是 。a=b=c=0;x=35;if(!a) x=-1;else if(b);if(c) x=3;else x=4;A)34 B)4 C)35 D)3(9)以下选项中与if(a=1)a=b;else a+;语句功能不同的switch语句是 。)switch(a)case:ab; break; default:a+;)switch(a=1)case 0:ab; break;case 1:a+;)switch(a)default:a+;

23、break;case:ab;)switch(a=1)case 1:a=b;break;case 0:a+;(10)有如下嵌套的语句if(ab)if(ac) k=a;else k=c;if(bc) k=b;else k=c;以下选项中与上述if语句等价的语句是 。)k=(ab)?a:b;k=(bc)?b:c;)k=(ab)?(bc)?a:b)(bc)?b:c);)k=(ab)?(ac)?a:c)(bc)?b:c);)k=(ab)?a:b;k=(ac)?a:c;(11)有以下程序#includemain()int a=1,b=0;if(-a) b+;else if(a=0) b+=2;else b

24、+=3;printf(“%dn”,b); 程序运行后的输出结果是 。)0 )1 )2 )3(12)下列条件语句中输出结果与其他语句不同的是 。)if(a) printf(“%dn”,x); else printf(“%dn”,y);B)if(a=0) printf(“%dn”,y); else printf(“%dn”,x);C)if(a!=0) printf(“%dn”,x); else printf(“%dn”,y);D)if(a=0) printf(“%dn”,x); else printf(“%dn”,y);(13) 以下选项中与if(a=1)a=b; else a+;语句功能不同的s

25、witch语句是 。)switch(a) case 1:a=b;break; default:a+; B)switch(a=1) case 0:a=b;break;case 1:a+; C)switch(a) default:a+;break;case 1:a=b;D)switch(a=1) case 1:a=b;break; case 0:a+;(14) 有以下程序#include main() int a; scanf(%d ,&a); if(a+9) printf(%dn,a); else printf(%dn,a); 程序运行时从键盘输入9,则输出的结果是 。A)10 B)11 C)9

26、 D)8(15) 已知 int x=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为: 。 if (xy|xz) z=x; x=y; y=z;A)x=50, y=80, z=80 B)x=50, y=30, z=30C)x=30, y=50, z=80 D)x=80, y=30, z=50二填空题 (1)以下程序运行的输出结果是 。main() int p=30;printf(%dn,(p/320?p/10:p%3); (2) 有以下程序#includemain()int a=1,b=2,c=3,d=0;if(a=1)if(b!=2)if(c=3) d=1;else d=2;e

27、lse if(c!=3) d=3;else d=4;else d=5;printf(“%dn”,d); 程序运行后的输出结果是 。(3) 有以下程序#includemain() int x;scanf(%d,&x);if(x15) printf(%d,x-5);if(x10) printf(%d,x);if(x5) printf(%dn,x+5); 若程序运行时从键盘输入12,则输出结果为 。(4)以下两条if语句可合并成一条if语句为 。、if(ab) printf(* * * * y=%dn,y);else printf(# # # # x=%dn,x);(5)输入一个字符,如果是大写字母

28、,则把其变成小写字母;如果是小写字母,则变成大写字母;其它字符不变。请在( )内填入缺省的内容。 main( ) char ch; scanf(“%c”,&ch); if (_) ch=ch+32; else if(ch=a&ch=z) (_);printf(”%cn”,ch); 三编程题1编写一个程序,要求有键盘输入三个数,计算以这三个数为边长的三角形的面积。2输入圆的的半径r和一个整型数k,当k=1时,计算圆的面积;但k=2时,计算圆的周长,当k=3时,既要求求圆的周长也要求出圆的面积。编程实现以上功能。3. 编写程序,判断某一年是否是闰年。4. 有一函数,其函数关系如下,试编程求对应于每

29、一自变量的函数值。 x2 (x0) y = -0.5x+10 (0x10) x- (x10)【参考答案】一选择题(1) A (2) A (3) B (4) B (5) A (6) D (7) A (8) B (9) B (10) C(11)C (12) D (13) B (14) A (15) A 二填空题(1) 0(2) 4(3) 1217(4) if(a=b) x=1; printf(# # # # x=%dn,x); else y=2; printf(* * * * y=%dn,y); A=ch & ch=Zch=ch-32编程题1 #include#includeint main()f

30、loat a,b,c,z,n,s;printf(请输入三角形边长:a,b,c:);scanf(%f %f %f,&a,&b,&c);if(a+b=c)/fabs为求浮点数绝对值函数printf(您输入的三角形边长有误);elsez=a+b+c;n=z/2;s=sqrt(n*(n-a)*(n-b)*(n-c);/sqart为平方根函数printf(三角形面积是 %fn:,s);2 #include #define PI 3.14int main() float r;int k;printf(请输入半径r: n);scanf(%f,&r);printf(请输入处理要求n 1. 计算圆的面积 n 2

31、. 计算圆的周长n 3. 计算圆的周长和圆的面积 n);scanf(%d,&k);switch(k) case 1: printf(圆的面积为: %fn,PI*r*r); break; case 2: printf(圆的周长为: %fn,2*PI*r); break; case 3: printf(圆的面积为: %fn,PI*r*r); printf(圆的周长为: %fn,2*PI*r); break; default: printf(错误要求! n); break;3 #include void main() int year,result=0; printf(输入一个年份:n); scan

32、f(%d,&year); if(year%100=0)if(year%400=0)printf(n%d是闰年n,year);elseprintf(n%d不是闰年n,year);else if(year%4=0)printf(n%d是闰年n,year); 4 #include #include void main() float x,y;printf(输入x: );scanf(%f,&x);if(x=0&x=10)printf(y=%.2fn,x-sqrt(x);习题5一、选择题(1)当执行以下程序段时,程序的执行情况是()。 x=-1; do x=x*x; while( !x);A循环体将执行

33、一次 B循环体将执行两次C循环体将执行无限次 D系统将提示有语法错误(2)C语言中while 和do-while 循环的主要区别是()。Ado-while 的循环体不能是复合语句Bwhile 的循环控制条件比do-while 的循环控制条件严格Cdo-while 允许从外部转到循环体内Ddo-while的循环体至少无条件执行一次(3)若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是()。 for (i=5;i;i-) for (j=0;j4;j+).A25 B20C24 D30(4)以下程序的输出结果是()。#include void main( ) int a,b; for

34、(a=1,b=1;a=10) break; if (b%5=1) b+=5; continue; printf(%dn,a); A101B6 C4 D3二、填空题(1)以下程序段输出的结果是【1】 。#include void main()int x=3;do printf(%3d,x-=2); while(!(-x);(2)以下程序输出结果是【2】 。#include void main() int i, sum=0; for(i=1; i6; i+)sum+=i; printf(%dn,sum);(3)以下程序输出的结果是【3】 。#include void main() int x, i

35、;for(i=1; i=100; i+) x=i;if(+x%2=0)if(+x%3=0)if(+x%7=0)printf(%dn,x);printf(“n”);(4)以下程序的运行结果是【4】 。#include void main()int i=1,s=3;dos+=i+;if (s%7=0)continue;else+i; while (s15);printf(%dn,i);(5)以下程序的运行结果是【5】 。#include void main() int i,j; for (i=4;i=1;i-) printf(*); for (j=1;j=4-i;j+) printf(*); printf(n);三、编程题1求两个整数m和n的最大公约数和最小公倍数。2打印输出10以内加法口诀表。3输出所有的“水仙花数”,所谓的水仙花数是指一个3位数,其个位数字立方和等于该数本身。例如153是一个水仙花数,因为153=13+53+33。4求1+3+5+7+99的和。5输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。6输出以下图案:7求Fibonacci数列前20个数,这个数列的特点:第

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

当前位置:首页 > 教育专区 > 小学资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com