C语言学习总结分析题'答案.doc

上传人:一*** 文档编号:808920 上传时间:2019-07-16 格式:DOC 页数:106 大小:115.05KB
返回 下载 相关 举报
C语言学习总结分析题'答案.doc_第1页
第1页 / 共106页
C语言学习总结分析题'答案.doc_第2页
第2页 / 共106页
点击查看更多>>
资源描述

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

1、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, s, area;printf(“Input a,b,c

2、:“);scanf(“%f,%f,%f“, 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 此处为输入4321 此处为输出答案:#inc

3、ludeint main(void)int a, b, c, d,e;scanf(“%d“,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.有关输入输出问题。输入为:12ab 运行结果为:1,2,a,b,123.300000,65535请改正程序中的错误,使它能得出正确的结果。#include main()int b;unsigned short a = 65535;short k = a;char c, d;int f, g;b = (123

4、4.0 - 1) / 10;scanf(“%c“, scanf(“%c“, scanf(“%d“, scanf(“%d“, 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“, scanf(“%c“, scanf(“%ct“, scanf(“%c“, printf(“%c,%c,%c,%c,%f,%d“, c, d , f, g, b, a);-34.输入一行字符,统计

5、其中的英文字符、数字字符、空格字符,以及其他字符的个数。请找出以下程序的错误,并改正之。#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; i#include #define ARR_SIZE 80 main()char strARR_SIZE;int len, i;int letter = 0, digit

6、 = 0, space = 0, other = 0;printf(“请输入一个字符串:“);gets(str);len = strlen(str);for (i = 0; iint Fun(int a)int i;if(a1)for(i = 2;i#define N 330int aN;int main()int c = 0, b = 0, d = 1;int i = 0, j = 0, k = 0;for (i = 3;i = 0;c-)for (b = c + 1;c #include int IsPrime(int x);void OutputPrimeFactor(int x);in

7、t main()int m;printf(“Input m:“);scanf(“%d“,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=sqrt(x);if(x#include int main()int a;char b32;printf(“Input number:“);scanf(“%d“, printf(“number of decimal form:

8、%dn“, a);printf(“ its binary form: “);printf(“%sn“, itoa(a, b, 2);-89.求自然数 n 最近的素数 k, kn。*输入提示信息*:“Input n:“*输入数据格式*:“%d“*输出数据格式*:“%d“示例输入:257输出:Please input n:263答案:#includeint main()int n, i = 1, k;printf(“Please input n:“);scanf(“%d“, for (k = n + 1;i;k+)for (i = 2;i int IsPerfect(int x);int main

9、()int m;printf(“Input m:n“);scanf(“%d“, if (IsPerfect(m)printf(“%d is a perfect numbern“, m);elseprintf(“%d is not a perfect numbern“, m);int IsPerfect(int x)int i = 1,b = 0;for (i = 1;i int max(int a, int b)if(a = b)return a;elsereturn b;main()int a = 0,b = 0;printf(“Input a,b:“);scanf(“%d,%d“,prin

10、tf(“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“,for (b;n;n-)b = b +sum_s(n);printf(“sum = %lun“,b); int sum_s(int i)in

11、t a;for(a = 1;i;i-)if (i 1)a = a * i;elsea = a * 1;return a;-1213.编程输出如下菜单界面(具体的输出则以下面提示中要求的输出格式为准):=大学信息管理系统= -办公室管理 财务管理 教务管理 图书管理 科研管理 设备管理 人事管理 后勤管理 退出系统-请您在上述功能中选择(08):提示:输出如下格式“=大学信息管理系统= n“-n“1. 办公室管理 5. 财务管理 n“2. 教务管理 6. 图书管理 n“3. 科研管理 7. 设备管理 n“4. 人事管理 8. 后勤管理 n“0. 退出系统n“-n“请您在上述功能中选择(08):n

12、“答案:#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:“*输出格式要求:“%d! = %ldn“程序运行

13、示例如下: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“,for (b = 1;b 1)a = a * i;elsea = a * 1;return a;-1415.写一个程序从键盘输入两个整数,然后显示输出第 1 个数除以第 2 个数的结果。例如,输入 123 和12,程序的输

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

15、序,将接收的摄氏温度转换为对应的华氏温度。程序应显示如下的提示信息: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“,b = (9.0 * a)/5.0 + 32.0;prin

16、tf(“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: “);scanf

17、(“%lf“,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: 345345543答案:#includeint main(void)int a, b, c, d,e;printf(“Please enter

18、a positive integer: “);scanf(“%d“,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“输出格式:输入提示信息:“Plea

19、se input x and y:n“输出格式:“result=%.2fn“答案:#include #include main()float x,y,z;printf(“Please input x and y:n“);scanf(“%f,%f“,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“ 提示信息:“请输入两个整数:

20、“*输出格式要求:“%d is %.1f percent of %d“答案:#include main()int a, b;float c;printf(“请输入两个整数:“);scanf(“%d%d“,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 f

21、loats:“*输出格式要求:“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“, 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 厘米,高为 10 厘

22、米的盒子的体积和表面积。程序说明:采用直接赋值,不用输入。*输出格式要求“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:“ “nint f(int n)if(n=1 |n=0)return 1;elsereturn n * f(n - 1);main()i

23、nt n;o: printf(“Input n:“);scanf(“%d“,while (nint Fib(int n)if (n = 0)return 0;else if (n = 1)return 1;elsereturn Fib(n - 1) + Fib(n - 2);main()int n, a;printf(“Input n:“);scanf(“%d“, for (a = 1; a 0):“*输出格式要求:“%d! = %lun“程序运行示例如下:Input n(n0):101! = 12! = 23! = 64! = 245! = 1206! = 7207! = 50408! =

24、403209! = 36288010! = 3628800答案:#includeint sum_s(unsigned int i)unsigned int a;for(a = 1;i;i-)if (i 1)a = a * i;elsea = a * 1;return a;int Fact(unsigned int n)unsigned int i;for(i = 1;i 0):“);scanf(“%u“,Fact(i);-2526.爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨 2 阶,最后剩下 1 阶;若每步跨 3 阶,最后剩下 2 阶;若每步跨 5 阶,最后剩下 4 阶;若每步跨 6

25、 阶,则最后剩下 5 阶;只有每步跨 7 阶,最后才正好 1 阶不剩。参考例 6.15 程序,编写计算这条阶梯共有多少阶的程序如下所示,其中存在一些语法和逻辑错误,请找出并改正之,然后上机运行程序并写出程序的运行结果。#include main() int x = 1, find = 0;while (!find);if (x%2=1 find = 1; x+; 答案:#include main() int x = 1, find = 0;while (!find) if (x % 2 = 1 find = 1;x+; -2627.从键盘任意输入一个正整数,编程判断它的奇偶性。要求输入变量定义

26、为 int 类型且由用户从键盘输入。程序的运行示例 1:Input an integer number:44 is an even number程序的运行示例 2:Input an integer number:33 is an odd number输入格式:“%d“输出格式:输入信息提示:“Input an integer number:n“偶数输出格式:“%d is an even numbern“奇数输出格式:“%d is an odd numbern“答案:#include main()int n, m;printf(“Input an integer number:n“);scanf

27、(“%d“, m = n % 2;if (m)printf(“%d is an odd numbern“, n);elseprintf(“%d is an even numbern“, n);-2728.用动态数组编程输入任意 m 个班学生(每班 n 个学生)的某门课的成绩,计算最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。其中,m 和 n 的值由用户从键盘任意输入(不限定m 和 n 的上限值)。输入提示信息:“Input array size m,n:“Input %d*%d array:n“输入格式:“%d,%d“输出提示信息和格式:“maxScore = %d, class

28、 = %d, number = %dn“答案:#include #include void InputScore(int *p, int m, int n);int FindMax(int *p, int m, int n, int *pRow, int *pCol);int main() int *pScore, m, n, maxScore, row, col;printf(“Input array size m,n:“);scanf(“%d,%d“, pScore = (int *)calloc(m * n, sizeof (int); /* 申请动态内存 */if (pScore =

29、NULL) printf(“No enough memory!n“);exit(0);InputScore(pScore, m, n);maxScore = FindMax(pScore, m, n, printf(“maxScore = %d, class = %d, number = %dn“, maxScore, row + 1, col + 1);free(pScore); /* 释放动态内存 */return 0; /* 函数功能:输入 m 行 n 列二维数组的值 */void InputScore(int *p, int m, int n) int i, j;printf(“Inp

30、ut %d*%d array:n“, m, n);for (i = 0; i max) max = pi * n + j;*pRow = i; /*记录行下标*/*pCol = j; /*记录列下标*/return max;-2829.下面程序的功能是交换变量 a 和 b 中的值。 找出其中的错误并改正之。#include main() int a,b,*p,*q,*t; p=q= printf(“请输入变量 a 和 b 的值:“);scanf(“%d%d“, *t=*p ; *p=*q ;*q=*t ; printf(“交换后 a 和 b 的值:a=%d b=%dn“,a,b);答案:#in

31、clude main() int a,b,*p,*q,*t; p=q= printf(“请输入变量 a 和 b 的值:“);scanf(“%d%d“, *t=*p ; *p=*q ;*q=*t ; printf(“交换后 a 和 b 的值:a=%d b=%dn“,*p,*q); -2930.编程打印 200300 之间所有素数。要求判断一个数是否是素数用函数实现,打印结果请在主函数实现。判断一个数是否是素数函数原型为:int fun(int m);参数说明:参 数:m 是要进行判断的数;返回值:若此数是素数,则返回值为 1;否则返回值为 0*输入提示信息: 无*输入数据格式要求: 无*输出数据

32、格式要求: “%dn“注:不允许使用 goto 语句答案:#include int fun(int m);main()int a;for (a = 200;a int a40 = 0 , i = 0;int GetAboveAver(int score, int n);int main()for (i; i = 0)ai = b;elsebreak;printf(“Total students are %dn“, i);GetAboveAver(a, i);int GetAboveAver(int score, int n)int sum = 0, c;int d, e = 0;for (c

33、= 0;c d)e+;elsecontinue;printf(“Students of above average is %dn“, e);return 0;-3031./*编程实现简单的计算器功能,要求用户按如下格式从键盘输入算式:操作数 1 运算符 op 操作数 2计算并输出表达式的值,其中算术运算符包括:加(+)、减(-)、乘(*)、除(/)、(次幂)。要求使其能进行浮点数的算术运算,同时允许使用字符*、x 与 X 作为乘号,并且允许输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符。 *输入格式要求:“%f %c%f“ 提示信息:“Please enter the expre

34、ssion:n“*输出格式要求:“%f + %f = %f n“ “%f - %f = %f n“ “%f * %f = %f n“ “%f / %f = %f n“ “Division by zero!n“ “%f %f = %f n“ “Invalid operator! n“程序运行示例 1 如下:Please enter the expression: 2.0 + 4.02.000000 + 4.000000 = 6.000000程序运行示例 2 如下:Please enter the expression: 2.0 - 4.02.000000 - 4.000000 = -2.0000

35、00程序运行示例 3 如下:Please enter the expression: 2.0 * 4.02.000000 * 4.000000 = 8.000000程序运行示例 4 如下:Please enter the expression: 2.0 x 4.02.000000 * 4.000000 = 8.000000程序运行示例 5 如下:Please enter the expression: 2.0 X 4.02.000000 * 4.000000 = 8.000000程序运行示例 6 如下:Please enter the expression: 2.0 / 4.02.000000

36、 / 4.000000 = 0.5000000程序运行示例 7 如下:Please enter the expression: 2.0 / 0Division by zero! 程序运行示例 8 如下:Please enter the expression:2.0 5.02.000000 5.000000 = 32.000000 程序运行示例 9 如下:Please enter the expression: 2.0 4.0Invalid operator!*/#include #include int main()float a, b;char c;printf(“Please enter

37、the expression:n“);scanf(“%f %c %f“,if (c = +)printf(“%f + %f = %f n“, a, b, a + b);else if (c = -)printf(“%f - %f = %f n“,a, b, a - b);else if (c = /)if (b != 0)printf(“%f / %f = %f n“, a, b, a / b);elseprintf(“Division by zero!“);else if (c = * | c = x | c = X)printf(“%f * %f = %f n“, a, b, a*b);e

38、lse if (c = )printf(“%f %f = %f n“,a, b,pow(a,b);elseprintf(“Invalid operator! n“);-3132. 下面程序的功能是计算两个正整数的最小公倍数,请改正其中的错误。 #include int MinCommonMultiple(int a, int b)main() int a, b, x;printf(“Input a,b:“);scanf(“%d,%d“,a,b); x=MinCommonMultiple(int a,int b);printf(“MinCommonMultiple = %dn“, x); int

39、 MinCommonMultiple(int a, int b); int i;for (i=1; iint MinCommonMultiple(int a, int b);int main()int a, b, x;printf(“Input a,b:“);scanf(“%d,%d“, x = MinCommonMultiple(a, b);printf(“MinCommonMultiple = %dn“, x);int MinCommonMultiple(int a, int b)int i;for (i = 1; i n. P= m!/(n!*(m-n)!)*输入格式要求:“%d %d“

40、 提示信息:“请输入 m,n 的值( mn ):n“*输出格式要求:“n 项之和为:%lfn“程序运行示例如下:请输入 m,n 的值( mn ):5 3n 项之和为:10.000000答案:#include int fuc(int m, int n);int sum_s(int i); int main() int m, n;printf(“请输入 m,n 的值( mn ):n“);scanf(“%d %d“,printf(“n 项之和为:%lfn“,(double)fuc(m,n); int fuc(int m, int n) int p;p = sum_s(m) / (sum_s(n) *

41、 sum_s(m - n);return p; int sum_s(int i) int s_ = 1, a;for (a = 1;a int Lcm(int a, int b); int main() int a, b;printf(“Input a,b:“);scanf(“%d,%d“,if(Lcm(a,b) 0)printf(“Least Common Multiple of %d and %d is %dn“, a, b, Lcm(a, b);elseprintf(“Input error!n“); int Lcm(int a, int b) int i;if (a 0 i int a

42、40 = 0 , i = 0; int GetAboveAver(int score, int n);int main() for (i; i = 0)ai = b;elsebreak;GetAboveAver(a, i); int GetAboveAver(int score, int n) int sum = 0, c;int d, e = 0;for (c = 0;c = d)e+;elsecontinue;printf(“Students of above average is %dn“, e);return 0; -3536. 从键盘任意输入 10 个整数存入一个数组中, 然后任意输

43、入一个整数 x,采用顺序查找法,在数组中查找该数, 如果找到,则函数返回该数在数组中的下标位置, 并在主函数中打印该值; 如果没有找到,则返回-1,并在主函数中打印“Not found!”。 要求按如下函数原型编程实现查找功能。 int Search(int a, int n, int x); 在主函数中调用函数 Search 顺序查找 x, 然后在主函数中打印查找结果。要求必须按照题目要求和用函数编程,否则不给分。 *要求输入 10 个整数的提示信息格式为: “Input 10 numbers:n“(每输入一个数,键一次回车); *要求输入整数 x 的提示信息格式为: “Input x:n“

44、 *要求输出格式为: 找到时的打印格式为“Subscript of x is %dn“ 没找到时的打印格式为“Not found!n“答案:#include int Search(int a, int n, int x); int b10 = 0; int main() int x, n;printf(“Input 10 numbers:n“);for (x = 0; x 0)printf(“Subscript of x is %dn“,Search(b,n,x);elseprintf(“Not found!n“); int Search(int a, int n, int x ) for (n = 0; n char str_181;void Inverse(cha

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

当前位置:首页 > 教育专区 > 教案示例

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