【咨询贴】C语言 输出10个数中最大数

飞禽走兽卍一2b 2021-03-04 09:21:32
刚学编程,遇到一个感觉很奇怪的问题。希望大家能帮忙解释一下。 这个是想输出输入的5个数中最大的数。结果很奇怪。。。它会把下面那个i<=6中的6当成一个输入的数字(比如如果输入2 3 1 4 5,那么就会有max=6)。 请问这是为什么? #include <stdio.h> int main(void) { int a[5]; printf("请输入5个数字:\n"); for(int i=1;i<=5;i++) { scanf("%d",&a[i]); } int i,temp; for(i=2;i<=6;i++) { if(a[i-1]>=a[i]) { printf("%d > %d ",a[i-1],a[i]); temp=a[i-1]; a[i]=temp; } } printf("max= %d ",a[i]); } 给您鞠躬了
...全文
111 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
  • 打赏
  • 举报
回复
引用 8 楼 qzjhjxj的回复:
供参考:
#include <stdio.h>
int main(void)
{
      int a[5];
      printf("请输入5个数字:\n");
      for(int i=0;i<5;i++)//for(int i=1;i<=5;i++)
       {
          scanf("%d",&a[i]);
       }
      int i,temp=a[0];
      for(i=1;i<5;i++) //for(i=2;i<=6;i++)
       {
           if(temp < a[i])
           {
                       //printf("%d > %d \n",a[i-1],a[i]);

                 temp=a[i];//找到大数,并记录到temp里
                        // a[i]=temp;
            }
       }
      printf("max= %d  ",temp);//printf("max= %d  ",a[i]);
      
      return 0;
}
谢谢啦!问题已解决。就是i可能会小于0
qzjhjxj 2021-03-04
  • 打赏
  • 举报
回复
供参考:
#include <stdio.h>
int main(void)
{
      int a[5];
      printf("请输入5个数字:\n");
      for(int i=0;i<5;i++)//for(int i=1;i<=5;i++)
       {
          scanf("%d",&a[i]);
       }
      int i,temp=a[0];
      for(i=1;i<5;i++) //for(i=2;i<=6;i++)
       {
           if(temp < a[i])
           {
                       //printf("%d > %d \n",a[i-1],a[i]);

                 temp=a[i];//找到大数,并记录到temp里
                        // a[i]=temp;
            }
       }
      printf("max= %d  ",temp);//printf("max= %d  ",a[i]);
      
      return 0;
}
  • 打赏
  • 举报
回复
好的,谢谢!这常识我会好好记住的。 不过改动了一下,又遇到一个问题,就是当输入的数值里既有正数又有负数时,结果输出max=0 可以再解答一下吗?
  • 打赏
  • 举报
回复
引用 3 楼 qzjhjxj的回复:
改为i <6,就正确了。
原来是这样啊! 不过改动了一下,又遇到一个问题,就是当输入的数值里既有正数又有负数时,结果输出max=0 可以再解答一下吗?
  • 打赏
  • 举报
回复
原来是这样啊! 不过改动了一下,又遇到一个问题,就是当输入的数值里既有正数又有负数时,结果输出max=0 可以再解答一下吗?
forever74 2021-03-04
  • 打赏
  • 举报
回复
作为常识,C语言数组下标从0开始 定义为int a[5]的数组,其合法元素是 a[0] a[1] a[2] a[3] a[4]
qzjhjxj 2021-03-04
  • 打赏
  • 举报
回复
改为i <6,就正确了。
qzjhjxj 2021-03-04
  • 打赏
  • 举报
回复
for (i =2;i <=6;i++)这里,i =6 的时候,数组a[6]下标越界了,a[6]的值是随机的,刚好凑上6了。
  • 打赏
  • 举报
回复
谁来帮帮我

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧