Res春学期C语言上机练习参考答案汇总

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

20011求华氏温度100°F对应的摄氏温度。

(2)
20012 求华氏温度150°F 对应的摄氏温度。

(3)
20013求摄氏温度26°C对应的华氏温度。

(3)
20015当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。

(3)
20026 输入2个整数num1 和num2,计算并输出它们的和、差、积、商与余数。

4 第3周(M3) (5)
20031 求1+2+3+......+100(调试示例error02_5) (5)
20032 求m+(m+1)+(m+2)+......+100 (5)
20033 求1/m+1/(m+1)+1/(m+2)+......+1/n .. (6)
20034 求1 + 1/3 + 1/5 + ......的前n项和 (7)
20035 求1-1/4+1/7-1/10+......的前n项之和 . (7)
20036 输出华氏-摄氏温度转换表(改错题error02_6) (8)
20038 求x的n次幂 (9)
20041 生成3 的乘方表 (10)
20044 求100^0.5+101^0.5+......+1000^0.5.. (10)
20053 计算物体自由下落的距离 (11)
20056 计算分段函数 (11)
20061 阶梯电价 (12)
20062 求m*m+1/m+(m+1)*(m+1)+1/(m+1)+(m+2)*(m+2)+1/(m+2)+......+n*n+1/n13
20063 求1-2/3+3/5-4/7+5/9-6/11+ (14)
20064 求2^1+2^2+2^3+......+2^n .. (15)
第4周(M4) (15)
10007 显示图案(复习printf()的字符串输出) (15)
20042 生成阶乘表 (16)
20043 使用函数求n! /(m!* (n-m)!) (16)
20054 求平均值 (17)
20057 求1+1/2+1/3+......+1/n (18)
20065 求0!+1!+2!+......+n! .. (18)
40015 求最小值 (19)
40018 求a+aa+aaa+aa...a (20)
第5周(M5) (21)
30001 求一元二次方程的根 (21)
30002 求分段函数的值 (23)
30003 分类统计字符 (23)
30004 显示五级记分制成绩所对应的百分制成绩区间(使用switch) (24)
30005 显示水果的价格(使用switch) (25)
30007 求三角形的面积和周长 (27)
30008 计算个人所得税 (28)
30051 判断闰年 (29)
30052 统计学生平均成绩与及格人数 (30)
30053 分段计算水费(使用嵌套的if-else语句) (31)
40011 求最小公倍数和最大公约数(调试示例error04_1) (32)
40012 求1-1/4+1/7-1/10+1/13-1/16+...... . (33)
40014 求整数的位数 (34)
40023 换硬币 (35)
40024 找出各位数字的立方和等于它本身的数 (36)
40025 找完数(改错题error04_2) (38)
40027 从高位开始逐位输出一个整数的各位数字(选作) (39)
40052 判断素数 (40)
40053 逆序输出整数 (41)
40054 输出斐波那契序列 (42)
第7周(M7) (42)
50002 使用函数判断数的符号 (42)
50003 使用函数求奇数和 (43)
50005 使用函数统计素数并求和 (44)
50006 使用函数统计一个整数中数字的个数 (45)
50007 使用函数找水仙花数 (46)
50009 使用函数求余弦函数的近似值 (48)
50052 使用函数找最大值 (49)
50062 使用函数输出指定范围内的Fibonacci 数 (50)
50063 使用函数找出指定范围内的完数 (51)
第8周(M8) (52)
40013 求奇数和 (52)
40062 求x+x*x/2!+x*x*x/3!+x*x*x*x/4!+......的值.. (53)
50004 使用函数计算两点间的距离 (54)
50061 使用函数求a+aa+aaa+aa...a.. (55)
60002 整数的十进制、八进制和十六进制表现形式 (56)
60003 分类统计字符 (57)
60006 验证歌德巴赫猜想 (58)
60007 使用函数输出整数的逆序数 (59)
60009 统计单词 (60)
60062 简单计算器 (61)
第2周(M2)
20011求华氏温度100°F对应的摄氏温度。

计算公式如下,c=5*(f-32)/9,式中:c表示摄氏温度,f表示华氏温度。

(源程序error02_1.cpp) 输入输出示例:
fahr=100,celsius=37
20012 求华氏温度150°F 对应的摄氏温度。

计算公式:C = 5*F/9-5*32/9,式中:C表示摄氏温度,F表示华氏温度。

输入输出示例:
fahr=150, celsius=66
20013求摄氏温度26°C对应的华氏温度。

计算公式如下,f=9*c/5+32,式中:c表示摄氏温度,f表示华氏温度。

输入输出示例:
celsius=26,fahr=78
20015当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。

输入输出示例:
整数152的个位数字是2,十位数字是5,百位数字是1
20026 输入2个整数num1 和num2,计算并输出它们的和、差、积、商与余数。

输出两个整数的余数可以用 printf("%d %% %d = %d\n", num1, num2, num1%num2);
输入输出示例:括号内是说明
输入
5 3 (num1=5,num2=3)
输出
5 + 3 = 8
5 - 3 = 2
5 * 3 = 15
5 / 3 = 1
第3周(M3)
20031 求1+2+3+......+100(调试示例error02_5)
计算表达式 1 + 2 + 3 + ...... + 100的值。

输出示例:
sum = 5050
20032 求m+(m+1)+(m+2)+......+100
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数m(0<=m<=100),计算表达式 m + (m+1) + (m+2) + ...... + 100的值。

输入输出示例:括号内为说明
输入
3 (repeat=3)
0 (计算0+1+2+ (100)
10 (计算10+11+12+ (100)
50 (计算50+51+52+ (100)
输出
sum = 5050
sum = 5005
sum = 3825
20033 求1/m+1/(m+1)+1/(m+2)+......+1/n
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2个正整数 m 和 n(m<=n),计算表达式 1/m + 1/(m+1) + 1/(m+2) + ...... + 1/n的值,输出时保留3位小数。

输入输出示例:括号内为说明
输入
3 (repeat=3)
5 15 (计算1/5+1/6+1/7+...+1/15)
10 20 (计算1/10+1/11+1/12+...+1/20)
1 3 (计算1+1/2+1/3)
输出
sum = 1.235
sum = 0.769
sum = 1.833
20034 求1 + 1/3 + 1/5 + ......的前n项和
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数 n,计算表达式 1 + 1/3 + 1/5 + ...... 的前 n 项之和,输出时保留6位小数。

输入输出示例:括号内为说明
输入
2 (repeat=2)
5 (计算1+1/3+1/5+1/7+1/9)
23 (计算1+1/3+1/5+...+1/45)
输出
sum = 1.787302
sum = 2.549541
20035 求1-1/4+1/7-1/10+……的前n项之和
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入一个正整数 n,计算1-1/4+1/7-1/10+……的前 n 项之和,输出时保留3位小数。

输入输出示例:括号内是说明
输入
2 (repeat=2)
3
10
输出
sum = 0.893
sum = 0.819
20036 输出华氏-摄氏温度转换表(改错题error02_6)
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入2个整数 lower 和 upper,输出一张华氏—摄氏温度转换表,华氏温度的取值范围是[lower, upper],每次增加2F。

计算公式:c = 5 * (f - 32) / 9,其中:c表示摄氏温度,f表示华氏温度。

输出请使用语句 printf("%3.0f %6.1f\n", fahr, 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
20038 求x的n次幂
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入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
20041 生成3 的乘方表
输入一个正整数n,生成一张3的乘方表,输出3^0 ~ 3^n的值,可调用幂函数计算3的乘方。

输出使用语句 printf("pow(3,%d) = %.0f\n", i, mypow);
输入输出示例:括号内是说明
输入
3 (n=3)
输出
pow(3,0) = 1
pow(3,1) = 3
pow(3,2) = 9
pow(3,3) = 27
20044 求100^0.5+101^0.5+……+1000^0.5
计算 100^0.5+101^0.5+……+1000^0.5的值(保留2位小数),可调用sqrt 函数计算平方根。

输入输出示例:括号内是说明
输出
sum = 20435.99
20053 计算物体自由下落的距离
一个物体从 100m 的高空自由落下,编写程序,求它在前 3s 内下落的垂直距离(结果保留2位小数)。

设重力加速度为10米/秒^2。

20056 计算分段函数
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
编写程序,输入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
20061 阶梯电价
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
为了提倡居民节约用电,某省电力公司执行"阶梯电价",安装一户一表的居民用户电价分为两个"阶梯":月用电量50千瓦时以内的,电价为0.53元/千瓦时;超过50千瓦时的用电量,电价上调0.05元/千瓦时。

输入用户的月用电量e(千瓦时),计算并输出该用户应支付的电费(元),结果保留2位小数。

输入输出示例:括号内是说明
输入
2 (repeat=2)
10 (e=10)
100 (e=100)
输出
cost = 5.30
cost = 55.50
20062 求m*m+1/m+(m+1)*(m+1)+1/(m+1)+(m+2)*(m+2)+1/(m+2)+......+n*n+1/n
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入两个正整数 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
20063 求1-2/3+3/5-4/7+5/9-6/11+……
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数 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
20064 求2^1+2^2+2^3+……+2^n
第4周(M4)
10007 显示图案(复习printf()的字符串输出)编写程序,在屏幕上显示如下图案。

* * * *
* * *
* *
*
20042 生成阶乘表
输入一个正整数n,生成一张阶乘表,输出 1! ~ n! 的值,要求定义和调用函数fact(n)计算 n!,函数类型为double。

输出使用语句 printf("%d! = %.0f\n", i, myfact);
输入输出示例:括号内是说明
输入
3 (n=3)
输出
1! = 1
2! = 2
3! = 6
20043 使用函数求n! /(m!* (n-m)!)
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入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)
输出:
result = 21
result = 792
20054 求平均值
编写程序,输入 3 个整数,计算并输出它们的平均值(结果保留2位小数)。

输入输出示例:
输入
1 2 3
输出
average = 2.00
20057 求1+1/2+1/3+......+1/n
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
编写程序,输入一个正整数n,求1+1/2+1/3+......的前n项之和,输出时保留6位小数。

输入输出示例:括号内为说明
输入
2 (repeat=2)
6 (计算1+1/2+1/3+1/4+1/5+1/6)
2 (计算1+1/2)
输出
sum = 2.450000
sum = 1.500000
20065 求0!+1!+2!+……+n!
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
编写一个程序,输入一个正整数 n,计算 e = 0!+1!+2!+……+n!,要求定义和调用函数fact(n)计算n!,函数类型是double。

例:括号内是说明输入
3 (repeat=3) 1
2
4
输出
sum = 2
sum = 4
sum = 34
40015 求最小值
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数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
40018 求a+aa+aaa+aa…a
第5周(M5)
30001 求一元二次方程的根
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入参数a,b,c,求一元二次方程a*x*x+b*x+c=0的根,结果保留2位小数。

输出使用以下语句:
printf("参数都为零,方程无意义!\n");
printf("a和b为0,c不为0,方程不成立\n");
printf("x = %0.2f\n", -c/b);
printf("x1 = %0.2f\n", (-b+sqrt(d))/(2*a));
printf("x2 = %0.2f\n", (-b-sqrt(d))/(2*a));
printf("x1 = %0.2f+%0.2fi\n", -b/(2*a), sqrt(-d)/(2*a));
printf("x2 = %0.2f-%0.2fi\n", -b/(2*a), sqrt(-d)/(2*a));
输入输出示例:括号内为说明
输入:
5 (repeat=5)
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
30002 求分段函数的值
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入一个整数 x,计算并输出下列分段函数 sign(x) 的值。

-1 x < 0
y = sign(x) = 0 x = 0
1 x > 0
输入输出示例:括号内是说明
输入
3 (repeat=3)
10 (x=10)
0 (x=0)
-98 (x=-98)
输出
sign(10) = 1 (x = 10时 y = 1)
sign(0) = 0 (x = 0时 y = 0)
sign(-98) = -1 (x = -98时y = -1)
30003 分类统计字符
输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

输入输出示例:括号内是说明
输入
Reold 123?
输出
letter = 5, blank = 1, digit = 3, other = 1
30004 显示五级记分制成绩所对应的百分制成绩区间(使用switch)
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用switch 语句。

五级制成绩对应的百分制成绩区间为:A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59),如果输入不正确的成绩,显示"Invalid input"。

输出使用以下语句:
printf("90-100\n");
printf("80-89\n");
printf("70-79\n");
printf("60-69\n");
printf("0-59\n");
printf("Invalid input\n");
输入输出示例:括号内是说明
输入
6ABCDEj (repeat=6,输入的五级成绩分别为A、B、C、D、E和无效的字符j)
输出
90-100
80-89
70-79
60-69
0-59
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
30007 求三角形的面积和周长
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入三角形的3条边 a, b, c,如果能构成一个三角形,输出面积 area 和周长perimeter(保留2位小数);否则,输出"These sides do not correspond to a valid triangle"。

在一个三角形中,任意两边之和大于第三边。

三角形面积计算公式:area = (s(s-a)(s-b)(s-c))^0.5 ,其中s = (a+b+c)/2
输出使用以下语句:
printf("area = %.2f, perimeter = %.2f\n",area, perimeter);
printf("These sides do not correspond to a valid triangle\n");
输入输出示例:括号内是说明
输入
2 (repeat=2)
5 5 3 (a=5,b=5,c=3)
1 4 1 (a=1,b=4,c=1)
输出
area = 7.15, perimeter = 13.00
These sides do not correspond to a valid triangle
30008 计算个人所得税
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入一个职工的月薪 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%
输入输出示例:括号内是说明
输入
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
30051 判断闰年
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入年year,判断该年是否为闰年。

判断闰年的条件是:能被 4 整除但不能被100 整除,或者能被 400 整除。

输出使用以下语句:
printf("%d is a leap year.\n",year);
printf("%d isn't a leap year.\n",year);
输入输出示例:括号内是说明
输入
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.
30052 统计学生平均成绩与及格人数
输入一个正整数 n,再输入 n 个学生的成绩,计算平均分(结果保留1位小数),并统计所有及格的人数。

输入输出示例:括号内是说明
输入
5 (n=5)
77 54 92 73 60
输出
average = 71.2
count = 4
30053 分段计算水费(使用嵌套的if-else语句)
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
为鼓励居民节约用水,自来水公司采取按月用水量分段计费的办法,居民应交水费y(元)与月用水量x(吨)的函数关系式如下。

输入用户的月用水量x(吨),计算并输出该用户应支付的水费y(元)(保留2位小数)。

要求用嵌套的if-else语句。

0 (x<0)
y = f(x) = 4x/3 (0<=x<=15)
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
第6周(M6)
40011 求最小公倍数和最大公约数(调试示例error04_1)
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入两个正整数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
40012 求1-1/4+1/7-1/10+1/13-1/16+……
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入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)
输出
sum = 0.835549
40014 求整数的位数
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入一个整数 in,求它的位数。

例如123的位数是3。

请使用do-while语句实现循环。

输入输出示例:括号内是说明
输入
4 (repeat=4)
12345 (in=12345)
-100 (in=-100)
-1 (in=-1)
1290 (in=1290)
输出
count = 5 (12345的位数是5)
count = 3 (-100的位数是3)
count = 1 (-1的位数是1)
count = 4 (99的位数是2)
40023 换硬币
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
将一笔零钱(大于8分,小于1元, 精确到分)换成5分、2分和1分的硬币。

输入金额,问有几种换法?针对每一种换法,每种硬币至少有一枚,请输出各种面额硬币的数量和硬币的总数量。

要求:硬币面值按5分、2分、1分顺序,各类硬币数量依次从大到小的顺序,输出各种换法。

输出使用语句:printf("fen5:%d,fen2:%d,fen1:%d,total:%d\n",fen5, fen2, fen1, fen5+fen2+fen1);
输入输出示例:括号内为说明
输入:
2 (repeat=2)
10 (money=10分)
13 (money=13分)
输出:
fen5:1,fen2:2,fen1:1,total:4
fen5:1,fen2:1,fen1:3,total:5
count = 2 (10分有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
40024 找出各位数字的立方和等于它本身的数
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入两个正整数 m 和 n(1<=m, n<=1000),输出 m 到 n之间的所有满足各位数字的立方和等于它本身的数。

例如153的各位数字的立方和是 1^3+5^3+3^3=153 ,这里a^b表示a的b次方。

输出使用语句:printf("%d\n", i);
输入输出示例:括号内为说明
输入:
2 (repeat=2)
100 400 (m=100, n=400)
1 100 (m=1, n=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)
40025 找完数(改错题error04_2)
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入两个正整数 m 和 n(1<=m, n<=1000),输出 m 到 n之间的所有完数,并输出其因子。

一个数如恰好等于它的因子之和,这个数称为完数,例如,6=1+2+3,其中1、2、3为因子,6为因子和。

输出使用以下语句:
printf("%d = 1", number);
printf(" + %d", factor);
printf("\n");
输入输出示例:括号内为说明
输入:
2 (repeat=2)
1 30 (m=1, n=30)
400 500 (m=400, n=500)
输出
result:
1 = 1
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
result:
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
40027 从高位开始逐位输出一个整数的各位数字(选作)
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个整数 in,从高位开始逐位分割并输出它的各位数字。

输出使用语句:printf("%-2d", digit);
输入输出示例:括号内为说明
输入
3 (repeat=3)
23456 (in=23456)
-600 (in=-600)
8 (in=8)
输出
2 3 4 5 6
6 0 0
8
40052 判断素数
输入一个正整数n,再输入n个正整数,判断它们是否为素数。

素数就是只能被1和自身整除的正整数,1不是素数,2是素数。

输出使用以下语句:
printf("%d is a prime\n", m);
printf("%d is'nt a prime\n", m);
输入输出示例:括号内为说明
输入
4 (n=4)
1 2 9 17
输出
1 is'nt a prime
2 is a prime
9 is'nt a prime
17 is a prime
40053 逆序输出整数
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个整数 in,将其逆序输出。

假设正数和负数逆序输出的结果一样。

输出使用语句 printf("%d ", digit);
输入输出示例:括号内为说明
输入
2 (repeat=2)
200 (in=200)
-12345 (in=-12345)
输出
0 0 2
5 4 3 2 1
40054 输出斐波那契序列
输入一个正整数 n(1<n<20),输出菲波那契(Fibonacci)序列 1 1 2 3 5 8 … 的前 n 项。

输出使用语句:printf("%d ", x);
输入输出示例:
输入
10
输出
1 1
2
3 5 8 13 21 3
4 55
第7周(M7)
50002 使用函数判断数的符号
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入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)
50003 使用函数求奇数和
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一批正整数(以零或负数为结束标志),求其中的奇数和。

要求定义和调用函数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.
50005 使用函数统计素数并求和
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入2个正整数 m 和 n(1<=m,n<=500),统计并输出 m 到 n 之间的素数的个数以及这些素数的和。

素数就是只能被1和自身整除的正整数,1不是素数,2是素数。

要求定义并调用函数 prime(m) 判断m是否为素数,当m为素数时返回1,否则返回0,函数形参 m 的类型是int,函数类型是int。

输入输出示例:括号内是说明
输入:
1 (repeat=1)
1 10 (m=1, n=10)
输出:
Count = 4, sum = 17 (1到10之间有4个素数:2,3,5,7)
50006 使用函数统计一个整数中数字的个数
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
读入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)
输出
Number 21252 of digit 2: 3 (21252中有3个2)
Number -1111 of digit 9: 0 (-1111中有0个9)
50007 使用函数找水仙花数
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入2 个正整数 m 和 n(1<=m,n<=1000),输出 m 到 n 之间的所有水仙花数。

水仙花数是指各位数字的立方和等于其自身的数。

要求定义并调用函数is(number)判断 number 的各位数字之立方和是否等于其自身,若相等则返回1,否则返回0,函数形参 number 的类型是int,函数类型是int。

输出使用语句:printf("%d\n", i);
输入输出示例:括号内是说明
输入:
2 (repeat=2)
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 (1*1*1=1)
50009 使用函数求余弦函数的近似值
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入精度 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)
0.001 0 (e=0.001, x=0)
0.0001 -3.14 (e=0.0001, x=-3.14)
输出:
sum = 1.000000
sum = -0.999999
50052 使用函数找最大值
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入两个整数a和b,输出其中较大的数。

要求定义和调用函数max(a, b)找出a、b中较大的数,函数形参a、b的类型是int,函数类型是int。

输入输出示例:括号内是说明
输入
3 (repeat=3)
输入:
5 8 (a=5, b=8)
-1 -10 (a=-1, b=-10)
1 1 (a=1, b=1)
输出:
max(5,8) = 8
max(-1,-10) = -1
max(1,1) = 1
50062 使用函数输出指定范围内的Fibonacci 数
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入两个正整数 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("%ld ", f);
输入输出示例:括号内是说明
输入:
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数)。

相关文档
最新文档