C语言练习题答案.doc

上传人:豆**** 文档编号:34136669 上传时间:2022-08-14 格式:DOC 页数:152 大小:329KB
返回 下载 相关 举报
C语言练习题答案.doc_第1页
第1页 / 共152页
C语言练习题答案.doc_第2页
第2页 / 共152页
点击查看更多>>
资源描述

《C语言练习题答案.doc》由会员分享,可在线阅读,更多相关《C语言练习题答案.doc(152页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流C语言练习题答案【精品文档】第 152 页1.已知三角形的三边长为a,b,c,计算三角形面积的公式为:area=sqrt(s(s-a)(s-b)(s-c),其中s=(a+b+c)/2。试编程从键盘输入a,b,c的值(假设a,b,c的值可以保证其构成一个三角形),计算并输出三角形的面积。*输入格式要求:%f,%f,%f 提示信息:Input a,b,c:*输出格式要求:area = %.2fn程序运行示例如下:Input a,b,c:3,4,5area = 6.00答案:#include#includeint main(void)float a, b, c

2、, s, area;printf(Input a,b,c:);scanf(%f,%f,%f, &a, &b, &c);s = (a + b + c) / 2;area = sqrt(s*(s - a)*(s - b)*(s - c);printf(area = %.2fn, area);return 0; -12.从键盘任意输入一个4位整数,编程计算并输出它的逆序数.例如:输入1234,分离出千位1、百位2、十位3和个位4,然后计算4*1000+3*100+2*10+1=4321,并输出4321。*要求输入提示信息为:无*要求输入格式为: %d*要求输出格式为:%d程序运行示例如下:1234

3、此处为输入4321 此处为输出答案:#includeint main(void)int a, b, c, d,e;scanf(%d,&a);b = a/1000;c = a%1000/100;d = a%100/10;e = a%10;a = e*1000+d*100+c*10+b;printf(%d,a);return 0; -23.有关输入输出问题。输入为:12a b 运行结果为:1,2,a,b,123.300000,65535请改正程序中的错误,使它能得出正确的结果。#include main() int b; unsigned short a = 65535; short k = a;

4、 char c, d; int f, g; b = (1234.0 - 1) / 10; scanf(%c, &c); scanf(%c, &d); scanf(%d, &f); scanf(%d, &g); printf(%c,%c,%c,%c,%f,%d, c, d , f, g, b, k);答案:#include main()double b;int a = 65535;char c, d;int f, g;b = (1234.0 - 1) / 10;scanf(%c, &c);scanf(%c, &d);scanf(%ct, &f);scanf(%c, &g);printf(%c,%

5、c,%c,%c,%f,%d, c, d , f, g, b, a); -34.输入一行字符,统计其中的英文字符、数字字符、空格字符,以及其他字符的个数。请找出以下程序的错误,并改正之。#include #include #define ARR_SIZE = 80; main()char strARR_SIZE;int len, i;int letter=0,digit=0,space=0,other=0;printf(请输入一个字符串:);gets(str);len = strlen(str); for (i=0; ilen; i+)if (a=stri=z | A=stri=Z)letter

6、 +; else if (0=stri=9) digit +; else if (stri= ) space +; elseother +; printf(英文字符数:%dn, letter);printf(数字字符数:%dn, digit);printf(空格数:%dn, space);printf(其他字符数:%dn, other);答案 :#include #include #define ARR_SIZE 80 main()char strARR_SIZE;int len, i;int letter = 0, digit = 0, space = 0, other = 0;printf

7、(请输入一个字符串:);gets(str);len = strlen(str);for (i = 0; ilen; i+)if (a = stri&stri = z | A = stri&stri = Z)letter+;else if (0 = stri & stri= 9)digit+;else if ( stri = )space+;elseother+;printf(英文字符数:%dn, letter);printf(数字字符数:%dn, digit);printf(空格数:%dn, space);printf(其他字符数:%dn, other); -45.对输入的一个数判断是否是素数

8、。所谓素数是指这个数只能被1和自身整除。要求在主函数输入一个数,调用函数Fun()判断该数是否是素数。打印信息在主函数中进行。例如:从键盘输入5,5是素数则打印如下信息:5 is a prime number。又如:从键盘输入4, 4不是素数则打印如下信息:4 is not a prime number。负数、0和1均不是素数。对输入的数据要考虑数据的合法性,不满足条件的数要重新输入直到满足条件为止。不能使用全局变量,不按给定的函数原型编写程序不给分。Fun()函数原型为: int Fun(int m);*输入数据提示信息:Please input a number:n 注:该提示信息请放在循

9、环体外*输入数据格式为:%d*输出格式要求: 若是素数输出数据格式为:%d is a prime numbern 若不是素数输出数据格式为: %d is not a prime numbern不完整答案:#includeint Fun(int a)int i;if(a1)for(i = 2;ia;i+)if(a%i=0)return 0;elsecontinue;return 1;elsereturn 0;main()int b,c;printf(Please input a number:n);scanf(%d,&b);c = Fun(b);if(0 = c)printf(%d is not

10、 a prime numbern,b);elseprintf(%d is a prime numbern,b);参考答案:#include stdio.hint Fun(int m);int main()int m, flag;printf(Please input a number:n);doscanf(%d, &m); /1while (m 2); /e1flag = Fun(m); /3if (flag) /1printf(%d is a prime numbern, m);elseprintf(%d is not a prime numbern, m); /1return 0;int

11、Fun(int m)/2int i, flag = 1; /1for (i = 2; i m; i+) /1if (m % i = 0) /1flag = 0; /1break;return flag;/2 - -56.求1898 现將不超过2000的所有素数从小到大排成第一行,第二行上的每个数都等于它“右肩”上的素数与“左肩”上的素数之差。请编程求出:第二行数中是否存在这样的若干个连续的整数,它们的和恰好是1898?假如存在的话,又有几种这样的情况?*输入格式要求:提示信息:There are follwing primes in first row :n*输出格式要求:(%d).%3d,.

12、,%dn程序运行示例如下:There are follwing primes in first row :(1).101,.,1999(2). 89,.,1987(3). 53,.,1951(4). 3,.,1901答案:#include #define N 330int aN;int main()int c = 0, b = 0, d = 1;int i = 0, j = 0, k = 0;for (i = 3;i = 2000;i+)for (j = 2;j = 0;c-)for (b = c + 1;c b;b+)if (b 330)if (ab - ac) = 1898)printf(

13、%d).%3d,.,%dn, d, ac, ab);d+;elsecontinue;elsebreak;7.从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出It is a prime number。例如,用户输入90时,程序输出90 = 2 * 3 * 3 * 5;用户输入17时,程序输出It is a prime number。输入提示信息:Input m:输入格式:%d输出格式:是素数时输出It is a prime numbern否则输出用%d = ,%d * 运行示例1:Input m:9090 = 2 * 3 *

14、 3 * 5运行示例2:Input m:13It is a prime number答案:#include #include int IsPrime(int x);void OutputPrimeFactor(int x);int main()int m;printf(Input m:);scanf(%d,&m);if(IsPrime(m)printf(It is a prime numbern);elseprintf(%d = ,m);OutputPrimeFactor(m);return 0;int IsPrime(int x)int i,flag=1;int squareRoot=sqr

15、t(x);if(x=1)flag=0;for(i=2;i=squareRoot&flag;i+)if(x%i=0)flag=0; return flag;void OutputPrimeFactor(int x)int i;for(i=2;ix;i+)if(x%i=0)printf(%d * ,i);OutputPrimeFactor(x/i);return;printf(%d,x);-78.将任一整数转换为二进制形式。*输入格式要求:%d 提示信息:Input number:*输出格式要求:number of decimal form:%dn its binary form: 程序运行示例如

16、下:Input number:876number of decimal form:876 its binary form: 00000000000000000000001101101100答案:#include #include int main()int a;char b32;printf(Input number:);scanf(%d, &a);printf(number of decimal form:%dn, a);printf( its binary form: );printf(%sn, itoa(a, b, 2);-89.求自然数n最近的素数k, kn。*输入提示信息*:Inpu

17、t n:*输入数据格式*:%d*输出数据格式*:%d示例输入:257输出:Please input n:263答案:#includeint main() int n, i = 1, k; printf(Please input n:); scanf(%d, &n); for (k = n + 1;i;k+) for (i = 2;i k;i+) if (k%i = 0) break; else continue; if (i = k) printf(%d, k); i = 0; break;-910.如果一个正整数m的所有小于m的不同因子(包括1)加起来正好等于m本身,那么就被称它为完全数。它

18、是指这样的一些特殊的自然数,它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。注意:1没有真因子,所以不是完全数。例如,6就是一个完全数,是因为6 = 1 + 2 + 3。请编写一个判断完全数的函数IsPerfect(),然后判断从键盘输入的整数是否是完全数。要求:按如下原型编写判断完全数的函数,若函数返回0,则代表不是完全数,若返回1,则代表是完全数。int IsPerfect(int x);*要求输入提示信息为: Input m:n*要求输入格式为: %d*要求输出格式为 %d is a perfect numbern%d is not a perfect numbern注:不能

19、使用指针、结构体、共用体、文件、goto、枚举类型进行编程,主函数不能使用int main和return 0。答案:#includeint IsPerfect(int x);int main() int m; printf(Input m:n); scanf(%d, &m); if (IsPerfect(m) printf(%d is a perfect numbern, m); else printf(%d is not a perfect numbern, m);int IsPerfect(int x) int i = 1,b = 0; for (i = 1;i x;i+) if (x%i

20、 = 0) b = b + i; continue; else continue; if (b = x) return 1; else return 0;-1011.用函数编程计算两整数的最大值,在主函数中调用该函数计算并输出从键盘任意输入的两整数的最大值。*输入格式要求:%d,%d 提示信息:Input a,b:*输出格式要求:max = %dn程序运行示例如下:Input a,b:5,8max = 8答案:#include int max(int a, int b) if(a = b) return a; else return b;main() int a = 0,b = 0; prin

21、tf(Input a,b:); scanf(%d,%d,&a,&b); printf(max = %dn,max(a,b);-1112.利用求阶乘函数Fact(),编程计算并输出1! + 2! + + n!的值。*输入格式要求:%u 提示信息:Input n(n0):*输出格式要求:sum = %lun答案:#include int sum_s(int i);main() unsigned int n = 0; unsigned long b = 0; printf(Input n(n0):); scanf(%u,&n); for (b;n;n-) b = b +sum_s(n); print

22、f(sum = %lun,b); int sum_s(int i) int a; for(a = 1;i;i-) if (i 1) a = a * i; else a = a * 1; return a;-1213.编程输出如下菜单界面(具体的输出则以下面提示中要求的输出格式为准):=大学信息管理系统= 办公室管理 财务管理 教务管理 图书管理 科研管理 设备管理 人事管理 后勤管理 退出系统请您在上述功能中选择(08):提示:输出如下格式=大学信息管理系统= n-n1. 办公室管理 5. 财务管理 n2. 教务管理 6. 图书管理 n3. 科研管理 7. 设备管理 n4. 人事管理 8. 后

23、勤管理 n0. 退出系统n-n请您在上述功能中选择(08):n答案:#include main() printf(=大学信息管理系统= n); printf(-n); printf(1. 办公室管理 5. 财务管理 n); printf(2. 教务管理 6. 图书管理 n); printf(3. 科研管理 7. 设备管理 n); printf(4. 人事管理 8. 后勤管理 n); printf(0. 退出系统n); printf(-n); printf(请您在上述功能中选择(08):n);-1314.利用静态变量计算n的阶乘。*输入格式要求:%d 提示信息:Input n:*输出格式要求:%

24、d! = %ldn程序运行示例如下:Input n:101! = 12! = 23! = 64! = 245! = 1206! = 7207! = 50408! = 403209! = 36288010! = 3628800答案:#include int sum_s(int i);main() unsigned int n = 0,b = 1; printf(Input n:); scanf(%d,&n); for (b = 1;b 1) a = a * i; else a = a * 1; return a;-1415.写一个程序从键盘输入两个整数,然后显示输出第1个数除以第2个数的结果。例

25、如,输入123和12,程序的输出结果格式如下: 10 Remainder = 3 12 ) 123 提示:使用求余运算符获得余数,使用整数除法获得商。*输入格式要求:%d%d 提示信息:请输入两个整数:*输出格式要求:%13d Remainder = %dn -n%5d ) %5d答案:#include main() int a, b, c, d; printf(请输入两个整数:); scanf(%d%d,&a,&b); c = a / b; d = a % b; printf(%13d Remainder = %dn,c,d); printf( -n); printf(%5d ) %5d,b

26、,a);-1516.写一个程序,将接收的摄氏温度转换为对应的华氏温度。程序应显示如下的提示信息: Please input cels: 然后输入一个十进制数并回车,然后程序以合适的消息形式输出转换后的华氏温度。程序使用如下的公式完成转换:摄氏温度 = 5.0 *(华氏温度 32.0) / 9.0*输入格式要求:%lf 提示信息:Please input cels: *输出格式要求:The fahr is: %.2f答案:#include main() double a,b; printf(Please input cels: ); scanf(%lf,&a); b = (9.0 * a)/5.

27、0 + 32.0; printf(The fahr is: %.2f,b);-1617.写一个程序,将接收的华氏温度转换为对应的摄氏温度。程序应显示如下的提示信息: Please input fahr: 然后输入一个十进制数并回车,然后程序以合适的消息形式输出转换后的华氏温度。程序使用如下的公式完成转换:摄氏温度 = 5.0 *(华氏温度 32.0) / 9.0*输入格式要求:%lf 提示信息:Please input fahr: *输出格式要求:The cels is: %.2f答案:#include main() double a,b; printf(Please input fahr:

28、); scanf(%lf,&a); b = 5.0 * (a - 32.0) / 9.0; printf(The cels is: %.2f,b);-1718.编写一个程序,输入一个3位整数,要求逆序输出对应的数。例如:输入123,则输出321。*输入格式要求:%d 提示信息:Please enter a positive integer: *输出格式要求:%d-%dn 程序运行示例如下:Please enter a positive integer: 345345-543答案:#includeint main(void) int a, b, c, d,e; printf(Please ent

29、er a positive integer: ); scanf(%d,&a); b = a/100; d = a%100/10; e = a%10; c = e*100+d*10+b; printf(%d-%d,a,c); return 0;-1819.计算两个数的平方和从键盘读入两个实数,编程计算并输出它们的平方和,要求使用数学函数pow(x,y)计算平方值,输出结果保留2位小数。提示:使用数学函数需要在程序中加入编译预处理命令 #include 以下为程序的输出示例:Please input x and y:1.2,3.4result=13.00输入格式:%f,%f输出格式:输入提示信息:

30、Please input x and y:n输出格式:result=%.2fn答案:#include #include main() float x,y,z; printf(Please input x and y:n); scanf(%f,%f,&x,&y); z = pow(x,2) + pow(y,2); printf(result=%.2fn,z);1920.写一个程序从键盘输入两个整数,然后显示第1个整数占第二个整数的百分比,保留到小数点后1位。例如输入5和40,程序输出结果如下: 5 is 12.5 percent of 40 *输入格式要求:%d%d 提示信息:请输入两个整数:*

31、输出格式要求:%d is %.1f percent of %d答案:#include main() int a, b; float c; printf(请输入两个整数:); scanf(%d%d,&a,&b); c = (float)a / (float)b; c = c *100; printf(%d is %.1f percent of %d,a, c, b );-2021.求三角形面积。输入三角形的三个边长,计算三角形的面积。设三角形的三个边长分别为a、b、c,为简单起见,我们认为输入的三个边长数据是正确的,可以组成一个三角形。*输入格式要求:%f,%f,%f 提示信息:Enter 3

32、floats:*输出格式要求:area=%.2fn程序运行示例如下:Enter 3 floats:2,2,3area=1.98答案:#include#includeint main(void) float a, b, c, s, area; printf(Enter 3 floats:); scanf(%f,%f,%f, &a, &b, &c); s = (a + b + c) / 2; area = sqrt(s*(s - a)*(s - b)*(s - c); printf(area=%.2fn, area); return 0;-2122.写一个程序计算长为11.5厘米,宽为2.5厘米,

33、高为10厘米的盒子的体积和表面积。程序说明:采用直接赋值,不用输入。*输出格式要求area=%.2f,volume=%.2f答案:#include main() float a, b; a = (11.5 * 2.5 + 11.5*10 +10 * 2.5)*2; b = 11.5 * 2.5 * 10; printf(area=%.2f,volume=%.2f,a,b);23.用递归方法计算整数n的阶乘n!。*输入格式要求:%d 提示信息:Input n: n0, data error!n*输出格式要求:%d! = %ldn程序运行示例如下:Input n:55! = 120答案;#include int f(int n) if(n=1 |n=0) return 1; else return n * f(n - 1);main() int n; o: printf(Input n:); scanf(%d,&n); while (n0) printf(n0, data error!n); goto o; printf(%d! = %ldn,n, f(n)

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

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

本站为文档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