这是C语言编译的一个成绩筛选程序,为什么最后输出是0?怎么改呢?

如题所述

你的Input函数有问题啊

你只判断了max<score的情况,当你的score小于0的时候,没有处理,而且也没有返回

上面估计默认就当你返回0了,因此你最后的时候y=0,而且max是个局部变量,你每次比较x都是与0比较,并没有起到每次获取大值的目的。

main函数中,你应该先判断x是否小于0,然后调用Input

Input可以这样用:

y=y>Input(x)?y:Input(x);


其实不都不用使用Input函数,直接在main中就能实现

int main()
{
  int x,y;
  printf("please input scores(-1 to break):");
  y=0;
  for(;;)
  {
     scanf("%d",&x);
     if(x<0)
       break;
     y = y>x?y:x;
     printf("%d已键入",x);
  }
  printf("最高成绩为%d",y);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-03-24
把 y=Input(x) 改成 y=Input(y,x);

把函数Input(int score)改为下面这个 并且写在main函数前

int Input(int y,int score)
{
  if(y<score)
  {
      y=score;
  }
  return y;
}

第2个回答  2016-03-24
把input函数写在main函数前面,你的input函数没有声明追答

还有要把max定义成静态的变量

这个程序中max的值每一次都被重新赋值为0没有记录之前的最大值

追问

其实把max变成静态就行了。谢谢你了,我粉你吧,以后有问题可以问你。

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网