剛學編程,遇到一個感覺很奇怪的問題。希望大家能幫忙解釋一下。

這個是想輸出輸入的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]);
}
給您鞠躬了
uj5u.com熱心網友回復:
誰來幫幫我
uj5u.com熱心網友回復:
for (i =2;i <=6;i++)這里,i =6 的時候,陣列a[6]下標越界了,a[6]的值是隨機的,剛好湊上6了。uj5u.com熱心網友回復:
改為i <6,就正確了。uj5u.com熱心網友回復:
作為常識,C語言陣列下標從0開始定義為int a[5]的陣列,其合法元素是
a[0] a[1] a[2] a[3] a[4]
uj5u.com熱心網友回復:
原來是這樣啊!不過改動了一下,又遇到一個問題,就是當輸入的數值里既有正數又有負數時,結果輸出max=0
可以再解答一下嗎?
uj5u.com熱心網友回復:
原來是這樣啊!
不過改動了一下,又遇到一個問題,就是當輸入的數值里既有正數又有負數時,結果輸出max=0
可以再解答一下嗎?
uj5u.com熱心網友回復:
好的,謝謝!這常識我會好好記住的。不過改動了一下,又遇到一個問題,就是當輸入的數值里既有正數又有負數時,結果輸出max=0
可以再解答一下嗎?
uj5u.com熱心網友回復:
供參考:#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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/266064.html
標籤:C語言
上一篇:尖頭所指那行是什么意思?
