鱼C论坛

 找回密码
 立即注册
查看: 1617|回复: 8

[已解决]关于全局变量的问题

[复制链接]
发表于 2021-1-12 15:14:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么top和lowest的值会是0,我调试的时候发现子程序运行完后,top和lowest的值是对的,但是为什么回到主程序就变成0了,是不是全局变量的问题,求大佬解答
  1. #include <stdio.h>

  2. int top,lowest;

  3. int main(void)
  4. {
  5.         double average(int b[]);
  6.         double ave;
  7.         int i,a[10];
  8.         printf("Input 10 students' score:");
  9.         for(i=0;i<10;i++)
  10.         scanf("%d",&a[i]);
  11.         ave=average(a);
  12.         printf("%lf\n %d\n %d\n",ave,top,lowest);
  13. }

  14. double average(int b[])//形参可以不定义数组大小
  15. {
  16.         double ave;
  17.         int i,top=b[0],lowest=b[0];
  18.         for(i=1,ave=b[0];i<10;i++)
  19.         {
  20.                 if(top<b[i])
  21.                 top=b[i];
  22.                 else if(lowest>b[i])
  23.                 lowest=b[i];
  24.                 ave=ave+b[i];
  25.         }
  26.         ave=ave/10.0;
  27.        
  28.         return ave;//全局变量不用返回
  29. }
复制代码
最佳答案
2021-1-12 15:48:52
本帖最后由 xieglt 于 2021-1-12 15:50 编辑
  1. #include <stdio.h>

  2. int top,lowest;

  3. int main(void)
  4. {
  5.         double average(int b[]);
  6.         double ave;
  7.         int i,a[10];
  8.         printf("Input 10 students' score:");
  9.         for(i=0;i<10;i++)
  10.         scanf("%d",&a[i]);
  11.         ave=average(a);
  12.         printf("%lf\n %d\n %d\n",ave,top,lowest);
  13.         return 0;
  14. }

  15. double average(int b[])//形参可以不定义数组大小
  16. {
  17.         double ave;
  18.         int i;
  19.         top=b[0],lowest=b[0];
  20.         for(i=1,ave=b[0];i<10;i++)
  21.         {
  22.                 if(top<b[i])
  23.                         top=b[i];
  24.                 else if(lowest>b[i])
  25.                         lowest=b[i];
  26.                 ave=ave+b[i];
  27.         }
  28.         ave=ave/10.0;
  29.        
  30.         return ave;//全局变量不用返回
  31. }
复制代码


未命名.JPG
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-12 15:25:21 | 显示全部楼层
看错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-12 15:27:24 | 显示全部楼层
  1. int i,top=b[0],lowest=b[0];
复制代码


改成


  1. int i;
  2. top=b[0],lowest=b[0];
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-12 15:41:42 | 显示全部楼层

一样的,还是错的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-12 15:48:52 | 显示全部楼层    本楼为最佳答案   
本帖最后由 xieglt 于 2021-1-12 15:50 编辑
  1. #include <stdio.h>

  2. int top,lowest;

  3. int main(void)
  4. {
  5.         double average(int b[]);
  6.         double ave;
  7.         int i,a[10];
  8.         printf("Input 10 students' score:");
  9.         for(i=0;i<10;i++)
  10.         scanf("%d",&a[i]);
  11.         ave=average(a);
  12.         printf("%lf\n %d\n %d\n",ave,top,lowest);
  13.         return 0;
  14. }

  15. double average(int b[])//形参可以不定义数组大小
  16. {
  17.         double ave;
  18.         int i;
  19.         top=b[0],lowest=b[0];
  20.         for(i=1,ave=b[0];i<10;i++)
  21.         {
  22.                 if(top<b[i])
  23.                         top=b[i];
  24.                 else if(lowest>b[i])
  25.                         lowest=b[i];
  26.                 ave=ave+b[i];
  27.         }
  28.         ave=ave/10.0;
  29.        
  30.         return ave;//全局变量不用返回
  31. }
复制代码


未命名.JPG
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-12 15:54:12 | 显示全部楼层
MeowMoo 发表于 2021-1-12 15:41
一样的,还是错的

按楼上那样改就行了啊,不应该错啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-12 16:02:12 | 显示全部楼层

哦~,原来是全局变量重定义了,谢谢,但是这个问题调试的时候子函数能正常运行,而且结果也正确,意思是如果在子函数重定义,相当于这两个变量在子函数的值只在子函数有效,回主函数就会被重新赋值了,是这个意思吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-12 16:05:12 | 显示全部楼层
心驰神往 发表于 2021-1-12 15:54
按楼上那样改就行了啊,不应该错啊

是的,没错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-12 23:16:46 | 显示全部楼层
上面已经有正确答案,我回个帖子而已
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-4 14:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表