c语言高手看一下,谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/29 14:36:49
#include <conio.h>
#define N 100
main()
{
float score[N];
int bb[5];
int grade,i=-1,n=0;
char ch='A';
clrscr();
printf("Input a score(0~100): \n");
do
{
i++;
n++;
printf("score[%d]=",i);
scanf( "%f",&score[i]); /*这里为什么一定要是%f,为什么不能是%d*/
}while(score[i]!=0);
for(i=0;i<5;i++)
bb[i]=0;
for(i=0;i<n-1;i++)
{
grade =score[i]/10;
switch (grade)
{
case 10:
case 9: bb[0]++; break;
case 8: bb[1]++; break;
case 7: bb[2]++; break;
case 6: bb[3]++; break;
default: bb[4]++;
}
}
for(i=0;i<5;i++)
printf("\n%c:%d",ch+i,bb[i]);
}

float score[N];
你前面定义了 score为单进度浮点数组

这是输出格式问题
当输出整数时,格式为%d,长整数时则为%ld;
当输出为实数时,格式为%f,双精度的为%lf;
当输出字符串时格式为%s;
当输出为字符时格式为%c;
在这题里你定义了float score[N]; 为实数类型,且是单精度的,所以输出格式为%f

你的问题是注解那里吗?
这是因为你之前定义score数组是把它定义成float 浮点类型 的,而scanf函数的%f格式就是要求输入一个浮点类型的数