{
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;
}
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
不行的,K为一个很大的值了。。。
#5
K很大你还定义成int
#6
楼主已经调试出来了,就恭喜你啦~
#7
学习了
#8
问题在于楼主统计高于平均分人数的时候, 在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;
}
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
不行的,K为一个很大的值了。。。
#5
K很大你还定义成int
#6
楼主已经调试出来了,就恭喜你啦~
#7
学习了
#8
问题在于楼主统计高于平均分人数的时候, 在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++)