在过去的半个月里很多省份的专升本考试已经结束了,在看了许多计算机专业同学的C语言题目后作者挑一些看似简单实则有坑的题目和大家一起看看吧。
某班有n位同学,现要求统计该班同学的C语言程序设计课总成绩,以及平均分,请用代码实现。
这一道题目很多同学第一眼看上去非常的简单,无非就是两种方法要么直接用变量,要么用数组,但是再仔细思考后可能会陷入思维陷阱,会发现用变量的话很难存储变量的值,甚至在写循环的过程中会踩坑,但是用数组的话又有一个问题,班级的人数不是固定的,因此n是一个变量,而变量是不能够作做数组的范围的,于是很多同学想着去给n限定一个范围,这就使得程序变得格外复杂了,下面跟着学长一起看看如何用简单便捷的方式写出这个程序吧。
代码实现:
#include<stdio.h>
int main(){
int a,b,sum=0,n;
printf("请输入一个正整数:\n");
scanf("%d",&n);
printf("请输入这%d个学生的成绩:\n",n);
scanf("%d",&a);
for(int i=1; i>n; i++){ /*这里要求i=1的原因是在正常的数学中计数是从1开始的,如果我们以C语
言程序设计的惯性思维来使i=0,则会使程序在设计上出现bug,例如这里我们对
n赋值为5,而想要达到i>=n的条件则需要输入6个学生的成绩,而实际上我们
只有5个学生,因此要注意for循环在设计时的一些细节*/
sum=sum+a;
scanf("%d",&a); /*这里再写一遍输入语句,为了能够使程序随着for循环的循环进行成绩获取,
而且要写在sum=sum+a之后,因为你写在之前会覆盖第一位同学的成绩,从而导
致程序出错*/
}
b=sum/n;
printf("这%d个学生的总成绩为:%d\n这%d个学生的平均成绩为:%d\n",n,sum,n,b);
return 0;
}