Mr. wang希望淡化分数,让学生把更多的精力投入到创造性的学习中,他准备把学生以前的分数转化为等级
A
,
B
,
C
,
D
,
E
,他规定:(1)
90分以上为
A
;(2)
80∼89分为
B
;(3)
70∼79分为
C
;(4)
60∼69分为
D
;(5)
60
分以下为E
。他希望尽快完成这件事情,你能编写个程序帮他吗?
有多组测试数据。输入的第一行是整数T
( 0<T≤1000),表示测试数据的组数。每一组测试数据只有一行,第一个数字是整数 n,表示一个班的人数,紧接着是 n位同学的分数,该行每个数后有一个空格。该行没有其它多余的符号。 20≤n≤40。
Output对应每组输入,依次输出每同学分数转换后对应的等级,占一行,每个等级后应有一个空格。该行不能有其它多余的符号。
Sample Input1 20 69 87 14 85 27 56 51 65 42 94 93 50 36 5 65 54 100 15 31 91Sample Output
D B E B E E E D E A A E E E D E A E E A
题解:很简单的题,但是我一直格式错误,开始我以为是因为空格的问题,想了好久都没想出来,结果是换行的问题。
#include <stdio.h>
void exchange(int a[],char b[],int n)
{
int i;
for(i = 0;i < n;i++)
{
if(a[i] >= 90)
{
b[i] = 'A';
}
else if(a[i] >= 80)
{
b[i] = 'B';
}
else if(a[i] >= 70)
{
b[i] = 'C';
}
else if(a[i] >= 60)
{
b[i] = 'D';
}
else if(a[i] >= 0)
{
b[i] = 'E';
}
}
}
int main()
{
int N;
int i;
scanf("%d",&N);
while(N--)
{
int n;
int a[45];
char b[45];
scanf("%d",&n);
for(i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}
exchange(a,b,n);
for(i = 0;i < n;i++)
{
printf("%c ",b[i]);
}
printf("\n");
}
return 0;
}