ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:38.73KB ,
资源ID:2989006      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2989006.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《C语言程序设计教程》习题参考答案.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

《C语言程序设计教程》习题参考答案.docx

1、C语言程序设计教程习题参考答案C语言程序设计教程习题参考答案祝胜林 主编华南理工大学出版社【习题1】 1【习题2】 2【习题3】 3【习题4】 5【习题5】 7【习题6】 9【习题7】 11【习题8】 13【习题9】 14【习题10】 15【习题1】一、简答题(在课本中寻找答案,略)1.1 C程序的基本结构包括哪些内容?1.2 如何定义标识符?1.3 输入格式、输出格式的组成包括哪些内容?1.4 C语言函数分为哪两类?1.5 计算表达式的值应该考虑哪些方面?1.6 上机调试程序的步骤如何?二、判断并改错1.7 C程序执行的入口是main()函数,所以main函数必须放在程序的开头。错误:mai

2、n函数可以放在程序的任何位置。并不限定在程序的开头。1.8 定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。错误:不可以交叉出现,数据说明部分在执行语句部分的前面。1.9 编辑与编译不是一回事。错误:不是一回事。编辑完成源程序的输入和修改;编译是对源程序进行语法检查,如果无语法错误,则生成目标程序。1.10 scanf(%d,%d,&x,&y);的正确输入格式:3,4。正确1.11 注释内容太多会影响程序的执行效率。 错误:不会影响程序的执行效率。因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容不会编译到目标程序中。1.12 所有的数学公式可以直接出现在源程序中。错

3、误:数学公式需要转换成C语言能够接受的公式才能出现在源程序中。三、编程题1.13 在屏幕上输出自己名字的拼音。提示:中文名字叫“张三”,对应的拼音为“Zhang San”,输出用printf()函数。1.14 输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。提示:定义圆的半径r,圆的周长:2*3.14*r,输出结果保留2位小数可以用%.2f1.15 输入两个整数,输出其中最大者。提示:模仿例1.31.16 输入三个整数,输出其中最小者。提示: min(min(a,b),c); 【习题2】一、简答题(在课本中寻找答案,略)2.1 常量与变量的区别?2.2 C语言中的标识符的定义规则?

4、2.3 变量为什么要“先定义,后使用”?2.4 字符常量a与字符串常量a有何区别?2.5 大小写字母转换的规则是什么?2.6 变量的具有哪三种属性?二、单项选择题2.7C语言中,int型数据在内存中的存储形式是(D)。A)ASCII码 B)原码 C)反码 D)补码2.8下面四个选项中,均是不合法的用户标识符的选项是(C)。)BA 、x_0、do)float、1a0、_Y)x-y、goto、123)_123、tmp、CHAR2.9下列选项中不正确的常数的选项是(D)。)0x12F )-1.23E-2 )12.0 )03882.10下面正确的字符常量是(B)。)a ) )n )3762.11下面正

5、确的字符串常量是(C)。)a )376 )n )3762.12表达式A+4*25.0-b的正确结果是(B)。)67 )67.0 )不确定 )67L2.13执行printf(%x,100);后的输出结果是(C)。)100 )0x100 )0X64 )642.14int型的-1在内存中的存储形式是(A)。)1111 1111 1111 1111)0000 0000 0000 0001)1111 1111 1111 1110)1000 0000 0000 00012.15存储字符串abc376需要的字节数是(D)。)11 )13 )6 )7【习题3】一、计算题3.1 2.8+7%3*11%2/4 (

6、答案:2.8)3.2 5/2+5.0/2+7%6 (答案:5.5)3.3 a=12,a*=2+3 (答案:a=60)3.4 a=3,b=4,c=5,a+bc&b= =c (答案:0)3.5 35?3:5b)&(n=cd),计算表达式后m,n的值?(答案:m=0,n=1)3.7设int b=7;float a=2.5,c=4.7;求下面表达式的值。 a+(int)(b/2*(int)(a+c)/2)%4 (答案:4.5)二、单项选择题3.8若有代数式,则不正确的C语言表达式是(C)。A)x/b/c*y*8 B)8*x*y/b/c C)8*x*y/b*c D)x*y/c/b*83.9有如下类型说明

7、:int k,a,b;unsigned long w=8;double x=2.9则以下不符合C语言语法的表达式是(A)。)x%(-3) )w*=-2)k=(a=6,b=4,a-b) )a*=a+=a-=(b=4)*(a=3)3.10有如下类型说明: float n; int m; 则以下能实现将n中的数值保留小数点后两位,第三位四舍五入的表达式是(B)。)n=(n*100+0.5)/100.0 )m=n*100+0.5,n=m/100.0)n=n*100+0.5/100.0 )n=(n/100+0.5)*100.03.11设k=7,x=12;则下列表达式值为3的是(D)。)x%=(k%=5)

8、 )x%=(k-k%5))x%=k-k%5 )(x%=k)-(k%=5)3.12已知m=48,ch=a,n=0;则表达式(m=n&chy?1:1.5);后的输出结果是(D)。)语法错误 )1 )1.5 )1.5000003.14能表示条件0x100的表达式是(D)。)0=x=0,x=0&x=0&ch=0&ch=0|ch60?pass:fail);3.17输入一个年份y,如果是闰年,输出“y is a leap year”,否则输出“y is not a leap year.”提示:printf(%d is %s,y%4=0&y%100!=0|y%400=0?a leap year.:not a

9、 leap year.);3.18输入三条边a,b,c,如果它们能构成一个三角形,输出“Yes”,否则输出“No”。提示:printf(%s,a+bc&a+cb&b+ca?Yes:No);3.19输入三个数x,y,z,按从小到大的输出结果。提示:分别用max0,min0代表最大、最小值,mid0表示中间值。max0=(xy?x:y)z?(xy?x:y):z;max0=(xy?x:y)z?(xy?x:y):z;mid0=x+y+z-max0-min0;3.20输入一个平面上的点坐标,判断它是否落在圆心(0,0),半径为1的圆内,如果在圆内,输出“Yes”,否则输出“No”。提示:分别用x,y代表

10、平面上一个点。printf(%s,x*x+y*y=0?Yes:No);【习题4】以下的编程题目要求首先画出程序的传统流程图或N-S流程图,再编写程序代码。上机实验时再输入到计算机中进行调试,并将调试过程中出现的问题和测试情况记录下来。(流程图请读者自己参考课本自己画,略)4.1编程实现,输入一个整数,判断它是否为偶数,并显示相应的信息。提示:x代表输入的整数,if(x%2=0) printf(neven);else printf(nodd);4.2 编程实现,输入一个平面上的点,判断它是否落在单位圆上,并显示相应的信息。提示:x,y代表平面坐标,if(x*x+y*y=1) printf(nYe

11、s);else printf(nNo);4.3 编程实现,输入一个成绩等级(A-E),显示相应的百分制成绩段。 A: 90-100 B: 80-89 C: 70-79 D: 60-69 E: 60提示:char grade; if(grade=A) printf(n90-100); else if(grade=B) printf(n80-89); .4.4 写出下面程序的运行结果: #include main() int a=-1,b=1,c=5; switch(a0) case 1:switch(b-20)&(t=3)&(t1)|(t8) x=3; else x=1; else x=0;提示

12、:int t; if(t10) c=0; else c=t;switch(t) case 0: x=0;break; case 1: case 2: x=3; case 3:case 4:case 5: case 6: x=2; case 7:case 8: case 9: x=3; case 10: x=2; 4.7 编程实现一个具有简单四则运算功能的计算器。提示:参照例4.18,随机产生3个数,其中一个数用来判断是哪种运算。4.8 编程实现,输入一行字符,将其中的数字字符对应的整数值加起来并输出结果。如: a45b8&*3 则是4+5+8+3,结果为20。提示:char c; int su

13、m=0;while(c=getchar()!=n) if(c=0&c=9) sum=sum+c-0;4.9 编程实现,求的值。提示:先计算n!,再在计算阶乘的外面套上一层循环。注意:20!是一个很大的值,float s=1;int i;例如:计算6!:for(i=1;i=6;i+) s=s*i;4.10 编程实现,找出1000之内的所有完数,并按下面格式输出其因子: 6 its factors are 1,2,3, 所谓“完数”是指一个数如果恰好等于它的因子之和,因子是指能够整除该数的数。提示:先判断数是否为完数,如果是再考虑输出因子。以6为例输出因子: for(i=1;i6;i+) if(6

14、%i=0) printf(%d,i);4.11 编程实现,计算序列的前20项之和, ,.提示:这是一个累加式,每项是一个分式,用a、b分别表示分子、分母。注意:如果a、b都是整数,则是整除。float sum=0,a=2,b=1; int i;for(i-1;i0 )。二、 选择题5.6 若有int s4=1,2,3,4;,则ss0+2*s2-s3的值是( D ) A.1 B.2 C.3 D.45.7 对数组的描述正确的是( B )。 A数组一旦定义其大小是固定的,但数组元素的类型可以不同。 B数组一旦定义其大小是固定的,但数组元素的类型必须相同。 C数组一旦定义其大小是可变的,但数组元素的类

15、型可以不同。 D数组一旦定义其大小是可变的,但数组元素的类型必须相同。5.8 对字符串Boy进行完整赋值的操作是( B )。 Achar s3 = B,o,y; B. char s = Boy; Cchar s3 = Boy; D.char s3; s=Boy;5.9在c语言中引用数组元素时,其数组下标的数据类型允许是( C )。 A整型常量 B.整型表达式 C整型常量或整型表达式 D.任何类型的表达式5.10对以下说明语句的正确理解是( B )。 int a10=6,7,8,9,10; A将5个初值依次赋给a1至a5 B将5个初值依次赋给a0至a4 C将5个初值依次赋给a6至a10 D因为数

16、组长度与初值的个数不相同,所以此语句不正确三、看程序写结果5.11main()int a33 = 1,0,2, 2,2,0,2, c33,i,j; for(i=0; i3; i+) for(j=0; j3; j+) cij = aaijaji; printf(%5d,cij);printf(n);运行结果为: 2 2 0 0 0 2 2 0 1 5.12当运行以下程序时,从键盘输入:Ah2MA A3ha,请写出输出结果。main() char s80, c=a; int i=0; scanf(%s,s); while(si+!=0) if(si = c) si=si-32; else if(s

17、i=c-32) si=si+32; puts(s); 运行结果为:AH2Ma四、编程题5.13 用数组方法定义一个矩阵,求其转置矩阵。提示:已知a32,转置后的结果存放在b23; 则bji=aij;5.15 从键盘输入9个不同的整数,组成三行三列的二元数组,找出每一列中的最大元素,并输出其行、列下标。提示:已知a33,max,row,col分别用来存放一列的最大值,行下标和列下标。5.15利用一个二维数组,打印出以下杨辉三角形,要求打印出10行。11112113311464115101051 提示:定义一个10行10列的二维数组,并且通过两重循环对第1列所有元素赋值1,主对角线也赋值。根据ai

18、j=ai-1j+ai-1j-1求出其它元素的值。5.16 从键盘上输入一串字符(长度小于50个字符),找出其中最前面的一个X和最后面的一个X之间的子串,并输出子串的长度。提示:定义一个长度为81的字符数组,从左边查找第一字符X的下标,从右边查找第一个字符X的下标。5.17 矩阵A是一个33的矩阵,B是一个32的矩阵,编程求C=AB。提示:定义一个3X2的数组c32,该数组的元素值由A数组的一行元素分别与B的一列元素相乘得到。譬如:c00=a00*b00+a01*b10+a02*b20。5.18 把30个学生的学号和两门课程的成绩输入到一个二维数组中,求出的每个学生的两门课程的总成绩也放于此数组

19、中,请按学生总分的高低打印出成绩单(包括学号、两门课程成绩和总分)。提示:定义一个30行4列的数组。为了先快速测试算法是否正确?可以定义一个3行4列的数组,并且通过赋初始值,减少调试程序时反复输入数据的麻烦,算法调试成功后在加上输入数据部分。实现从高到低打印出成绩可以通过排序(降序);也可以通过另外定义1个一维数组作为索引,再通过索引打印成绩。5.19 不用现有的函数求计算字符串长度的程序。提示:通过循环从前到后计算字符个数,遇到字符串结束标志0结束。5.20 从键盘上输入一串字符,将其逆向显示。提示:首先计算字符串的长度,在从右边逐一显示字符,直到下标等于0为止。5.21 找出一个二位数组中

20、的鞍点的位置,即该位置上的元素在该行上最大,在该列上最小。如果有,输出其所在的行、列号,如果没有,则输出提示信息。提示:先找出行的最大元素,根据列下标找出列的最大元素。5.22 从键盘上输入一串字符,将字符串中的所有A去掉后组成新的字符串,并将两字符串输出。提示:简单的方法是通过定义两个一维数组,逐个读出原字符串的字符,如果不为A,则存入目的数组。当然也可以只用一个一维数组实现,通过两个下标指示来实现。【习题6】一、 填空题6.1 C语言程序执行的开始处是 main函数 。6.2 C程序中的一个函数由两部分组成,即 声明部分 和 执行部分 。6.3为了保证被调用函数不返回任何值,其函数定义的类

21、型应为 void 。6.4若一个局部变量的存储类型是static,则该变量的值在 程序执行完成 时被释放。6.5预处理命令#include的作用是 文件包含 。6.6定义一个宏,功能是判断两个数是否相等,相等为1,不等为0。 #define EQU(a,b) (a)=(b)?1:0 6.7 变量的存储类别有 自动型 、 静态型 、 寄存器型 、和 外部类型 共4种,它们分别用 auto 、 static 、 register 、 extern 标识。二、 选择题 6.8下述函数定义形式正确的是(C)。 A. int f(int x; int y) B. int f(int x,y) C. in

22、t f(int x, int y) D. int f(x,y: int) 6.9 关于函数参数,说法正确的是(A)。A. 实参与其对应的形参各自占用独立的内存单元B. 实参与其对应的形参共同占用一个内存单元C. 只有当实参和形参同名时才占用同一个内存单元D. 形参是虚拟的,不占用内存单元6.10 用数组名作为函数的实参时,传递给形参的是(A)。 A. 数组的首地址 B. 数组的第1个元素 C. 数组中的全部元素 D. 数组的元素个数6.11复合语句中定义的变量的作用范围是(D)。 A. 整个源文件 B. 整个函数 C. 整个程序 D. 所定义的复合语句6.12一个函数的返回值由( D )确定。

23、 A. return语句中的表达式 B. 调用函数的类型C. 系统默认的类型 D. 被调用函数的类型 6.13在一个C源文件中,若要定义一个只允许本源文件所有函数使用的全局变量,其他文件中不允许使用,则该变量需要使用的存储类别是(D)。 A. auto B. register C. extern D. static三、 判断题6.14若定义的函数没有参数,则函数名后的圆括号可以省略。()6.15函数的函数体可以是空语句()。6.16只有main函数才能调用其他函数。()6.17return语句中表达式的类型必须与函数定义的类型一致。()6.18函数的实参和形参可以是相同的名字。()6.19函数

24、调用中,形参与实参的类型和个数必须保持一致。()6.20外部类型的变量只能定义一次,但可在不同地方声明多次。()6.21外部类型的变量作用范围大,编程中应多用外部变量。()6.22预处理命令行必须以开头,且最后要用分号结尾。()6.23宏命令的处理占用编译时间,而不占用运行时间。()四、 看程序写结果 6.24int fun(int n)int f=1; f = f*n*2; return(f);main() int i,j; for(i=1; i=5; i+) printf(%dt, fun(i);程序运行结果:2 4 6 8 106.25int x1=30, x2=40;main()int x3=10,x4=20; sub(x3,x4

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2