一个关于C语言的问题,为什么函数执行了没效果,急求大神指教
这个是100例的第67题,其目的是输入一个数组,然后让其中最大项和第一项交换,最小项和最后一项交换,但是为什么按照以下程序执行以后没有达到预定效果,请高手指教~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#include<stdio.h>int max(int k[],int lim);int min(int k[],int lim);void exchange(int x,int y);
void main(){int k[10];int i;int max_num,min_num;
printf("Please input number:\n"); for(i=0;i<10;i++){ scanf("%d\n",&k[i]);} for(i=0;i<10;i++){ printf("%d ",k[i]);} printf("\n");max_num=max(k,10);min_num=min(k,10);
if(max_num!=k[0]) { exchange(max_num,k[0]);}if(min_num!=k[9]) { exchange(min_num,k[9]);}}
int max(int k[],int lim){int i;int max;
max=k[0];
for(i=1;i<lim;i++){ if(k[i]>max) { max=k[i]; }}return max;}
int min(int k[],int lim){int i; int min;
min=k[0];
for(i=1;i<lim;i++) { if(k[i]<min) { min=k[i]; }}return min;}
void exchange(int x,int y){int temp;
temp=x; x=y; y=temp;}
追问:哦,不好意思,打掉了,麻烦你再看看这个,有输出语句但是根本没起到效果,出入什么,输出还是一样没变,而且执行SCANF()的时候明明设置的十次循环,但是我却要输出11个数
#include<stdio.h>
int max(int k[],int lim);
int min(int k[],int lim);
void exchange(int x,int y);
void main()
{
int k[10];
int i;
int max_num,min_num;
printf("Please input number:\n");
for(i=0;i<10;i++)
{
scanf("%d\n",&k[i]);
}
for(i=0;i<10;i++)
{
printf("%d ",k[i]);
}
printf("\n");
max_num=max(k,10);
min_num=min(k,10);
if(max_num!=k[0])
{
exchange(max_num,k[0]);
}
if(min_num!=k[9])
{
exchange(min_num,k[9]);
}
for(i=0;i<10;i++)
{
printf("%d ",k[i]);
}
printf("\n");
}
int max(int k[],int lim)
{
int i;
int max;
max=k[0];
for(i=1;i<lim;i++)
{
if(k[i]>max)
{
max=k[i];
}
}
return max;
}
int min(int k[],int lim)
{
int i;
int min;
min=k[0];
for(i=1;i<lim;i++)
{
if(k[i]<min)
{
min=k[i];
}
}
return min;
}
void exchange(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}