一、网上搜的正确答案。
#include <stdio.h>
const int N=1<<29;
int a[15],min1,max1,b,k;
void make()
{
for(int i=0; i<10; i++)
{
if(a[i]<min1)
{
b=i;
min1=a[i];
}
}
int temp;
temp=a[b];
a[b]=a[0];
a[0]=temp;
for(int i=0; i<10; i++)
{
if(a[i]>max1)
{
k=i;
max1=a[i];
}
}
temp=a[k];
a[k]=a[9];
a[9]=temp;
}
void print()
{
int i;
for(i=0; i<10; i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
int main()
{
scanf("%d",&a[0]);
{
min1=N;
max1=-N;
for(int i=1; i<10; i++)
{
scanf("%d",&a[i]);
}
make();
print();
}
}
二、我的答案,本地运行结果也是正确的,可是提交就是不对,神尴尬。
#include <iostream>
#include <cstdio>
using namespace std;
void input(int *number);
void change(int *number);
void output(int *number);
int main()
{
int number[10];
input(number);
change(number);
output(number);
return 0;
}
void input(int *number)
{
for (int i=0; i<10; i++)
cin>>number[i];
}
void change(int *number)
{
//将数组首地址赋值给指针变量, 即指针变量指向数组的第一个元素
int *max, *min, *p, temp;
max=min=number; //因为是右结合,所以这样写;一右而不右,三右赋值右
/*循环变量初始值:数组第二个值的地址; 循环条件:数组最后一个地址,
* 即(number+length-1); 循环变量增值:地址+1.*/
for (p=number+1; p<number+10; p++)
if (*p > *max)
max=p; //将大数地址赋给max
else if (*p < *min)
min=p; //将小数地址赋给min
temp=number[0];
number[0]=*min;
*min=temp;
temp=number[9];
number[9]=*max;
*max=temp;
}
void output(int *number)
{
int *p;
for (p=number; p<number+10; p++)
cout<<*p<<" ";
cout<<endl;
}
0.0分
0 人评分