文档库 最新最全的文档下载
当前位置:文档库 › 中国大学MOOC 哈工大 C语言程序设计精髓第六周编程题答案

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

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

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

#include

#include

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

#include

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

{

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

}

q=p+q;

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

return 0;

}

6.3

搬砖问题(4分)

题目内容:

n块砖( 27

#include "stdio.h"

main()

{

int a, b, c;

long n, i, t, s = 0;

printf("Input n(27

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

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;

}

相关文档