int *max(int a[],int n)
{
int *p=&a[0],i;
for(i=0;i<n;i++)
{
if(*p<a[i])
p=&a[i];
}
return *p;
}
int *min(int a[],int n)
{
int *p=&a[0],i;
for(i=0;i<n;i++)
{
if(*p>a[i])
p=&a[i];
}
return *p;
}
int ave(int a[],int n)
{
int i,sum=0;
for(i=0;i<n;i++)
{
sum+=a[i];
}
return sum/n;
}
#include <stdio.h>
int main()
{
int b[10]={1,2,3,4,5,6,7,8,9,10},n=10,big,small,pingjun;
big=max(b[0],n);
small=min(b[0],n);
pingjun=ave(b[0],n);
printf("%d%d%d",big,small,pingjun);
return 0;
}
emmm顯示在max和min的兩個函式處有問題還有就是主函式max和min的輸入處有問題,
uj5u.com熱心網友回復:
你只說有問題,沒說具體什么現象?編譯問題還是運行問題?uj5u.com熱心網友回復:
你定義的引數是陣列地址,傳入的是值int *max(int a[],int n) int a[]要傳a(首地址)
big=max(b[0],n);
small=min(b[0],n);
*p=a,就是p取a的首地址了,沒必要&a[0];多了反而容易弄錯
uj5u.com熱心網友回復:
還有你這個回傳值也有問題int *min(int a[],int n)你定義的回傳值型別是指標,但你return的是值,建議把指標好好看看,不同地方的*有不一樣的含義
uj5u.com熱心網友回復:
//int *max(int a[],int n)
int max(int a[],int n)
{
int *p=&a[0],i;
for(i=0;i<n;i++)
{
if(*p<a[i])
p=&a[i];
}
return *p;
}
//int *min(int a[],int n)
int min(int a[],int n)
{
int *p=&a[0],i;
for(i=0;i<n;i++)
{
if(*p>a[i])
p=&a[i];
}
return *p;
}
int ave(int a[],int n)
{
int i,sum=0;
for(i=0;i<n;i++)
{
sum+=a[i];
}
return sum/n;
}
//#include <stdio.h>
int main()
{
int b[10]={1,2,3,4,5,6,7,8,9,10},n=10,big,small,pingjun;
//big=max(b[0],n);
big=max(b, n);
//small=min(b[0],n);
small=min(b, n);
//pingjun=ave(b[0],n);
pingjun=ave(b,n);
printf("%d %d %d\n",big,small,pingjun);
return 0;
}
供參考~
big = max(&b[0], n);
也可以這樣的。
uj5u.com熱心網友回復:
如果是取a[1]的地址就是&a[1]嗎
uj5u.com熱心網友回復:
如果取a[1]看你是初始化還是怎么樣,如果是初始化的話&a[1]可以,如果不是,是程式中p取a地址后想要通過p找a[1]地址,直接p+1就行了,a[1]可以看成*(a+1),陣列操作的本質也是指標的移動。p=&a[0]=>p=&*(a+0)取值*取址&抵消,p=a+0;=>p=a;p+1=a+1;a+1可以表示成&*(a+1)=>&a[1];指標很靈活的,也很容易錯,要好好理解一下
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/69204.html
標籤:C語言
上一篇:c語言請教大佬
