一个C语言程序问题,为什么不能算各个数据段所占比例? 求高手 在线等

2026年09月09日 18:16
有3个网友回答
网友(1):

不是你的代码有问题,这个数实在太小了,有图有真相。wintc下乱码,请原谅。我加了几段输出数据用以分析。

#include 

#define size 30

 int i,num[size],n; 

float score[size],ave; 

void bujige() 

{     int count=0;

     printf("不及格的人为:\n");

     for(i=0;i

     {         if(score[i]<60)

         {             count++;

             printf("学号:%d   成绩:%f\n",num[i],score[i]);

         }

     }

     printf("不及格总人数为:%d人\n",count);

 }

 void gaofen()

 {     int count=0;

     printf("成绩高于或等于全班平均成绩的有:\n");

     for(i=0;i

     {

         if(score[i]>=ave)

         {

             count++;

             printf("学号:%d   成绩:%f\n",num[i],score[i]);

         }

     }

     printf("成绩高于或等于全班平均成绩的总人数为:%d人\n",count);

 }

 void bili()

 {

     int stu[6],g;

     float bl[6];

     for(i=0;i<6;i++)

     {

         stu[i]=0;

     } 

    for(i=0;i

     {

         if(score[i]<60)

         {

             stu[0]++;

         }

         else

         { 

            g=(score[i]-50)/10;

            printf("%d\n",g);

             stu[g]++;

         }

     }

     for(i=0;i<6;i++)

     {

         bl[i]=stu[i]/n;

         printf("%f\n",bl[i]);

     }

     printf("成绩小于60分的比例为:%f\n",bl[0]);

     printf("成绩在60到69分的比例为:%f\n",bl[1]);

     printf("成绩在70到79分的比例为:%f\n",bl[2]);

     printf("成绩在80到89分的比例为:%f\n",bl[3]);

     printf("成绩在90到99分的比例为:%f\n",bl[4]);

     printf("成绩为100的比例为:%f\n",bl[5]);

 }

 main()

 {

     float a=0;

     printf("请输入学生的个数:");

     scanf("%d",&n);

     printf("请按照学好输入对应学生的成绩:\n");

     for(i=0;i

     {

         scanf("%f",&score[i]);

         num[i]=i+1;

         if(score[i]<0)

         {

             break;

         }

     }

     for(i=0;i

     {

         a=a+score[i];

     }

     ave=a/n;

     bujige();

     gaofen();

     bili();

     getch();

 } 当除不尽的时候自动归0了吧,好像是我用的编译器太渣了,看了你前面的调试,文件名后缀用.C,你用的是devc++吧?这个只有标准库,建议用VS2010

网友(2):

#include
#define size 30
int main()
{
int i,n,num[30];
float a=0,ave,score[size];
void bujige(float *score,int n) ;
void gaofen(float *score,int n,int ave);
void bili(float *score,int n);
printf("请输入学生的个数:");
scanf("%d",&n);
printf("请按照学号输入对应学生的成绩:\n");
for(i=0;i {
scanf("%f",&score[i]);
num[i]=i+1;
if(score[i]<0)
{
break;
}
}
for(i=0;i {
a+=score[i];
}
ave=a/size;
bujige(score,n);
gaofen(score,n,ave);
bili(score,n);
  return 0;
}
void bujige(float *score,int n)
{
int i,count=0;
printf("不及格的人为:\n");
for(i=0;i {
if(score[i]<60)
{
count++;
printf("学号:%d 成绩:%f\n",i+1,score[i]);
}
}
printf("不及格总人数为:%d人\n",count);
}
void gaofen(float *score,int n,int ave)
{
int i,count=0;
printf("成绩高于或等于全班平均成绩的有:\n");
for(i=0;i {
if(score[i]>=ave)
{
count++;
printf("学号:%d 成绩:%f\n",i+1,score[i]);
}
}
printf("成绩高于或等于全班平均成绩的总人数为:%d人\n",count);
}
void bili(float *score,int n)
{
int i,stu[6],g;
float bl[6];
for(i=0;i<6;i++)
{
stu[i]=0;
}
for(i=0;i {
if(score[i]<60)
{
stu[0]++;
}
else
{
g=(score[i]-50)/10;
stu[g]++;
}
}
for(i=0;i<6;i++)
{
bl[i]=stu[i]/n;
}
printf("成绩小于60分的比例为:%f\n",bl[0]);
printf("成绩在60到69分的比例为:%f\n",bl[1]);
printf("成绩在70到79分的比例为:%f\n",bl[2]);
printf("成绩在80到89分的比例为:%f\n",bl[3]);
printf("成绩在90到99分的比例为:%f\n",bl[4]);
printf("成绩为100的比例为:%f\n",bl[5]);
}

网友(3):

#include
#define size 30
int i,num[size],n;
float score[size],ave;
void bujige()
{ int count=0;
printf("不及格的人为:\n");
for(i=0;i { if(score[i]<60)
{ count++;
printf("学号:%d 成绩:%f\n",num[i],score[i]);
}
}
printf("不及格总人数为:%d人\n",count);
}
void gaofen()
{ int count=0;
printf("成绩高于或等于全班平均成绩的有:\n");
for(i=0;i {
if(score[i]>=ave)
{
count++;
printf("学号:%d 成绩:%f\n",num[i],score[i]);
}
}
printf("成绩高于或等于全班平均成绩的总人数为:%d人\n",count);
}
void bili()
{
int stu[6],g;
float bl[6];
for(i=0;i<6;i++)
{
stu[i]=0;
}
for(i=0;i {
if(score[i]<60)
{
stu[0]++;
}
else
{
g=(int)(score[i]-50)/10;
stu[g]++;
}
}
for(i=0;i<6;i++)
{
bl[i]=(float)stu[i]/n;
}
printf("成绩小于60分的比例为:%f\n",bl[0]);
printf("成绩在60到69分的比例为:%f\n",bl[1]);
printf("成绩在70到79分的比例为:%f\n",bl[2]);
printf("成绩在80到89分的比例为:%f\n",bl[3]);
printf("成绩在90到99分的比例为:%f\n",bl[4]);
printf("成绩为100的比例为:%f\n",bl[5]);
}
void main()
{
float a=0;
printf("请输入学生的个数:");
scanf("%d",&n);
printf("请按照学好输入对应学生的成绩:\n");
for(i=0;i {
scanf("%f",&score[i]);
num[i]=i+1;
if(score[i]<0)
{
break;
}
}
for(i=0;i {
a=a+score[i];
}
ave=a/n;
bujige();
gaofen();
bili();
}