C语言程序:输入10个整数,将其中最小的数与第一个数兑换,把最大的数与最后一个数对换。写3个函数

2025-03-11 15:12:46
推荐回答(4个)
回答1:

你的代码里出现的问题比较严重,属于基础知识性的错误,非常严重的错误有以下几点(都是知识性错误,一定要注意改过来):
1.函数调用和函数声明的区别。你的main函数里使用的
void sort(int array[],int n);
int SR(int a[10]);
int SC(int a[10]);
这三句,其实并不是调用函数,只是声明函数。声明函数的函数就是告诉编译器:这些函数我在后边定义的,你先给我通过吧。而调用函数就是传入参数使用这个函数。在具体使用上,带有函数类型和参数类型的(比如上边三行代码里的"int")就是声明函数,不带有类型的,这样写:SR(a[10]);这样才是正确的调用函数,这样就会进入函数进行数据处理。
2.函数返回值。你的SR和SC函数都是int返回值,但是return(a[10]);很明显你是想要返回整个数组,这肯定是不匹配的。
3.还是返回值,其实形参为数组名的话,传入的就是数组首地址,用地址传入就没必要返回这个数组了,因为函数拿到地址操作之后数据就已经改变,无需返回。
4.形参的问题。形参是有生命周期的,只在一个函数内有效,你的main函数根本就没有定义相关变量,一个函数结束之后,其内所有变量就没了,无法传给下一函数。
这4个错误会导致一系列错误产生,其他错误要在改正这四个错误之后再改,一定要研究例题,搞懂原理。

回答2:

#include

void sort(int array[],int n);
int SR(int a[10]);
int SC(int a[10]);

int main(void)
{
int a[10]={0};

SR(a); //调用输入函数
sort(a,10); //调用处理函数
SC(a); //调用输出函数

//以上就是调用三个函数的形式

return 0;
}

int SR(int a[10])
{
printf("shu ru 10 ge shu:\n");
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);

return(a[10]);
}

void sort(int array[],int n)
{
int i,tmp;
int max = 0, min = 0;
for (i=1; i {
//找到最大的值对应的数组下标
if (array[i]>array[max])
max = i;

//找到最小的值对应的数组下标
if (array[i] min = i;
}

//最小的值与第一个值交换
tmp = array[0];
array[0] = array[min];
array[min] =tmp;

//最大的值与最后一个值交换
tmp = array[n-1];
array[n-1] = array[max];
array[max] =tmp;
}

int SC(int a[10])
{
printf("xin shu zu:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");

return(a[10]);
}

回答3:

//全写在一个函数内,自己调整下!
#include
void main(){
int i,j,k,f[10],max,min,a,b;
for(i=0;i<10;i++)
scanf("%d",&f[i]);
a=b=0;
max=min=f[0];
for(j=1;j<10;j++)
{if(f[j]>max)
{max=f[j];
a=j;}
if(f[j]{min=f[j];
b=j;}
}
k=f[0];
f[0]=f[b];
f[b]=k;
if(f[9]!=max)
{k=f[9];
f[9]=f[a];
f[a]=k;}
for(k=0;k<10;k++)
printf("%d ",f[k]);}

回答4:

把 void main()调到最后就没问题了。

#include

int SR(int a[10])
{
printf("shu ru 10 ge shu:\n");
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
return(a[10]);
}
void sort(int array[],int n)
{
int i,j,k,n;
for(i=0;i {
k=i;
for(j=i+1;j if(array[j] k=j;
t=array[k];array[k]=array[i];array[i]=t;
}
}
int SC(int a[10])
{
sort(a,10);
printf("xin shu zu:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
return(a[10]);
}

void main()
{
void sort(int array[],int n);
int SR(int a[10]);
int SC(int a[10]);
printf("shu chu xin de shu zu:\n");
}