C語言 調用函數求最大值問題
#include "stdafx.h"
#include "stdio.h"
int max(int a[10],int i)
{
int a[10];
int max=a[0];
for(i=1;i<10;i++)
if(max max=a[i];
return(max);
}
int main()
{
int i,a[10];
printf("請輸入10個數:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max(a[10],i);
printf("最大的數是:\n",max);
}
在調試的時候,出現這樣的情況:
請輸入10個數:
0 1 2 3 4 5 6 7 8 9
最大的數是:
按任意鍵結束。。。
為什麼會沒有輸出?是函數調用出了問題嗎?到底是哪裡的錯啊,本人是初學者,求告人指點!
好像還是不行,最好能重新寫一遍,看看你們的能不能運行的了
最佳回答:
您的程序有多處錯誤。既然是初學,就先把最基本的東西都弄清楚啊,否則別人都不願意幫您。簡單列出您的錯誤如下:
1)在max函數內又聲明了a[10],這和傳遞給max函數的參數同名。
2)在max函數內聲明了一個變量max,這與max函數又是同名,雖然不一定會出錯,但需要盡量避免啊。
3)int max(int a[], int i)是正確的寫法,不必寫int a[10]。
4)在主函數main中的max(a[10],i)就是錯誤的寫法了,把數組傳遞給函數時,只能寫數組名a,不能寫a[10],a[10]只代表了數組中的一個元素。
5)printf中的那個max,屬於未聲明就使用的變量,而且又與函數max同名。
給個修改後的程序,您自己對照吧。
6)printf函數沒指定最大值的輸出位置與格式。
#include "stdafx.h"
#include "stdio.h"
int max(int a[])//原代碼中將i傳遞進來,毫無必要
{
int maxv=a[0];//原代碼取max,與函數同名,要避免
int i;
for(i=1;i<10;i++)
if(maxv maxv=a[i];
return(maxv);
}
int main()
{
int i,a[10],maxvalue;
printf("請輸入10個數:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
maxvalue = max(a);//原代碼max(a[10],i),a[10]只會傳遞一個數而不是數組
printf("最大的數是:%d\n",maxvalue);//您別漏了%d啊
}