题目描述
兴趣小组收集学员成绩信息,每个学员的成绩有两种表示方法,一种用best、good、poor三种等级来表示,还有一种就是直接用分数来表示(百分制)。请保持学员成绩信息,并且统计有多少人是用等级来表示成绩的,用分数来表示成绩的人的平均分是多少(取整)
输入
第1行输入1个正整数n表示学员人数(n<=1000)
第2~n+1行,每行一个字符和一个字符串,中间用一个空格隔开。第一个字符串表示这个学生成绩类型,有C、N两种,分别代表等级表示和分数表示,第二个字符串表示成绩信息
输出
一行两个整数,分别表示用等级表示成绩的人数和用分数表示成绩的人的平均分(取整),中间用一个空格隔开
样例输入
5 C best C good N 90 C poor N 98
样例输出
3 94
#include<stdio.h>
struct stu{
char typ[5];
char grade[10];
};
int main(){
struct stu s[1000];
int i,n,sum_C=0,sum_N,ave_N,k=0;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%s%s",&s[i].typ,&s[i].grade);
if(s[i].typ[0]=='C'){
sum_C++;
}
else{
sum_N=sum_N+atoi(s[i].grade);
k++;
}
}
ave_N=sum_N/k;
printf("%d %d",sum_C,ave_N);
return 0;
}
自我反思:我在if语句中使用了s[i].typ=='C',输出一直报错,后来我改成了s[i].typ[0]=='C',输出结果就对了。按理来说,前面只输入了一个字母,这两种表达方式应该是一样的……有点搞不懂,这数组越写越有点迷了。