C语言程序设计案例教程习题参考答案人大版.docx
《C语言程序设计案例教程习题参考答案人大版.docx》由会员分享,可在线阅读,更多相关《C语言程序设计案例教程习题参考答案人大版.docx(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言程序设计案例教程习题参考答案人大版第 第 1 1 章C C 语言概述训练习题 参考答案一、选择题1.C 2.C 3.C 4.B 5.B6.D7.B 8.C 9.B 10.A11.C12.A13.A二、填空题 1、Noname.c 2、main()函数3、/*和*/ 4、scanf()和 printf() 5、源文件.c目标文件.obj可执行文件.exe6、分号; 7、语句 8、ALT+F5 9、编译 连接10、函数首部和函数体 其次章 数据的表现形式 训练题参考答案 一、选择题 1D) 2D) 3D) 4A)5.B) 6B) 7B) 8D) 9B)10.B) 11A)12.C) 13A)
2、14A) 15D)16C)17A)18D)19D) 20C)21B)22C) 二、填空题 1、单引号 1双引号由 0 个或若干个字符 字符串结束标记0’2、0x4b 01130165 11761 0x3d 3、324、7 8 5、自动转换 强制转换 6、6、3 7、%d%u%f%e%c%s 8、字母 数字下划线 9、48 10、65 B 11 单引号双引号 12、优先级 结合性 13、256 -2 14、33 15、016、-1 17、6553518、3 19、FFCC 20、-128127 正整数负整数第 第 3 3 章运算符与表达式训练习题参考答案一、选择题 1.C 2.A 3
3、.B 4.A 5.B 6.B 7.B 8.A 9.D 10. D 11.A12.C13.C14.C15.C16.C17.A18.B19.D20.C 21.A22.A23.D24.A25.C26.B27.B28.A29.C30.A 31.A32.D33.D34.D35.A36.A37.D 二、填空题 1.a=4,i=5 2.p=15,q=24,i=8,j=8 3.a=-6i=6b=-5j=6 4.12353514 5. a=2,b=2,k=2 6.a=4,b=1 7.100 8.1 9.a=97 b=98 c=97 d=98 10 21110612.(x>20x<30)|x<-
4、10013. 114. 10 15. -16 16. 语法错误 17. 118.0 19. 00 20. 36 1E01111021. 5第 第 4 4 章数据的输入和输出训练习题参考答案一、选择题1、C2、A3、A4、B 5、C6、C7、B8、A9、D10、B11、B 12、B 13、D14、A15、B 16、D 17、C 18、A19、D20、C21、C 22、B 23、C24、A25、C 26、A 27、B 28、A 29、D 30、C 31、C 二、填空题1、a=1,b=2 2、5.0,4,c=3 3、0 4、3 5、2.1 6、6.6 7、x+=1; 8、261 9、16 10、-3
5、 11、i=10,j=20 12、b 13、6第 第 5 章 程序流程的限制 训练习题参考答案 一、 选择题1、D2、A3、A 4、B5、C 6、D7、B8、C9、B10、B11、A 12、C 13、B 14、B15、D16、D 17、A 18、B 19、A20、D 21、A 22、A 23、B 24、B25、C26、C二、填空题1、b = i + 1 2、 i<10 i % 3 != 0 3、18 4、1.0/(i*i) 5、0 6、52 7、8921 8、x 9、5 10、 17 11、 X 12、 /i 或 *1.0/i 或 *1/i*(1.0/i) 或 /(double)I 13
6、、 1 3 214、 6 15、 -f fun(10)三、编程题1. 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。解题思路:1、针对题意,可设如下计数变量: nl 为键入字母个数;(包含两种状况一是大写字母其范围是;二是小写字母其范围是 az; nd 为键入数字个数;其范围是 09; nwhite 为键入空格键个数;no 为键入其它字符个数。2、依据各字符的范围及表现形式,就可以推断该字符属于某一范围,并在对应的计数器上加 1。计数器的初始状态应为 0 值。3、键盘输入字符常采纳键盘输入函数 getchar( )进行取值。由于该函数每次只能取一个字符,故要多次运用,于是
7、可以利用循环方式进行,其推断条件只要没读到文件尾就有数据可取,直到遇到文件结束标记符’0’为止。#include <stdio.h> void main ( ) intnl, nd, nw, no, c; nl = nd = nw = no = 0; while(c=getchar( )!=’0’) if ( a<=cc<=z|A<=cc<=Z )nl+; else if ( 0<=cc<=9 ) nd+;else if ( c= )nw+; elseno+; printf( nletter=%d,
8、 ndigit=%dn, nl, nd ); printf( nwhite=%d, nother=%dn, nw, no ); 2.一辆卡车违反交通规则,撞人逃跑。现场 3 人目击,但没记住车号,只登记车的特征。* 甲说:牌照前两位数相同,乙说:牌照后两位数相同。* 丙是位数学家,他说:四位的车号刚好是一个整数的平方。请依据以上线索求出车号。#include<stdio.h> int main() int i,j,k,c; for(i=1;i<=9;i+) /*i:车号前二位的取值*/ for(j=0;j<=9;j+) /*j:车号后二位的取值*/ if(i!=j) /
9、*推断二位数字是否相异*/ k=i*1000+i*100+j*10+j; /*计算出可能的整数*/ for(c=31;c*c<k;c+); /*推断该数是否为另一整数的平方*/if(c*c=k)printf(Lorry-No. is %d.n,k); /*若是,打印结果*/ 运行结果:Lorry _No.is 7744 3.随意输入一行英文句子统计单词的个数,单词间用空格分隔开。解题思路:(1)从文本(字符串)的左边起先,仿效取出字符,且设置变量 i 作为循环变量,num 统计单词个数,word 作为判别是否出现单词的标记,word=0 表示未出现单词,假如出现 word 就置为 1,单
10、词的数目可以由空格出现的次数确定(连续的若干个空格作为出现一次空格;一行开头的空格不在内)。(2)假如测出某一个字符为非空格,即是新的单词起先,此时 num(单词数)加 1。(3)再依次取字符进行推断,假如当前字符为非空格则是原来那个单词的接着,num 不应再累加 1。#include<stdio.h> void main() int num=0,word=0;int i; char s =welcme to you ,w;/* 此处可以运用 int s80;gets(s)*/ for( i=0;i<strlen(s);i+) w=si;if(w=32)word=0;cont
11、inue;elseif(word=0) word=1; num=num+1; printf(%d,num); 4.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,其次天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。算法分析:依据题意可设当日(第 n 天)猴子吃桃前,树上有桃子 x 个,则后一天(第n+1)树上桃子个数为 x/2-1 个,则也可推出前一天的桃子数目为 2(x+1)个。依据这个关系式可以推出后一天与前一天的关系是倍数关系,依此类推可以推出树上总的桃子数(1
12、534)。于是可以借助数组下标的特点可以推出:ai+1=ai*2+1 的表达式。方法一:反推法 1.程序分析:实行逆向思维的方法,从后往前推断。2.程序源代码:格式 1:采纳 while 结构形式void main() int day,x1,x2;day=9;x2=1;while(day>0) x1=(x2+1)*2;x2=x1;day-;printf(the total is %dn,x1); 格式 2:采纳 for 结构形式#include<stdio.h> main() int x=1,day;for(day=1;day<=9;day+) x=(x+1)*2; p
13、rintf(the total is %dn,x); 方法二:(正推法)累试法 main() int x,m,day; for(x=1;x+) m=x; for(day=0;day<9;day+)m=m/2-1; if(m=1) break; printf(the total is %dn,x); 5.中国余数定理:有物不知几何,三三数余二,五五数余三,七七数余二,问物几何?编程求 1000 内全部解。#include ″stdio.h″ main()for(x=0;x<1000 printf(″This number is %dn″
14、,x); 6.求 100 以内的孪生素数 孪生素数的含义:是指若 A 为素数,且 A+2 也为素数,则素数 A 和 A+2 称为孪生素数!#include <stdio.h>main()int i;for(i=2;i<=1000;i+)if(prime_number(i)if(prime_number(i+2)printf(%d %dn,i,i+2);int prime_number(int num)int i;for(i=2;i<num;i+)if(num%i=0)return 0;return 1;第 第 6 6 章用数组处理批量数据训练习题参考答案 一、选择题1D
15、) 2B) 3A) 4D) 5D) 6B) 7B) 8C) 9B) 10A)11B) 12B) 13A)14D) 15A)16A)17. B) 18. D) 19. B)20.A)二、填空题 167 G2A,B65,663 123*/0000000123*/123 */4107,322.000000,107,B51B6 stringhello7 3, D8 3 2 2 39.75/9=8„„310. 12 三、编程题 1.统计子字符串 substr 在母字符串 str 中出现的次数。例如,若字符串string student stdiostop,子字符串为st,则应输出
16、出现的次数为 4 次的信息。#include stdio.h void main() char str100,substr20; int j,i,k,count=0;gets(str); gets(substr);for(i=0;stri;i+) j=i;k=0;while(strj=substrksubstrk) j+;k+; if(substrk=’0’) count+; printf(%dn,count); 2、从键盘上输入一串字符,统计其中包含的大写字母、小写字母、数字字符的个数。#include <stdio.h> main ( ) intn1,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 案例 教程 习题 参考答案 人大
限制150内