教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案

来源:网络收集 时间:2026-08-30
导读: 6.1 下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前

6.1 下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。

#include<stdio.h>

#include <string.h>

int main()

{

char score[100];

int flag = 0, i, s;

char grade;

printf("Please input score:\n");

while (1)

{

flag=0;

scanf("%s", score);

for (i = 0; i < strlen(score); i++)

{

if (score[i] >= '0' && score[i] <= '9')

{

continue;

}

else

{

flag = 1;

break;

}

}

s = atoi(score);

if (s < 0 || s > 100 || flag == 1)

{

printf("Input error!\n");

printf("Please input score:\n");

continue;

}

else{

break;

}

}

s = atoi(score);

if (s >= 90)

{

grade = 'A';

}

else if (s >= 80)

{

grade = 'B';

}

else if (s >= 70)

{

grade = 'C';

}

else if (s >= 60)

{

grade = 'D';

}

else

{

grade = 'E';

}

printf("grade: %c\n", grade); return 0;

}

6.2 编程计算a+aa+aaa+…+aa…a(n个a)的值(4分)

题目内容:

编程计算a+aa+aaa+…+aa…a(n个a)的值,n和a的值由键盘输入。例如,当n=4,a=2,表示计算

2+22+222+2222的值。

#include<stdio.h>

#include<math.h>

int main()

{

int n,a,i,j;

double p=0,q=0;

printf("Input a,n:\n");

scanf( "%d,%d",&a,&n);

for(i=1;i<=n;i++)

{

for(j=0,p=0;j<i;j++)

{

p=p+a*pow(10,j);

}

q=p+q;

}

printf("sum=%.0f\n",q);

return 0;

}

6.3

搬砖问题(4分)

题目内容:

n块砖( 27<n<=77 ),36人搬,男搬4,女搬3,两个小孩抬一块砖,要求一次搬完,问男人、女人和小孩各需多少人?请用穷举法编程求解,n的值要求从键盘输入。输出结果按照男人数量升序给出(见下面示例3)。

#include "stdio.h"

main()

{

int a, b, c;

long n, i, t, s = 0;

printf("Input n(27<n<=77):\n");

scanf("%d", &n);

for (a = 0; 4 * a <= n; a++)

for (b = 0; 4 * a + 3 * b <= n; b++)

for (c = 0; 4 * a + 3 * b + c / 2 <= n; c += 2)

if (4 * a + 3 * b + c / 2 == n && c%2 == 0 && a+b+c==36)

{

printf("men=%d,women=%d,children=%d\n", a, b, c);

}

}

6.4

编程输出某年某月有多少天(考虑到闰年)。(5分)

题目内容:

从键盘输入一个年份和月份,输出该月有多少天(考虑闰年),用switch语句编程。

#include<stdio.h>

int main()

{int year,month,day;

printf("Input year,month:\n");

scanf("%d,%d",&year,&month);

switch(month)

{

case 1: day=31;break;

case 2: day=28;break;

case 3: day=31;break;

case 4: day=30;break;

case 5: day=31;break;

case 6: day=30;break;

case 7: day=31;break;

case 8: day=31;break;

case 9: day=30;break;

case 10: day=31;break;

case 11: day=30;break;

case 12: day=31;break;

default:day=-1;printf("Input error!\n");

}

if((year%4==0&&year%100!=0||year%400==0)&&month==2) day=29;

if (day!=-1)

printf("%d days\n",day);

return 0;

}

7.1递归法计算游戏人员的年龄(4分)

题目内容:

有n个人围坐在一起,问第n个人多大年纪,他说比第n-1个人大2岁;问第n-1个人,他说比第n-2个人大2岁,.....,问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说自己10岁,问第n个人多大年纪。

递归函数原型:unsigned int ComputeAge(unsigned int n);

提示:

计算年龄的递归公式为:

#include<stdio.h>

unsignedint ComputeAge(unsignedint n){

}

main()

{

int i, j, k, s = 23, n, c, age;

scanf("%d", &n);

printf("The person's age is %u\n",8+2*n);

}

7.2递归法计算两个数的最大公约数(4分)

题目内容:

利用最大公约数的性质计算。对正整数a和b,当a>b时,若a中含有与b相同的公约数,则a 中去掉b后剩余的部分a-b中也应含有与b相同的公约数,对a-b和b计算公约数就相当于对a 和b计算公约数。反复使用最大公约数的上述性质,直到a和b相等为止,这时,a或b就是它们的最大公约数。这三条性质,也可以表示为:

性质1 如果a>b,则a和b与a-b和b的最大公约数相同,即Gcd(a, b) = Gcd(a-b, b)

性质2 如果b>a,则a和b与a和b-a的最大公约数相同,即Gcd(a, b) = Gcd(a, b-a)

性质3 如果a=b,则a和b的最大公约数与a值和b值相同,即Gcd(a, b) = a = b

#include<stdio.h>

int gys(int a,int b)

{

int r;

r=a%b;

if(r==0) return b;

elsereturn gys(b,r);

}

main()

{

printf("Input a,b:");

int a,b;

scanf("%d,%d", &a,&b);

if (a<=0 || b<=0){

printf("Input error!\n");

}

else

printf("%d\n",gys(a,b));

}

7.3 寻找中位数v1.0(4分)

题目内容:

编写一个函数返回三个整数中的中间数。函数原型为:int mid(int a, int b, int c);

函数功能是返回a,b,c三数中大小位于中间的那个数。

输入格式: "%d%d%d"

输出格式:"The result is %d\n"

输入样例1:

12 6 18↙

输出样例1:

The_result_is_12

输入样例2:

-9 7 -2↙

输出样例2:

The_result_is_-2

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

(注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。)

#include< …… 此处隐藏:7085字,全部文档内容请下载后查看。喜欢就下载吧 ……

中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1803219.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)