当前位置:编程学习 > C/C++ >>

一个关于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;
}
答案:
你数据处理后都没有输出语句啊。
如果想进行交换exchange的参数应该是地址
如果想进行交换exchange的参数应该是地址

上一个:学C++.C语言的文化程度
下一个:static void Main(string[ ] args)在C语言中起什么作用?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,