求大于学生成绩平均值的人数

时间:2022-10-21 00:45:19
int main(int argc, char *argv[])
{
  printf("hello");
  float score[5];
float v,s=0;
int k;

printf("请输入学生的学习成绩!\n");
int i;
for(i=0;i<5;i++)
{
        printf("score[%d]=",i);
  
scanf("%f",&score[i]);
// printf("/n");
       s=s+score[i];
        


}
v=s/5;
printf("%f\n",v);
for(i=0;i<5;i++)
{  k=0;
//printf("%f",score[i]);
if(score[i]>v)
  { k++;
                    
                    }
   
                   
                   
                   
                   }


printf("k=%d",k);

  system("PAUSE");
  return 0;
}
为什么上述代码得到的结果总是一直为1
k=1;怎么解决?

9 个解决方案

#1


今天可能大家都放假了,人很少的,呵呵,我已经调试出来了。。
int main(int argc, char *argv[])
{
  printf("hello");
  float score[5];
float v,s=0;
int k=0;

printf("请输入学生的学习成绩!\n");
int i;
for(i=0;i<5;i++)
{
        printf("score[%d]=",i);
  
scanf("%f",&score[i]);
// printf("/n");
       s=s+score[i];
        


}
v=s/5;
printf("平均值为%f\n",v);
for(i=0;i<5;i++)

printf("%f\n",score[i]);
if(score[i]>v)
  { k++;
               
               //break;     
                    }
   
                   
                   
                   
                   }


printf("k=%d",k);

  system("PAUSE");
  return 0;
}

#2


GX楼主

#3


参考一下,我不是用命令行调试


#include <stdio.h>

int main()
{
printf("hello");
float score[5];
float v,s=0;
int k;

printf("请输入学生的学习成绩!\n");
int i;
for(i=0;i<5;i++)
{
printf("score[%d]=",i);
scanf("%f",&score[i]);
s=s+score[i];    
}
v=s/5;
printf("%f\n",v);
k=0;
for(i=0;i<5;i++)
{
//k=0;
if(score[i]>v)
k++;
}

printf("k=%d",k);
//system("PAUSE"); 
return 0;
}

#4


引用 3 楼 kjr21362 的回复:
参考一下,我不是用命令行调试


C/C++ code

#include <stdio.h>

int main()
{
    printf("hello");
    float score[5];
    float v,s=0;
    int k;

    printf("请输入学生的学习成绩!\n");
    int i;
    for(i=0;……


不行的,K为一个很大的值了。。。

#5


K很大你还定义成int

#6


楼主已经调试出来了,就恭喜你啦~

#7


学习了

#8


引用楼主 tzgjrc88 的回复:
int main(int argc, char *argv[])
{
  printf("hello");
  float score[5];
float v,s=0;
int k;

printf("请输入学生的学习成绩!\n");
int i;
for(i=0;i<5;i++)
{
        printf("score[%d]=",i);
 
scanf("%f……

问题在于楼主统计高于平均分人数的时候, 在for循环里每次都对k赋值为0。
解决方法:
把k赋值为0的语句放到循环前面.
k=0;
for(i=0;i<5;i++)

  //printf("%f",score[i]);
  if(score[i]>v)
  { 
     k++;
  }

#9


是的,你每次都把K变0,它只有两种值:0/1。其实把它放到for里会更好:for(i=0,k=0;i<5;i++)

#1


今天可能大家都放假了,人很少的,呵呵,我已经调试出来了。。
int main(int argc, char *argv[])
{
  printf("hello");
  float score[5];
float v,s=0;
int k=0;

printf("请输入学生的学习成绩!\n");
int i;
for(i=0;i<5;i++)
{
        printf("score[%d]=",i);
  
scanf("%f",&score[i]);
// printf("/n");
       s=s+score[i];
        


}
v=s/5;
printf("平均值为%f\n",v);
for(i=0;i<5;i++)

printf("%f\n",score[i]);
if(score[i]>v)
  { k++;
               
               //break;     
                    }
   
                   
                   
                   
                   }


printf("k=%d",k);

  system("PAUSE");
  return 0;
}

#2


GX楼主

#3


参考一下,我不是用命令行调试


#include <stdio.h>

int main()
{
printf("hello");
float score[5];
float v,s=0;
int k;

printf("请输入学生的学习成绩!\n");
int i;
for(i=0;i<5;i++)
{
printf("score[%d]=",i);
scanf("%f",&score[i]);
s=s+score[i];    
}
v=s/5;
printf("%f\n",v);
k=0;
for(i=0;i<5;i++)
{
//k=0;
if(score[i]>v)
k++;
}

printf("k=%d",k);
//system("PAUSE"); 
return 0;
}

#4


引用 3 楼 kjr21362 的回复:
参考一下,我不是用命令行调试


C/C++ code

#include <stdio.h>

int main()
{
    printf("hello");
    float score[5];
    float v,s=0;
    int k;

    printf("请输入学生的学习成绩!\n");
    int i;
    for(i=0;……


不行的,K为一个很大的值了。。。

#5


K很大你还定义成int

#6


楼主已经调试出来了,就恭喜你啦~

#7


学习了

#8


引用楼主 tzgjrc88 的回复:
int main(int argc, char *argv[])
{
  printf("hello");
  float score[5];
float v,s=0;
int k;

printf("请输入学生的学习成绩!\n");
int i;
for(i=0;i<5;i++)
{
        printf("score[%d]=",i);
 
scanf("%f……

问题在于楼主统计高于平均分人数的时候, 在for循环里每次都对k赋值为0。
解决方法:
把k赋值为0的语句放到循环前面.
k=0;
for(i=0;i<5;i++)

  //printf("%f",score[i]);
  if(score[i]>v)
  { 
     k++;
  }

#9


是的,你每次都把K变0,它只有两种值:0/1。其实把它放到for里会更好:for(i=0,k=0;i<5;i++)