Res - 2009春学期C语言上机练习参考答案汇总
更新时间:2024-05-24 23:11:01 阅读量: 综合文库 文档下载
- respect推荐度:
- 相关推荐
C程序设计 2009春学期 上机练习M2-M8参考答案
第2周(M2) ................................................................................................................................................................2 30004 显示五级记分制成绩所对应的百分制成绩
20011求华氏温度100°F对应的摄氏温度。..............................................................................................................2 区间(使用switch).........................................................................................
20012 求华氏温度 150°F 对应的摄氏温度。 ...........................................................................................................2 30005 显示水果的价格(使用switch) .........................................................
20013求摄氏温度26°C对应的华氏温度。 ...............................................................................................................2 30007 求三角形的面积和周长 ......................................................................20015当n为152时,分别求出n的个位数字(digit1)、
30008 计算个人所得税 ................................................................................
十位数字(digit2)和百位数字(digit3)的值。 ...............................................................................................................2 30051 判断闰年 ..........................................................................................20026 输入2个整数 num1 和 num2,计算并输出它
30052 统计学生平均成绩与及格人数 ............................................................
们的和、差、积、商与余数。.................................................................................................................................2 30053 分段计算水费(使用嵌套的if-else语句) ...........................................
第3周(M3) ................................................................................................................................................................3 第6周(M6) ..........................................................................................................
20031 error02_5) 20032 20033 1/n 20034 20035 项之和 20036 error02_6) 20038 20041 20044 1000^0.5 20053 20056 20061 20062
求1+2+3+......+100(调试示例3
40011 求最小公倍数和最大公约数(调试示例
error04_1) .....................................................................................................
求m+(m+1)+(m+2)+......+100 ........................................................................................................3 40012 求1-1/4+1/7-1/10+1/13-1/16+……............................................. 求1/m+1/(m+1)+1/(m+2)+......+3
40014 求整数的位数....................................................................................
40023 换硬币..............................................................................................
求1 + 1/3 + 1/5 + ......的前n项和...................................................................................................4 40024 找出各位数字的立方和等于它本身的数............................................... 求1-1/4+1/7-1/10+……的前n4
输出华氏-摄氏温度转换表(改错题5
40025 找完数(改错题error04_2)..............................................................40027 从高位开始逐位输出一个整数的各位数字
(选作)..............................................................................................................
40052 判断素数 ..........................................................................................
求x的n次幂 .............................................................................................................................5 40053 逆序输出整数....................................................................................
生成 3 的乘方表.........................................................................................................................6 40054 输出斐波那契序列 ............................................................................. 求100^0.5+101^0.5+……+6
第7周(M7) ..........................................................................................................
50002 使用函数判断数的符号 ......................................................................
计算物体自由下落的距离.............................................................................................................6 50003 使用函数求奇数和 .............................................................................
计算分段函数..............................................................................................................................6 50005 使用函数统计素数并求和...................................................................
阶梯电价 ....................................................................................................................................7 50006 使用函数统计一个整数中数字的个数 .................................................. 求m*m+1/m+(m+1)*(m+1)+
50007 使用函数找水仙花数..........................................................................
1/(m+1)+(m+2)*(m+2)+1/(m+2)+......+n*n+1/n....................................................................................................7 50009 使用函数求余弦函数的近似值 ............................................................20063
求
1-2/3+3/5-4/7+
50052 使用函数找最大值 .............................................................................
5/9-6/11+…… 8 20064
50062 使用函数输出指定范围内的 Fibonacci 数 ...........................................
求2^1+2^2+2^3+……+2^n ....................................................................................................8 50063 使用函数找出指定范围内的完数.........................................................
第4周(M4) ................................................................................................................................................................8 第8周(M8) ..........................................................................................................
10007 显示图案 (复习printf()的字符串输出)................................................................................................8 40013 求奇数和 ..........................................................................................20042 生成阶乘表.............................................................................................................................................8 40062 求x+x*x/2!+x*x*x/3!+x*x*x*x/4!+……
20043 使用函数求 n! /(m!* (n-m)!) ....................................................................................................................9 的值 ................................................................................................................
20054 求平均值 ................................................................................................................................................9 50004 使用函数计算两点间的距离 ...............................................................
20057 求1+1/2+1/3+......+1/n ...................................................................................................................... 50061 使用函数求a+aa+aaa+aa…a..........................................................10 20065 求0!+1!+2!+……+n!........................................................................................................................ 60002 整数的十进制、八进制和十六进制表现形式10
40015 求最小值 .............................................................................................................................................. .......................................................................................................................11
40018 求a+aa+aaa+aa…a........................................................................................................................... 60003 分类统计字符....................................................................................11
第5周(M5) .............................................................................................................................................................. 60006 验证歌德巴赫猜想 .............................................................................11
30001 求一元二次方程的根 ............................................................................................................................. 60007 使用函数输出整数的逆序数 ...............................................................11
30002 求分段函数的值 .................................................................................................................................... 60009 统计单词 ..........................................................................................12
30003 分类统计字符 ....................................................................................................................................... 60062 简单计算器 .......................................................................................13
1
C程序设计 2009春学期 上机练习M2-M8参考答案
第2周(M2)
20011求华氏温度100°F对应的摄氏温度。
计算公式如下,c=5*(f-32)/9,式中:c表示摄氏温度,f表示华氏温度。(源程序error02_1.cpp) 输入输出示例: fahr=100,celsius=37
#include
20012 求华氏温度 150°F 对应的摄氏温度。
计算公式:C = 5*F/9-5*32/9,式中:C表示摄氏温度,F表示华氏温度。 输入输出示例: fahr=150, celsius=66
#include
20015当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。 输入输出示例:
整数152的个位数字是2,十位数字是5,百位数字是1
#include
20026 输入2个整数 num1 和 num2,计算并输出它们的和、差、积、商与余数。
输出两个整数的余数可以用 printf(\num1, num2, num1%num2); 输入输出示例:括号内是说明 输入
5 3 (num1=5,num2=3) 输出 5 + 3 = 8 5 - 3 = 2 5 * 3 = 15 5 / 3 = 1
return 0; printf(\ahr = %d, celsius = %d\\n\ahr, celsius); return 0; }
20013求摄氏温度26°C对应的华氏温度。
计算公式如下,f=9*c/5+32,式中:c表示摄氏温度,f表示华氏温度。 输入输出示例: celsius=26,fahr=78
2
C程序设计 2009春学期 上机练习M2-M8参考答案
5 % 3 = 2 #include 输入一个正整数m(0<=m<=100),计算表达式 m + (m+1) + (m+2) + ...... + 100的值。 输入输出示例:括号内为说明 输入 3 0 10 50 - %d 输出 sum = 5050 * %d sum = 5005 sum = 3825 / %d #include (计算0+1+2+...+100) (计算10+11+12+...+100) (计算50+51+52+...+100) = %d\\n\ printf(\= %d\\n\ printf(\= %d\\n\ printf(\= %d\\n\ printf(\= %d\\n\ } 第3周(M3) 20031 求1+2+3+......+100(调试示例error02_5) return 0; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ sum=0; for(i=m;i<=100;i++) sum=sum+i; /*---------*/ 计算表达式 1 + 2 + 3 + ...... + 100的值。 输出示例: sum = 5050 #include 求1/m+1/(m+1)+1/(m+2)+......+1/n 输入一个正整数repeat (0 输入2个正整数 m 和 n(m<=n),计算表达式 1/m + 1/(m+1) + 1/(m+2) + ...... + 1/n的值,输出时保留3位小数。 输入输出示例:括号内为说明 输入 3 (repeat=3) 求m+(m+1)+(m+2)+......+100 5 15 (计算1/5+1/6+1/7+...+1/15) 10 20 (计算1/10+1/11+1/12+...+1/20) printf(\} 20032 3 C程序设计 2009春学期 上机练习M2-M8参考答案 1 3 (计算1+1/2+1/3) 输出 sum = 1.235 sum = 0.769 sum = 1.833 #include 求1-1/4+1/7-1/10+……的前n项之和 输入一个正整数repeat (0 读入一个正整数 n,计算1-1/4+1/7-1/10+……的前 n 项之和,输出时保留3位小数。 输入输出示例:括号内是说明 输入 printf(\ = %.3f\\n\ } } 20034 求1 + 1/3 + 1/5 + ......的前n项和 2 (repeat=2) 3 10 输出 sum = 0.893 sum = 0.819 输入一个正整数repeat (0 输入一个正整数 n,计算表达式 1 + 1/3 + 1/5 + ...... 的前 n 项之和,输出时保留6位小数。 输入输出示例:括号内为说明 输入 2 5 23 输出 sum = 1.787302 sum = 2.549541 #include (计算1+1/3+1/5+1/7+1/9) (计算1+1/3+1/5+...+1/45) #include C程序设计 2009春学期 上机练习M2-M8参考答案 for(i=1;i<=n;i++){ item=flag*1.0/t; sum=sum+item; flag=-flag; t=t+3; for(fahr=lower;fahr<=upper; fahr++, fahr++) } 20038 求x的n次幂 } { }/*---------*/ celsius=5*(fahr-32)/9; printf(\,celsius); }/*---------*/ } } 20036 error02_6) 输入一个正整数repeat (0 读入2个整数 lower 和 upper,输出一张华氏—摄氏温度转换表,华氏温度的取值范围是[lower, upper],每次增加2F。 计算公式:c = 5 * (f - 32) / 9,其中:c表示摄氏温度,f表示华氏温度。 输出请使用语句 printf(\celsius); 输入输出示例:括号内是说明 输入 2 (repeat=2) 32 35 (lower=32,upper=35) 40 30 (lower=40,upper=30) 输出 fahr celsius 32 0.0 34 1.1 fahr Celsius #include 读入1 个实数x和正整数 n(n<=50),计算并输出 x 的 n 次幂(保留2位小数),不允许调用pow函数求幂。 输入输出示例:括号内是说明 输入 2 (repeat=2) 1.5 2 (x=1.5,n=2) 2 7 (x=2,n=7) 输出 2.25 128.00 #include } 5 C程序设计 2009春学期 上机练习M2-M8参考答案 20041 生成 3 的乘方表 sum=sum+sqrt(i); /*---------*/ 输入一个正整数n,生成一张3的乘方表,输出3^0 ~ 3^n的值,可调用幂函数计算3的乘方。 输出使用语句 printf(\输入输出示例:括号内是说明 输入 3 输出 pow(3,0) = 1 pow(3,1) = 3 pow(3,2) = 9 pow(3,3) = 27 #include 求100^0.5+101^0.5+……+1000^0.5 for(i=0;i<=n;i++) { } mypow=pow(3,i); printf(\(n=3) printf(\} 20053 计算物体自由下落的距离 一个物体从 100m 的高空自由落下,编写程序,求它在前 3s 内下落的垂直距离(结果保留2位小数)。设重力加速度为10米/秒^2。 #include 计算分段函数 输入一个正整数repeat (0 编写程序,输入x,计算并输出下列分段函数f(x)的值(保留2位小数),请调用sqrt()函数求平方根,调用pow()函数求幂。 当 x>=0 时,f(x) = x^0.5,当 x小于0时,f(x) = x^5 + 2x + 1/x。 输入输出示例:括号内是说明 输入 3 (repeat=3) 10 (x=10) -0.5 (x=-0.5) 0 (x=0) 输出 f(10.00) = 3.16 f(-0.50) = -3.03 f(0.00) = 0.00 #include sum = 20435.99 #include C程序设计 2009春学期 上机练习M2-M8参考答案 int repeat, ri; double x, y; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\if(x>=0) y=sqrt(x); cost=0.53*50+(e-50)*0.58; /*---------*/ printf(\ } 20062 求m*m+1/m+(m+1)*(m+1)+1/(m+1)+} else y=pow(x,5)+2*x+1.0/x; /*---------*/ printf(\ = %.2f\\n\ } 20061 阶梯电价 } (m+2)*(m+2)+1/(m+2)+......+n*n+1/n 输入一个正整数repeat (0 输入两个正整数 m 和 n(m<=n),求 sum = m*m+1/m+(m+1)*(m+1)+1/(m+1)+(m+2)*(m+2)+1/(m+2)......+n*n+1/n,结果保留6位小数。 输入输出示例:括号内为说明 输入 3 (repeat=3) 1 2 (m=1,n=2) 2 5 (m=2,n=5) 5 10 (m=5,n=10) 输出 sum = 6.500000 sum = 55.283333 sum = 355.845635 #include int main(void) { int i, m, n; int repeat, ri; double sum; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ sum=0; for(i=m;i<=n;i++) sum=sum+i*i+1.0/i; 输入一个正整数repeat (0 为了提倡居民节约用电,某省电力公司执行\阶梯电价\,安装一户一表的居民用户电价分为两个\阶梯\:月用电量50千瓦时以内的,电价为0.53元/千瓦时;超过50千瓦时的用电量,电价上调0.05元/千瓦时。 输入用户的月用电量e(千瓦时),计算并输出该用户应支付的电费(元),结果保留2位小数。 输入输出示例:括号内是说明 输入 2 (repeat=2) 10 (e=10) 100 (e=100) 输出 cost = 5.30 cost = 55.50 #include } 7 C程序设计 2009春学期 上机练习M2-M8参考答案 20063 求1-2/3+3/5-4/7+5/9-6/11+…… #include 输入一个正整数 n,计算1-2/3+3/5-4/7+5/9-6/11+……的前n项之和,输出时保留3位小数。 输入输出示例:括号内是说明 输入 3 (repeat=3) 1 (n=1) 3 (n=3) 5 (n=5) 输出 sum = 1.000 sum = 0.933 sum = 0.917 #include 第4周(M4) 10007 显示图案 (复习printf()的字符串输出) 编写程序,在屏幕上显示如下图案。 * * * * * * * * * * #include 20042 生成阶乘表 输入一个正整数n,生成一张阶乘表,输出 1! ~ n! 的值, 求2^1+2^2+2^3+……+2^n 要求定义和调用函数fact(n)计算 n!,函数类型为double。 } int repeat, ri; double item, sum; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ sum=0; flag=1; denominator =1.0; for(i=1; i<=n; i++) { } /*---------*/ } 20064 } 8 C程序设计 2009春学期 上机练习M2-M8参考答案 输出使用语句 printf(\输入输出示例:括号内是说明 输入 3 输出 1! = 1 2! = 2 3! = 6 #include 20043 使用函数求 n! /(m!* (n-m)!) 输入一个正整数repeat (0 输入2个正整数 m 和 n(m<=n),计算 n! /(m!* (n-m)!) 。 要求定义并调用函数fact(n)计算n的阶乘, 其中 n 的类型是 int,函数类型是 double。 例:括号内是说明 输入: 2 (repeat=2) 2 7 (m=2, n=7) 5 12 (m=5, n=12) 输出: (n=3) result = 21 result = 792 #include \int main(void) { int m, n; int repeat, ri; double s; double fact(int n); scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ fact(n); fact(m); fact(n-m); s=1; s=s*fact(n)/(fact(m)*fact(n-m)); printf(\ } } double fact(int n) { double result; int i; result=1; for(i=1;i<=n;i++) result=result*i; return result; } 20054 求平均值 编写程序,输入 3 个整数,计算并输出它们的平均值(结果保留2位小数)。 输入输出示例: 输入 1 2 3 输出 average = 2.00 #include C程序设计 2009春学期 上机练习M2-M8参考答案 int a, b, c; double average; scanf(\ average= (a+b+c )/3.0; printf(\} 20057 求1+1/2+1/3+......+1/n 输入一个正整数repeat (0 编写程序,输入一个正整数n,求1+1/2+1/3+......的前n项之和,输出时保留6位小数。 输入输出示例:括号内为说明 输入 2 6 2 输出 sum = 2.450000 sum = 1.500000 #include (计算1+1/2+1/3+1/4+1/5+1/6) (计算1+1/2) 编写一个程序,输入一个正整数 n,计算 e = 0!+1!+2!+……+n!,要求定义和调用函数fact(n)计算n!,函数类型是double。 例:括号内是说明 输入 3 (repeat=3) 1 2 4 输出 sum = 2 sum = 4 sum = 34 #include 20065 求0!+1!+2!+……+n! 输入一个正整数repeat (0 10 C程序设计 2009春学期 上机练习M2-M8参考答案 40015 求最小值 输入一个正整数repeat (0 输入一个正整数n, 再输入n个整数,输出最小值。 输入输出示例:括号内是说明 输入 3 (repeat=3) 4 -2 -123 100 0 4 -9 -1 1 -8 3 5 3 1 输出 min = -123 min = -9 min = 1 #include 第5周(M5) 30001 求一元二次方程的根 输入一个正整数repeat (0 输入参数a,b,c,求一元二次方程a*x*x+b*x+c=0的根,结果保留2位小数。 输出使用以下语句: printf(\参数都为零,方程无意义!\\n\printf(\和b为0,c不为0,方程不成立\\n\printf(\ printf(\printf(\printf(\sqrt(-d)/(2*a)); printf(\sqrt(-d)/(2*a)); 输入输出示例:括号内为说明 输入: 5 (repeat=5) scanf(\ min=x; for(i=1;i 40018 求a+aa+aaa+aa…a 提示: 第i项通项: tn = a + a * 10 + a * 100 … +a * 10^( n-1) = t(n-1) + a * 10^(n-1) 11 C程序设计 2009春学期 上机练习M2-M8参考答案 0 0 0 (a=0,b=0,c=0) 0 0 1 (a=0,b=0,c=1) 0 2 4 (a=0,b=2,c=4) 2.1 8.9 3.5 (a=2.1,b=8.9,c=3.5) 1 2 3 (a=1,b=2,c=3) 输出: 参数都为零,方程无意义! a和b为0,c不为0,方程不成立 x = -2.00 x1 = -0.44 x2 = -3.80 x1 = -1.00+1.41i x2 = -1.00-1.41i #include 30002 求分段函数的值 输入一个正整数 repeat (0 输入一个整数 x,计算并输出下列分段函数 sign(x) 的值。 -1 x < 0 x = 0 x > 0 y = sign(x) = 0 1 输入输出示例:括号内是说明 输入 3 (repeat=3) 10 (x=10) 0 (x=0) -98 (x=-98) 输出 sign(10) = 1 (x = 10时 y = 1) 意义!\\n\ } else{ printf(\和b为0,csign(0) = 0 (x = 0时 y = 0) sign(-98) = -1 (x = -98时y = -1) #include C程序设计 2009春学期 上机练习M2-M8参考答案 else y=-1; 五级制成绩对应的百分制成绩区间为:A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59),如果输入不正确的成绩,显示\。 输出使用以下语句: printf(\printf(\printf(\printf(\printf(\ printf(\ 输入输出示例:括号内是说明 输入 6ABCDEj (repeat=6,输入的五级成绩分别为A、B、C、D、E和无效的字符j) 输出 90-100 80-89 70-79 60-69 0-59 Invalid input #include printf(\ } } 30003 分类统计字符 输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。 输入输出示例:括号内是说明 输入 Reold 123? 输出 letter = 5, blank = 1, digit = 3, other = 1 #include 30004 显示五级记分制成绩所对应的百分制成绩区间(使用switch) 输入一个正整数 repeat (0 输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用switch语句。 if(c==' ') blank ++; else else else other ++; if(c>='0'&&c<='9') digit ++; if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) letter ++; char ch; int repeat, ri; scanf(\ for(ri = 1; ri <= repeat; ri++){ ch = getchar(); switch(ch){ case'A': printf(\ break; case'B': printf(\ break; case'C': printf(\ break; case'D': printf(\break; 13 C程序设计 2009春学期 上机练习M2-M8参考答案 } case'E': printf(\break; printf(\ printf(\ printf(\ printf(\ printf(\ scanf(\ if(choice == 0) break; else{ switch (choice){ case 1: price= 3.00; break; default: } printf(\ break; return 0; } 30005 显示水果的价格(使用switch) 查询水果的单价。有4种水果,苹果(apples)、梨(pears)、桔子(oranges)和葡萄(grapes),单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤和10.20元/公斤。 在屏幕上显示以下菜单(编号和选项),用户可以连续查询水果的单价,当查询次数超过5次时,自动退出查询;不到5次时,用户可以选择退出。 当用户输入编号1~4,显示相应水果的单价(保留1位小数);输入0,退出查询;输入其他编号,显示价格为0。 输入输出示例:括号内是说明 输入 3 (oranges的编号) 0 (退出查询) 输出 [1] apples [2] pears [3] oranges [4] grapes [0] Exit price = 4.1 [1] apples [2] pears [3] oranges [4] grapes [0] Exit #include printf(\30007 求三角形的面积和周长 输入一个正整数 repeat (0 输入三角形的3条边 a, b, c,如果能构成一个三角形,输出面积 area 和周长 perimeter(保留2位小数);否则,输出\。 在一个三角形中,任意两边之和大于第三边。三角形面积计算公式:area = (s(s-a)(s-b)(s-c))^0.5 ,其中s = (a+b+c)/2 输出使用以下语句: printf(\perimeter); printf(\triangle\\n\ 输入输出示例:括号内是说明 14 C程序设计 2009春学期 上机练习M2-M8参考答案 输入 2 (repeat=2) 5 5 3 1 4 1 输出 area = 7.15, perimeter = 13.00 These sides do not correspond to a valid triangle #include 输入输出示例:括号内是说明 输入 5 (repeat=5) 1010.87 (salary=1010.87) 32098.76 (salary=32098.76) 800 (salary=800) 4010 (salary=4010) 2850 (salary=2850) 输出 tax = 8.04 tax = 6249.75 tax = 0.00 tax = 474.00 tax = 200.00 #include 30008 计算个人所得税 输入一个正整数 repeat (0 输入一个职工的月薪 salary,输出应交的个人所得税 tax(保留2位小数)。 计算公式:tax = rate * (salary - 850) 当 salary ≤850 时,rate = 0 当 850 < salary ≤ 1350 时,rate = 5% 当 1350 < salary≤ 2850 时,rate = 10% 当 2850 < salary ≤ 5850 时,rate = 15% 当 5850 < salary 时,rate = 20% 15 C程序设计 2009春学期 上机练习M2-M8参考答案 } { rate=0.15; tax=rate*(salary-850); } else { rate=0.20; tax=rate*(salary-850); } } } 30052 统计学生平均成绩与及格人数 输入一个正整数 n,再输入 n 个学生的成绩,计算平均分(结 if((year%4==0&&year0!=0)||(year@0==0)) else printf(\.\\n\printf(\.\\n\printf(\} 果保留1位小数),并统计所有及格的人数。 输入输出示例:括号内是说明 输入 5 (n=5) 77 54 92 73 60 输出 average = 71.2 count = 4 #include 输入一个正整数repeat (0 输入年year,判断该年是否为闰年。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。 输出使用以下语句: printf(\printf(\输入输出示例:括号内是说明 输入 3 (repeat=3) 2000 (year=2000) 2010 (year=2010) 2011 (year=2011) 输出 2000 is a leap year. 2010 isn't a leap year. 2011 isn't a leap year. #include 30053 分段计算水费(使用嵌套的if-else语句) printf(\ 16 C程序设计 2009春学期 上机练习M2-M8参考答案 输入一个正整数repeat (0 为鼓励居民节约用水,自来水公司采取按月用水量分段计费的办法,居民应交水费y(元)与月用水量x(吨)的函数关系式如下。 输入用户的月用水量x(吨),计算并输出该用户应支付的水费y(元)(保留2位小数)。要求用嵌套的if-else语句。 0 (x<0) (0<=x<=15) 输入一个正整数 repeat (0 输入两个正整数m和n,输出它们的最小公倍数和最大公约数。 输入输出示例:括号内为说明 输入: 3 (repeat=3) 3 7 (m=3,n=7) 24 4 (m=24,n=4) 24 18 (m=24,n=18) 输出: 21 is the least common multiple of 3 and 7, 1 is the greatest common divisor of 3 and 7. 24 is the least common multiple of 24 and 4, 4 is the greatest common divisor of 24 and 4. 72 is the least common multiple of 24 and 18, 6 is the greatest common divisor of 24 and 18. #include 2.5x-10.5 (x>15) 输入输出示例:括号内是说明 输入 3 (repeat=3) -0.5 (x=-0.5) 9.5 (x=9.5) 21.3 (x=21.3) 输出 f(-0.50) = 0.00 f(9.50) = 12.67 f(21.30) = 42.75 #include 第6周(M6) 40011 求最小公倍数和最大公约数(调试示例error04_1) } for(gcd=c; ;gcd--) { if(m%gcd==0&&n%gcd==0) break; printf(\is the least common multiple of %d and %d, %d is the greatest common divisor of %d and %d.\\n\ } return 0; 17 C程序设计 2009春学期 上机练习M2-M8参考答案 } 参考方法2: #include sum = 0.835549 sum = 0.826310 #include 40012 求1-1/4+1/7-1/10+1/13-1/16+…… 输入一个正整数repeat (0 读入1个正实数 eps,计算并输出下式的值,精确到最后一项的绝对值小于 eps(保留6位小数)。请使用 while 语句实现循环。 计算:1-1/4+1/7-1/10+1/13-1/16+…… 输入输出示例:括号内是说明 输入 2 (repeat=2) 2E-4 (eps=2E-4) 0.02 (eps=0.02) } } return 0; 40014 求整数的位数 输入一个正整数 repeat (0 输入一个整数 in,求它的位数。例如123的位数是3。请使用do-while语句实现循环。 输入输出示例:括号内是说明 输入 4 (repeat=4) 12345 (in=12345) -100 (in=-100) -1 (in=-1) 1290 (in=1290) 输出 count = 5 (12345的位数是5) 18 C程序设计 2009春学期 上机练习M2-M8参考答案 count = 3 (-100的位数是3) count = 1 (-1的位数是1) count = 4 (99的位数是2) #include (money=13分) fen5:1,fen2:2,fen1:1,total:4 fen5:1,fen2:1,fen1:3,total:5 count = 2 分有2种换法) fen5:2,fen2:1,fen1:1,total:4 fen5:1,fen2:3,fen1:2,total:6 fen5:1,fen2:2,fen1:4,total:7 fen5:1,fen2:1,fen1:6,total:8 count = 4 分有4种换法) #include \int main(void) { int count, fen1, fen2, fen5, money; int repeat, ri; scanf(\ for(ri = 1; ri <= repeat; ri++){ return 0; scanf(\ count=0; (10 (13 } while (in!=0); printf(\ } } 40023 换硬币 输入一个正整数 repeat (0 将一笔零钱(大于8分,小于1元, 精确到分)换成5分、2分和1分的硬币。 输入金额,问有几种换法?针对每一种换法,每种硬币至少有一枚,请输出各种面额硬币的数量和硬币的总数量。 要求:硬币面值按5分、2分、1分顺序,各类硬币数量依次从大到小的顺序,输出各种换法。 输出使用语句: printf(\fen2, fen1, fen5+fen2+fen1); 输入输出示例:括号内为说明 输入: 2 10 (repeat=2) for(fen5=money/5;fen5>=1;fen5--) for(fen2=money/2;fen2>=1;fen2--) for(fen1=money/1;fen1>=1;fen1--) if(fen5*5+fen2*2+fen1*1==money){ printf(\fen2, fen1, fen5+fen2+fen1); count++;} printf(\ } } 40024 找出各位数字的立方和等于它本身的数 输入一个正整数 repeat (0 return 0; (money=10分) 19 C程序设计 2009春学期 上机练习M2-M8参考答案 输入两个正整数 m 和 n(1<=m, n<=1000),输出 m 到 n之间的所有满足各位数字的立方和等于它本身的数。 例如153的各位数字的立方和是 1^3+5^3+3^3=153 ,这里a^b表示a的b次方。 输出使用语句:printf(\输入输出示例:括号内为说明 输入: 2 (repeat=2) 100 400 (m=100, n=400) 1 100 输出: result: 153 (1*1*1+5*5*5+3*3*3=153) 370 (3*3*3+7*7*7=370) 371 (3*3*3+7*7*7+1*1*1=371) result: 1 (1*1*1=1) #include \int main(void) { int i, digit, m, n, a,b,c,sum; int repeat, ri; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ printf(\ for(i=m;i<=n;i++){ digit=i; a=digit; digit=digit/10; b=digit; digit=digit/10; c=digit; sum=a*a*a+b*b*b+c*c*c; (m=1, n=100) int main(void) { int i, digit, m, n, number, sum; int repeat, ri; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ printf(\ for(i=m;i<=n;i++){ number=i; sum=0; while(number>0){ digit=number; sum=sum+digit*digit*digit; number=number/10; } if(sum==i) printf(\ } } } 40025 找完数(改错题error04_2) 输入一个正整数 repeat (0 输入两个正整数 m 和 n(1<=m, n<=1000),输出 m 到 n之间的所有完数,并输出其因子。一个数如恰好等于它的因子之和,这个数称为完数,例如,6=1+2+3,其中1、2、3为因子,6为因子和。 输出使用以下语句: printf(\printf(\printf(\ 输入输出示例:括号内为说明 输入: 2 (repeat=2) 1 30 (m=1, n=30) 400 500 (m=400, n=500) if(sum==i) printf(\ } } 参考2: #include \return 0; } 输出 result: 1 = 1 6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 20 C程序设计 2009春学期 上机练习M2-M8参考答案 result: 496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 #include #include } } printf(\ 40027 从高位开始逐位输出一个整数的各位数字(选作) 输入一个正整数repeat (0 输入一个整数 in,从高位开始逐位分割并输出它的各位数字。 输出使用语句:printf(\输入输出示例:括号内为说明 输入 3 (repeat=3) 23456 (in=23456) -600 (in=-600) 推进 */ } return 0; } 40052 判断素数 printf(\ } printf(\ 21 C程序设计 2009春学期 上机练习M2-M8参考答案 输入一个正整数n,再输入n个正整数,判断它们是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 输出使用以下语句: printf(\printf(\输入输出示例:括号内为说明 输入 4 1 2 9 17 输出 1 is'nt a prime 2 is a prime 9 is'nt a prime 17 is a prime #include 输入一个正整数repeat (0 输入一个整数 in,将其逆序输出。假设正数和负数逆序输出的结果一样。 输出使用语句 printf(\输入输出示例:括号内为说明 输入 2 (repeat=2) 200 (in=200) -12345 (in=-12345) 输出 0 0 2 5 4 3 2 1 #include 40054 输出斐波那契序列 输入一个正整数 n(1 1 1 2 3 5 8 13 21 34 55 printf(\} return 0; } 40053 逆序输出整数 22 C程序设计 2009春学期 上机练习M2-M8参考答案 #include 第7周(M7) 50002 使用函数判断数的符号 输入一个正整数 repeat (0 输入1个整数 x,若 x 大于0,sign(x) = 1;若 x 等于0,sign(x) = 0;否则,sign(x) = -1,最后输出sign(x)的值。 要求定义和调用函数sign(x)实现该分段函数, 函数形参x的类型是int,函数类型是int。 输入输出示例:括号内是说明 输入 3 (repeat=3) 10 (x=10) -5 (x=-5) 0 (x=0) 输出 sign(10) = 1 (x=10时sign(x)的值为1) sign(-5) = -1 (x=-5时sign(x)的值为-1) sign(0) = 0 (x=0时sign(x)的值为0) ① for(i=1;i<=n-2;i++){ } return 0; x=x1+x2; printf(\ x1=x2; x2=x; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\x); y=sign(x); printf(\ } } int sign(int x) { int t=0; if(x<0) t=-1; else if(x==0) t=0; else t=1; return t; } 50003 使用函数求奇数和 输入一个正整数repeat (0 输入一批正整数(以零或负数为结束标志),求其中的奇数和。 要求定义和调用函数even(n) 判断数的奇偶性,当n为偶数时返回1,否则返回0,函数形参n的类型是int,函数类型是int。 输入输出示例:括号内是说明 输入 2 (repeat=2) 12 9 7 18 3 11 20 0 11 8 6 17 2 10 19 -1 输出 The sum of the odd numbers is 30. The sum of the odd numbers is 47. #include C程序设计 2009春学期 上机练习M2-M8参考答案 scanf(\ while (n>0){ if (even(n)==0) sum=sum+n; scanf(\} sum); } } int even(int n) { int t; } 50005 使用函数统计素数并求和 输入一个正整数 repeat (0 输入2个正整数 m 和 n(1<=m,n<=500),统计并输出 m 到 n 之间的素数的个数以及这些素数的和。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 要求定义并调用函数 prime(m) 判断m是否为素数,当m为素数时返回1,否则返回0,函数形参 m 的类型是int,函数类型是int。 输入输出示例:括号内是说明 输入: 1 1 10 输出: Count = 4, sum = 17 (1到10之间有4个素数:2,3,5,7) #include \#include \int main(void) { int count, i, m, n, sum; int repeat, ri; int prime(int m); (repeat=1) (m=1, n=10) if (n%2==0) else t=0; return t; t=1; printf(\sum of the odd numbers is %d.\\n\ scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\n); sum=0; count=0; if (m==1) m++; /* 若第一个数是1, 可直接判定下一个数 */ for(i=m;i<=n;i++){ if(prime(i)==1){ sum=sum+i; count++; } } } } int prime(int m) { int t, limit, result; result=1; /* 初始假设结果是素数 */ for ( t=2; t <= m-1; t++) if (m%t == 0) { result=0; /* 不是素数跳出循环 */ break; } return result; } 50006 使用函数统计一个整数中数字的个数 输入一个正整数 repeat (0 读入1 个整数in,再输入一个数字digit(0≤digit<10),统计并输出整数 in 中数字 digit 的个数。 要求定义并调用函数countdigit(number,digit),它的功能是统计整数 number 中数字 digit 的个数 ,函数形参number和digit的类型是int,函数类型是int。例如,countdigit(10090,0)的返回值是3。 输入输出示例:括号内是说明 输入 2 (repeat=2) 21252 2 (number=21252, digit=2) -1111 9 (number=-1111, digit=9) 输出 printf(\ 24 C程序设计 2009春学期 上机练习M2-M8参考答案 Number 21252 of digit 2: 3 (21252中有3个2) Number -1111 of digit 9: 0 (-1111中有0个9) #include \int main(void) { int count, digit, in; int repeat, ri; int countdigit(int number, int digit); scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ count=countdigit(in,digit); 100 400 (m=100, n=400) 1 100 (m=1, n=100) 输出: result: (100 到400之间的水仙花数) 153 (1*1*1+5*5*5+3*3*3=153) 370 (3*3*3+7*7*7=370) 371 (3*3*3+7*7*7+1*1*1=371) result: (1到100之间的水仙花数) 1 #include \int main(void) { int i, m, n; (1*1*1=1) printf(\ int repeat, ri; } } int countdigit(int number,int digit) { int c,t; c=0; if(number<0) int is(int number); scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ printf(\ number=-number; /* 这里若没将负数转成正数,判断就会出错 for (i=m;i<=n;i++) { */ while (number!=0){ t=number; number=number/10; if(t==digit) c++; } return c; } 50007 使用函数找水仙花数 输入一个正整数 repeat (0 2 (repeat=2) } 50009 使用函数求余弦函数的近似值 } } int is(int number) { int sum,res,t,j; } if(sum!=number) res=0; return res; res=1; sum=0; j=number; while (j!=0) { t=j; j=j/10; sum=sum+t*t*t; if(is(i)==1) printf(\} 25 C程序设计 2009春学期 上机练习M2-M8参考答案 输入一个正整数 repeat (0 输入精度 e 和 x,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e。 cos(x) = x^0/0!-x^2/2!+x^4/4!-x^6/6!+…… 要求定义并调用函数 funcos(e,x)计算 cos(x) 的值,函数形参e和x的类型均为double,函数类型是double。 输入输出示例:括号内是说明 输入: 2 (repeat=2) } } return sum; 求funcos(e,x)方法2: double funcos(double e, double x) { int flag=1, n=0; double item=1.0; double sum=0.0; double demoninator=1.0; while(fabs(item)>=e){ item=flag*1.0*pow(x,n)/demoninator; sum=sum+item; demoninator=demoninator*(n+1)*(n+2); n=n+2; flag=-flag; } return sum; } 50052 使用函数找最大值 输入一个正整数repeat (0 输入两个整数a和b,输出其中较大的数。要求定义和调用函数max(a, b)找出a、b中较大的数,函数形参a、b的类型是int,函数类型是int。 输入输出示例:括号内是说明 输入 3 (repeat=3) 输入: 5 8 (a=5, b=8) 0.001 0 (e=0.001, x=0) 0.0001 -3.14 (e=0.0001, x=-3.14) 输出: sum = 1.000000 sum = -0.999999 #include \#include \double funcos(double e, double x); int main(void) { int repeat, ri; double e, sum, x; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\x); sum=funcos(e,x); printf(\ = %f\\n\ } } double funcos(double e, double x) { int flag,n; double sum,t; sum=1; flag=-1; n=2; t=1; while(fabs(t)>=e){ t=flag*t*x*x/(n*n-n); /* 通过后一项除以相-1 -10 (a=-1, b=-10) 1 1 (a=1, b=1) 输出: max(5,8) = 8 max(-1,-10) = -1 max(1,1) = 1 #include C程序设计 2009春学期 上机练习M2-M8参考答案 int repeat, ri; int max(int a, int b); scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ maximum=max(a,b); int repeat, ri; long f; long fib(int n); scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ f = 1; i =1; while (f <=n) { if(f>=m) printf(\ printf(%um); } } int max(int a, int b) { int c; c=a; /* 假设a是大数 */ if (c 50062 使用函数输出指定范围内的 Fibonacci 数 输入一个正整数repeat (0 输入两个正整数 m 和 n(1<=m,n<=10000),输出 m 到 n 之间所有的Fibonacci数。 Fibonacci 序列(第一项起):1 1 2 3 5 8 13 21 ...... 要求定义并调用函数fib(n),它的功能是返回第 n 项Fibonacci数,函数形参n的类型是int,函数类型是long。例如,fib(7)的返回值是13。 输出使用语句:printf(\输入输出示例:括号内是说明 输入: 3 (repeat=3) 1 10 (m=1, n=10) 20 100 (m=20, n=100) 1000 6000 (m=1000, n=6000) 输出: 1 1 2 3 5 8 (1到10之间的Fibonacci数) 21 34 55 89 (20到100之间的Fibonacci数) 1597 2584 4181 (1000到6000之间的Fibonacci数) #include \int main(void) { int i, m, n; f=fib(++i); } printf(\ } } long fib(int n) { int i; long a=1.0,b=1.0,c; if(n==1 || n==2) return 1; for(i=3;i<=n;i++){ c=a+b; a=b; b=c; } return c; } 50063 使用函数找出指定范围内的完数 输入一个正整数 repeat (0 输入两个正整数 m 和 n(1<=m,n<=1000),输出 m 到 n 之间的所有完数,完数就是因子和与它本身相等的数。 要求定义并调用函数 factorsum(number),它的功能是返回number的因子和,函数形参number的类型是整型,函数类型是整型。例如,factorsum(12)的返回值是16(1+2+3+4+6)。 输出使用语句:printf(\输入输出示例:括号内是说明 输入: 2 (repeat=2) 20 500 (m=20 n=500) 1 100 (m=1, n=100) 27 C程序设计 2009春学期 上机练习M2-M8参考答案 输出: 28 496 (20到500之间的完数有:28,496) 1 6 28 (1到100之间的完数有:1,6,28) #include \int main(void) { int i, m, n; int repeat, ri; int factorsum(int number); scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\n); for(i=m;i<=n;i++){ if(i==factorsum(i)) printf(\ } 2 (repeat=2) 1 3 90 7 0 8 7 4 3 70 5 6 101 -1 输出 The sum of the odd numbers is 11. The sum of the odd numbers is 116. #include 第8周(M8) 40013 求奇数和 输入一个正整数repeat (0 sum); } } 40062 求x+x*x/2!+x*x*x/3!+x*x*x*x/4!+……的值 输入一个正整数repeat (0 输入1个实数 x,计算并输出下式的值,直到最后一项的绝对值小于0.00001(保留2位小数)。要求定义和调用函数fact(n)计算n的阶乘,可以调用pow函数求幂。 s = x+x*x/2!+x*x*x/3!+x*x*x*x/4!+…… 输入输出示例:括号内为说明 输入 3 (repeat=3) 0 (x=0) 1 (x=1) 0.1 (x=0.1) 输出 s = 0.00 s = 1.72 28 C程序设计 2009春学期 上机练习M2-M8参考答案 s = 0.11 #include 1 (repeat=1) 10 10 (x1=10, y1=10) 200 100 (x2=200, y2=100) 输出 Distance = 210.24 #include 50004 使用函数计算两点间的距离 输入一个正整数repeat (0 要求定义和调用函数 dist(x1, y1, x2, y2)计算两点间的距离,函数形参x1、y1、x2和y2的类型都是double,函数类型是double。 product = 1; for(j=1;j<=n;j++) product = product *j; } 50061 使用函数求a+aa+aaa+aa…a 程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat (0 要求定义并调用函数fn(a, n),它的功能是返回 aa…a(n个a),函数形参a和n的类型是int,函数类型是long。例如,fn(3,2)的返回值是33。 输入输出示例:括号内是说明 输入 2 (repeat=2) 2 3 (a=2, n=3) return product; 29 C程序设计 2009春学期 上机练习M2-M8参考答案 8 5 (a=8, n=5) 输出 246 (2+22+222) 98760 (8+88+888+8888+88888) #include 60002 整数的十进制、八进制和十六进制表现形式 输入一个正整数 repeat (0 依次以十进制、八进制和十六进制形式输入三个整数,输出每个整数的十进制、八进制和十六进制形式。 输入输出示例:括号内是说明 } return sum; b=b*10; sum+=b; int sum,j,b; sum=a; b=a; for(j=1;j 1 (repeat=1) 31 11 1a (十进制数31,八进制数11,十六进制数1a) 输出: The decimal is 31, the octal is 37, the hexadecimal is 1f. (十进制数31的十进制、八进制和十六进制形式是31, 37, 1f) The decimal is 9, the octal is 11, the hexadecimal is 9. (八进制数11的十进制、八进制和十六进制形式是9, 11, 9) The decimal is 26, the octal is 32, the hexadecimal is 1a. (十六进制数1a的十进制、八进制和十六进制形式是26, 32, 1a) #include 60003 分类统计字符 程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0 输入一行字符,以回车结束,统计出其中的英文字母、空格、数字和其他字符的个数。 输入输出示例:括号内是说明 输入 2 (repeat=2) Reold building room 123. Programming is fun! 输出 letter = 17, blank = 3, digit = 3, other = 1 (\building room 123.\中的英文字母、空格、数字和其他字符的个数) letter = 16, blank = 2, digit = 0, other = 1 (\中的英文字母、空格、数字和其他 printf(\ printf(\printf(\printf(\ 30 C程序设计 2009春学期 上机练习M2-M8参考答案 字符的个数) #include for(number=m;number<=n;number=number+2) { for(i=1;i<=number/2;i++) if( prime(i) { && count=0; prime(number-i) ) { printf(\\number, i, number-i); } } 60007 使用函数输出整数的逆序数 } } } count++; if(count%5==0) printf(\ break; 31 C程序设计 2009春学期 上机练习M2-M8参考答案 程序填空,不要改变与输入输出有关的语句。 输入2个整数,分别将其逆向输出。 要求定义并调用函数 fun(n),它的功能是返回 n 的逆向值,函数形参 n 的类型是int,函数类型是int。例如,fun(123)的返回值是321。 输入输出示例:括号内是说明 输入: 123 -910 输出: 123的逆向是321 -910的逆向是-19 #include 60009 统计单词 程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat (0 2 (repeat=2) Let's go to room 209. Programming is fun 输出 count = 5 (\ go to room 209.\中有5个单词) count = 3 (\ Programming is fun\中有3个单词) #include 60062 简单计算器 程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0 } printf(\count++; while (c==' ' && c!='\\n') c=getchar(); 32 C程序设计 2009春学期 上机练习M2-M8参考答案 算: 模拟简单运算器的工作:输入一个算式(没有空格),遇等号 \说明输入结束,输出运算结果。 假设计算器只能进行加、减、乘、除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。 输入输出示例:括号内是说明 输入 2 (repeat=2) 15+2/3= 1+2*10-10/2= 输出 5 10 程序中使用了operator作为变量,这是VC++的关键字,但不是TC的,要避免这种情况的发生,可以将关键字的颜色作标记,编程时就可避免。一般VC++缺省环境下关键字颜色会与一般的变量显示不同。 #include while(c != '=') { scanf(\ switch(c) { case'+':res=res+operand2;break; case'-':res=res-operand2;break; case'*':res=res*operand2;break; case'/':res=res/operand2;break; } c= getchar(); } printf(\ } 33
正在阅读:
Res - 2009春学期C语言上机练习参考答案汇总05-24
2017中传新闻传播硕士考研参考书汇总07-23
体育锻炼与合理营养(精)05-03
英文版精美加拿大简介03-28
2020年政府部门党总支先进事迹08-28
电子技术基础 模拟部分第9章(2)07-18
临床护理实践指南1-5章04-23
别了我的童年7篇03-26
五年级数学上册期末考试卷206-23
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 上机
- 汇总
- 练习
- 学期
- 答案
- 语言
- 参考
- 2009
- Res
- 航海英语考试大纲
- 09行政管理1班团支部“活力在基层,成才在莞工”主题团日活动
- 央企班组长岗位管理能力资格认证六期在线测试
- 基于Javaweb二手商品交易平台的设计与实现
- 梁板模板专项施工方案(毕业设计也可用)
- 安管部工作手册 - 图文
- 浅谈工程造价管理-题目:我国工程造价管理现存的问题 - 图文
- 2010年专转本英语试卷
- 施工组织设计
- 计算机组成习题5,6,8,9章答案
- 动态跌落补偿的三相静态串联电压稳压器控制算法
- 砌筑工试卷正文
- 乡卫生院党务政务公开内容目录
- 嘉兴南湖导游词
- 教师工作量计算方法
- 2017 - 2018学年高中数学专题08平面向量的基本定理同
- 参数线性规划的算法研究(毕业论文)
- 中美服务贸易发展趋势比较分析
- 59588 - 钢结构管道防腐涂料配套实施方案
- 2015年废轮胎市场调研及发展趋势预测报告