...最大的数与最后一个数对换. 写3个函数:(1)输入10个数;
发布网友
发布时间:2024-10-03 17:47
我来回答
共6个回答
热心网友
时间:2024-11-13 05:07
先来分析一下题意:“最小的数与第一个数对换”意为,只将最小的那个数与第一个元素对换,而其他元素保持原位不动;“最大的数与最后一个数对换”意为,只将最大的那个数与最后的那个元素对换,而其他元素保持原位不动。 楼上几位兄台的答案应该都不对,因为数组中其他元素都移动了。
我的程序如下:
#include<stdio.h>
void main()
{
void swap(int *p,int n);
void print(int *p,int n);
int j,a[10];
printf("input the array(ten numbers) :\n");
for(j=0;j<10;j++)
scanf("%d",&a[j]);
swap(a,10);
print(a,10);
}
void swap(int *p,int n)
{
int *maxpointer,*minpointer,j,temp;
for(j=0,maxpointer=p,minpointer=p;j<n;j++)
{
if(*maxpointer<=*(p+j)) maxpointer=p+j;
if(*minpointer>=*(p+j)) minpointer=p+j;
}
temp=*maxpointer;
*maxpointer=*(p+n-1);
*(p+n-1)=temp;
temp=*minpointer;
*minpointer=*p;
*p=temp;
}
void print(int *p,int n)
{
int j;
printf("the sorted array :\n");
for(j=0;j<n;j++)
printf("%5d",*(p+j));
}
热心网友
时间:2024-11-13 05:10
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]);
}
热心网友
时间:2024-11-13 05:08
#include <stdio.h>
int main(void)
{
int i, j, k, tmp;
int a[10];
for(i=0; i<10; i++)
scanf("%d", &a[i]);
for(i=0; i<9; i++)
{
k = i;
for(j=k+1; j<10; j++)
if(a[k]>a[j])
k = j;
if(k != i)
{
tmp = a[i];
a[i] = a[k];
a[k] = tmp;
}
}
for(i=0; i<10; i++)
printf("a[%d] = %d\n", i, a[i]);
return 0;
}
这个可以
热心网友
时间:2024-11-13 05:04
#include<stdio.h>
void swap(int *p, int n);
void print(int *p, int n);
int main() {
int a[10];
int i;
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
swap(a, 10);
print(a, 10);
}
void swap(int *p, int n) {
int i, temp;
for (i = 0; i < 10; i++) {
if (*(p + i) > *(p + 9)) { //将大的放到后面
temp = *(p + 9);
*(p + 9) = *(p + i);
*(p + i) = temp;
}
if (*p > *(p + i)) { //将小的放到前面
temp = *p;
*p = *(p + i);
*(p + i) = temp;
}
}
}
void print(int *p, int n) {
int i;
for (i = 0; i < n; i++)
printf("%d,", *(p + i));
}
热心网友
时间:2024-11-13 05:11
int i,a,b,temp1,temp2,temp,*s=&temp;
a=(p+9);b=p;
for(i=0;i<9;i++)
if(*(p+i)<*(p+i+1)) s=(p+i+1);
{temp1=*a;*a=*s;*s=temp1;}
for(i=0;i<9;i++)
if(*(p+i)>*(p+i+1)) s=(p+i+1);
{temp2=*b;*b=*s;*s=temp2;}
热心网友
时间:2024-11-13 05:03
你再猜