高分求助,C语言经典例子问题。
这是C语言经典100例的67题,题目:输入数组(10),最大的与第一个元素交换,最小的与最后一个元素交换,输出数组(用指针实现)。比如我输入:2,9,5,5,5,5,5,...
这是C语言经典100例的67题,题目:输入数组(10),最大的与第一个元素交换,最小的与最后一个元素交换,输出数组(用指针实现)。
比如我输入:2,9,5,5,5,5,5,5,1,4(4是第一个,2是最后一个)
输入应该是:1,4,5,5,5,5,5,5,2,9,但是,我找了一个程序,
输出的却是:1,9,5,5,5,5,5,5,1,9,如图。求助,高分,我严重菜鸟,请各位指点。谢谢!
main()
{
int number[10];
input(number);
max_min(number);
output(number);
}
input(number)
int number[10];
{
int i;
for(i=0;i<9;i++)
scanf("%d,",&number[i]);
scanf("%d",&number[9]);
}
max_min(array)
int array[10];
{
int *max,*min,k,l;
int *p,*arr_end;
arr_end=array+10;
max=min=array;
for(p=array+1;p<arr_end;p++)
if(*p>*max) max=p;
else if(*p<*min) min=p;
k=*max;
l=*min;
*p=array[0];array[0]=l;l=*p;
*p=array[9];array[9]=k;k=*p;
return;
}
output(array)
int array[10];
{
int *p;
for(p=array;p<array+9;p++)
printf("%d,",*p);
printf("%d\n",array[9]);
} 展开
比如我输入:2,9,5,5,5,5,5,5,1,4(4是第一个,2是最后一个)
输入应该是:1,4,5,5,5,5,5,5,2,9,但是,我找了一个程序,
输出的却是:1,9,5,5,5,5,5,5,1,9,如图。求助,高分,我严重菜鸟,请各位指点。谢谢!
main()
{
int number[10];
input(number);
max_min(number);
output(number);
}
input(number)
int number[10];
{
int i;
for(i=0;i<9;i++)
scanf("%d,",&number[i]);
scanf("%d",&number[9]);
}
max_min(array)
int array[10];
{
int *max,*min,k,l;
int *p,*arr_end;
arr_end=array+10;
max=min=array;
for(p=array+1;p<arr_end;p++)
if(*p>*max) max=p;
else if(*p<*min) min=p;
k=*max;
l=*min;
*p=array[0];array[0]=l;l=*p;
*p=array[9];array[9]=k;k=*p;
return;
}
output(array)
int array[10];
{
int *p;
for(p=array;p<array+9;p++)
printf("%d,",*p);
printf("%d\n",array[9]);
} 展开
展开全部
我自己写了个,你看行不
#include<stdio.h>
int max(int, int);//求最大值
int min(int, int);//求最小值
void swap(int*,int*);
void main()
{
int i,j,ma,mi,n1,n2;
int a[10];
for(i=0;i<=9;i++)
scanf("%d,",&a[i]);
ma=a[0];
mi=a[0];
for(j=1;j<=9;j++)
ma=max(ma,a[j]);//求出最大值
for(j=1;j<=9;j++)
mi=min(mi,a[j]);//求出最小值
for(i=0;i<=9;i++)
{
if(ma==a[i]) {
n1=i;
swap(&a[n1],&a[9]);
}//判断哪个是最大值并和a[9]交换
}
for(i=0;i<=9;i++)
{
if(mi==a[i])
{
n2=i;
swap(&a[0],&a[n2]);
}//判断哪个是最小值并和a[0]交换
}
for(i=0;i<=9;i++)
printf("%d,",a[i]);
}
int max(int x,int y)
{
int r;
if(y>=x) r=y;
else r=x;
return(r);
}
int min(int x,int y)
{
int r;
if(y>=x) r=x;
else r=y;
return(r);
}
void swap(int *x,int *y)
{
int r;
r=*x;
*x=*y;
*y=r;
}
#include<stdio.h>
int max(int, int);//求最大值
int min(int, int);//求最小值
void swap(int*,int*);
void main()
{
int i,j,ma,mi,n1,n2;
int a[10];
for(i=0;i<=9;i++)
scanf("%d,",&a[i]);
ma=a[0];
mi=a[0];
for(j=1;j<=9;j++)
ma=max(ma,a[j]);//求出最大值
for(j=1;j<=9;j++)
mi=min(mi,a[j]);//求出最小值
for(i=0;i<=9;i++)
{
if(ma==a[i]) {
n1=i;
swap(&a[n1],&a[9]);
}//判断哪个是最大值并和a[9]交换
}
for(i=0;i<=9;i++)
{
if(mi==a[i])
{
n2=i;
swap(&a[0],&a[n2]);
}//判断哪个是最小值并和a[0]交换
}
for(i=0;i<=9;i++)
printf("%d,",a[i]);
}
int max(int x,int y)
{
int r;
if(y>=x) r=y;
else r=x;
return(r);
}
int min(int x,int y)
{
int r;
if(y>=x) r=x;
else r=y;
return(r);
}
void swap(int *x,int *y)
{
int r;
r=*x;
*x=*y;
*y=r;
}
展开全部
数组逆序输出
main()
{int i,a[10],t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++)
{
t=a[i];
a[i]=a[10-i-1];
a[10-i-1]=t;}
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
main()
{int i,a[10],t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++)
{
t=a[i];
a[i]=a[10-i-1];
a[10-i-1]=t;}
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
确实是你的程序出错了,你的程序只实现了最小值放到第一位,最大值放到最后一位,并没有进行交换,只是替换。贴出程序,我可以帮你改改。
追问
程序我补上了,麻烦帮我看一下,谢~
追答
for(p=array+1;p*max) max=p;
else if(*p*max) max=p;
else if(*p<*min) min=p;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案是:程序有错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询