中国大学MOOC哈工大C语言程序设计精髓第六周编程题答案
- 格式:doc
- 大小:23.00 KB
- 文档页数:4
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; } (注:文档可能无法思考全面,请浏览后下载,供参考。)