输入10个整数存入一维数组,将其中最大数和第一个数交换,最小数和最后一个数交换
发布网友
发布时间:2022-04-29 09:41
我来回答
共4个回答
热心网友
时间:2023-10-13 23:54
/*全是指针。 连最大最小值的定位都是用指针干的。。。而不是单纯的max min */
#include<stdio.h>
int main()
{
int n = 10;
int temp;
int a[20],*p;
int i,*posj=0,*posk=0;
for(i=0,posj = posk = p = a;i<n;i++,p++)
{
scanf("%d",p);
if( *posj < *p ) posj = p;
if( *posk > *p ) posk = p;
}
p = a;
temp = *p;
*p = *posj;
*posj = temp;
temp = *(p+n-1);
*(p+n-1) = *posk;
*posk = temp;
for(i=0,p=a;i<n;i++,p++)
{
printf("%d ",*p);
}
printf("\n");
getchar();
getchar();
return 0;
}
热心网友
时间:2023-10-13 23:54
#include "stdio.h"
void swap(int *p, int len);
void main()
{
int arr[] = {13, 38, 65, 97, 76, 49, 27, 49};
int len = 8;
int i;
printf("before swap : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");
swap(arr, len);
printf("after swap : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");
}
void swap(int *p, int len)
{
int max = 0, min = 0;
int i;
int temp;
/* 查找最小数和最大数 */
for(i=1; i<len; i++)
{
if(*(p+i) > *(p+max))
max = i;
if(*(p+i) < *(p+min))
min = i;
}
/* 如果第一个数是最小值,先保存,这一步非常重要 */
if(*p == *(p+min))
min = max;
/* 最大数和第一个数交换 */
temp = *p;
*p = *(p+max);
*(p+max) = temp;
/* 最小数和最后一个数交换 */
temp = *(p+len-1);
*(p+len-1) = *(p+min);
*(p+min) = temp;
}
把我的数据拿去测试前面的算法,他们的可能全都有问题。因为漏了关键的一步:如果第一个数是最小数的处理。
热心网友
时间:2023-10-13 23:54
/*全是指针。 连最大最小值的定位都是用指针干的。。。而不是单纯的max min */
#include<stdio.h>
int main()
{
int n = 10;
int temp;
int a[20],*p;
int i,*posj=0,*posk=0;
for(i=0,posj = posk = p = a;i<n;i++,p++)
{
scanf("%d",p);
if( *posj < *p ) posj = p;
if( *posk > *p ) posk = p;
}
p = a;
temp = *p;
*p = *posj;
*posj = temp;
temp = *(p+n-1);
*(p+n-1) = *posk;
*posk = temp;
for(i=0,p=a;i<n;i++,p++)
{
printf("%d ",*p);
}
printf("\n");
getchar();
getchar();
return 0;
}
热心网友
时间:2023-10-13 23:54
#include "stdio.h"
void swap(int *p, int len);
void main()
{
int arr[] = {13, 38, 65, 97, 76, 49, 27, 49};
int len = 8;
int i;
printf("before swap : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");
swap(arr, len);
printf("after swap : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");
}
void swap(int *p, int len)
{
int max = 0, min = 0;
int i;
int temp;
/* 查找最小数和最大数 */
for(i=1; i<len; i++)
{
if(*(p+i) > *(p+max))
max = i;
if(*(p+i) < *(p+min))
min = i;
}
/* 如果第一个数是最小值,先保存,这一步非常重要 */
if(*p == *(p+min))
min = max;
/* 最大数和第一个数交换 */
temp = *p;
*p = *(p+max);
*(p+max) = temp;
/* 最小数和最后一个数交换 */
temp = *(p+len-1);
*(p+len-1) = *(p+min);
*(p+min) = temp;
}
把我的数据拿去测试前面的算法,他们的可能全都有问题。因为漏了关键的一步:如果第一个数是最小数的处理。
热心网友
时间:2023-10-13 23:55
前面的写得真快...
int a[10];
int i;
int *p;
for(i=0; i<10;i++)
scanf("%d"<a[i]);
p = a;
for(i=0; i<10;i++)
if( *p < a[i] ) p = &a[i];
i = a[0];
a[0] = *p;
*p = i;
for(i=0; i<10;i++)
if( *p > a[i] ) p = &a[i];
i = a[9];
a[9] = *p;
*p = i;
热心网友
时间:2023-10-13 23:54
/*全是指针。 连最大最小值的定位都是用指针干的。。。而不是单纯的max min */
#include<stdio.h>
int main()
{
int n = 10;
int temp;
int a[20],*p;
int i,*posj=0,*posk=0;
for(i=0,posj = posk = p = a;i<n;i++,p++)
{
scanf("%d",p);
if( *posj < *p ) posj = p;
if( *posk > *p ) posk = p;
}
p = a;
temp = *p;
*p = *posj;
*posj = temp;
temp = *(p+n-1);
*(p+n-1) = *posk;
*posk = temp;
for(i=0,p=a;i<n;i++,p++)
{
printf("%d ",*p);
}
printf("\n");
getchar();
getchar();
return 0;
}
热心网友
时间:2023-10-13 23:55
前面的写得真快...
int a[10];
int i;
int *p;
for(i=0; i<10;i++)
scanf("%d"<a[i]);
p = a;
for(i=0; i<10;i++)
if( *p < a[i] ) p = &a[i];
i = a[0];
a[0] = *p;
*p = i;
for(i=0; i<10;i++)
if( *p > a[i] ) p = &a[i];
i = a[9];
a[9] = *p;
*p = i;
热心网友
时间:2023-10-13 23:55
//已调试成功
#include <stdio.h>
#define N 5
//你要的函数
void judge(int *a,int n)
{
int max,min,temp1,temp2,temp;
int i;
max=min=*(a);
temp1=temp2=0;
for(i=0;i<n;i++)
{
if(max<*(a+i))
{
max=*(a+i);
temp1=i;
}
if(min>*(a+i))
{
min=*(a+i);
temp2=i;
}
}
temp = *(a+temp1);
*(a+temp1) = *a;
*a = temp;
temp = *(a+temp2);
*(a+temp2) = *(a +n-1);
*(a +n-1)= temp;
}
void main()
{
int a[N];
int i;
for(i=0;i<N;i++)
{
printf("请输入第%d个数:",i+1);
scanf("%d",&a[i]);
}
judge(a,N);
printf("转换后的数组为\n");
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
热心网友
时间:2023-10-13 23:54
#include "stdio.h"
void swap(int *p, int len);
void main()
{
int arr[] = {13, 38, 65, 97, 76, 49, 27, 49};
int len = 8;
int i;
printf("before swap : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");
swap(arr, len);
printf("after swap : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");
}
void swap(int *p, int len)
{
int max = 0, min = 0;
int i;
int temp;
/* 查找最小数和最大数 */
for(i=1; i<len; i++)
{
if(*(p+i) > *(p+max))
max = i;
if(*(p+i) < *(p+min))
min = i;
}
/* 如果第一个数是最小值,先保存,这一步非常重要 */
if(*p == *(p+min))
min = max;
/* 最大数和第一个数交换 */
temp = *p;
*p = *(p+max);
*(p+max) = temp;
/* 最小数和最后一个数交换 */
temp = *(p+len-1);
*(p+len-1) = *(p+min);
*(p+min) = temp;
}
把我的数据拿去测试前面的算法,他们的可能全都有问题。因为漏了关键的一步:如果第一个数是最小数的处理。
热心网友
时间:2023-10-13 23:55
//已调试成功
#include <stdio.h>
#define N 5
//你要的函数
void judge(int *a,int n)
{
int max,min,temp1,temp2,temp;
int i;
max=min=*(a);
temp1=temp2=0;
for(i=0;i<n;i++)
{
if(max<*(a+i))
{
max=*(a+i);
temp1=i;
}
if(min>*(a+i))
{
min=*(a+i);
temp2=i;
}
}
temp = *(a+temp1);
*(a+temp1) = *a;
*a = temp;
temp = *(a+temp2);
*(a+temp2) = *(a +n-1);
*(a +n-1)= temp;
}
void main()
{
int a[N];
int i;
for(i=0;i<N;i++)
{
printf("请输入第%d个数:",i+1);
scanf("%d",&a[i]);
}
judge(a,N);
printf("转换后的数组为\n");
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
热心网友
时间:2023-10-13 23:55
前面的写得真快...
int a[10];
int i;
int *p;
for(i=0; i<10;i++)
scanf("%d"<a[i]);
p = a;
for(i=0; i<10;i++)
if( *p < a[i] ) p = &a[i];
i = a[0];
a[0] = *p;
*p = i;
for(i=0; i<10;i++)
if( *p > a[i] ) p = &a[i];
i = a[9];
a[9] = *p;
*p = i;
热心网友
时间:2023-10-13 23:55
//已调试成功
#include <stdio.h>
#define N 5
//你要的函数
void judge(int *a,int n)
{
int max,min,temp1,temp2,temp;
int i;
max=min=*(a);
temp1=temp2=0;
for(i=0;i<n;i++)
{
if(max<*(a+i))
{
max=*(a+i);
temp1=i;
}
if(min>*(a+i))
{
min=*(a+i);
temp2=i;
}
}
temp = *(a+temp1);
*(a+temp1) = *a;
*a = temp;
temp = *(a+temp2);
*(a+temp2) = *(a +n-1);
*(a +n-1)= temp;
}
void main()
{
int a[N];
int i;
for(i=0;i<N;i++)
{
printf("请输入第%d个数:",i+1);
scanf("%d",&a[i]);
}
judge(a,N);
printf("转换后的数组为\n");
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
热心网友
时间:2023-10-13 23:54
/*全是指针。 连最大最小值的定位都是用指针干的。。。而不是单纯的max min */
#include<stdio.h>
int main()
{
int n = 10;
int temp;
int a[20],*p;
int i,*posj=0,*posk=0;
for(i=0,posj = posk = p = a;i<n;i++,p++)
{
scanf("%d",p);
if( *posj < *p ) posj = p;
if( *posk > *p ) posk = p;
}
p = a;
temp = *p;
*p = *posj;
*posj = temp;
temp = *(p+n-1);
*(p+n-1) = *posk;
*posk = temp;
for(i=0,p=a;i<n;i++,p++)
{
printf("%d ",*p);
}
printf("\n");
getchar();
getchar();
return 0;
}
热心网友
时间:2023-10-13 23:54
#include "stdio.h"
void swap(int *p, int len);
void main()
{
int arr[] = {13, 38, 65, 97, 76, 49, 27, 49};
int len = 8;
int i;
printf("before swap : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");
swap(arr, len);
printf("after swap : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");
}
void swap(int *p, int len)
{
int max = 0, min = 0;
int i;
int temp;
/* 查找最小数和最大数 */
for(i=1; i<len; i++)
{
if(*(p+i) > *(p+max))
max = i;
if(*(p+i) < *(p+min))
min = i;
}
/* 如果第一个数是最小值,先保存,这一步非常重要 */
if(*p == *(p+min))
min = max;
/* 最大数和第一个数交换 */
temp = *p;
*p = *(p+max);
*(p+max) = temp;
/* 最小数和最后一个数交换 */
temp = *(p+len-1);
*(p+len-1) = *(p+min);
*(p+min) = temp;
}
把我的数据拿去测试前面的算法,他们的可能全都有问题。因为漏了关键的一步:如果第一个数是最小数的处理。
热心网友
时间:2023-10-13 23:55
前面的写得真快...
int a[10];
int i;
int *p;
for(i=0; i<10;i++)
scanf("%d"<a[i]);
p = a;
for(i=0; i<10;i++)
if( *p < a[i] ) p = &a[i];
i = a[0];
a[0] = *p;
*p = i;
for(i=0; i<10;i++)
if( *p > a[i] ) p = &a[i];
i = a[9];
a[9] = *p;
*p = i;
热心网友
时间:2023-10-13 23:55
//已调试成功
#include <stdio.h>
#define N 5
//你要的函数
void judge(int *a,int n)
{
int max,min,temp1,temp2,temp;
int i;
max=min=*(a);
temp1=temp2=0;
for(i=0;i<n;i++)
{
if(max<*(a+i))
{
max=*(a+i);
temp1=i;
}
if(min>*(a+i))
{
min=*(a+i);
temp2=i;
}
}
temp = *(a+temp1);
*(a+temp1) = *a;
*a = temp;
temp = *(a+temp2);
*(a+temp2) = *(a +n-1);
*(a +n-1)= temp;
}
void main()
{
int a[N];
int i;
for(i=0;i<N;i++)
{
printf("请输入第%d个数:",i+1);
scanf("%d",&a[i]);
}
judge(a,N);
printf("转换后的数组为\n");
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
热心网友
时间:2023-10-13 23:54
/*全是指针。 连最大最小值的定位都是用指针干的。。。而不是单纯的max min */
#include<stdio.h>
int main()
{
int n = 10;
int temp;
int a[20],*p;
int i,*posj=0,*posk=0;
for(i=0,posj = posk = p = a;i<n;i++,p++)
{
scanf("%d",p);
if( *posj < *p ) posj = p;
if( *posk > *p ) posk = p;
}
p = a;
temp = *p;
*p = *posj;
*posj = temp;
temp = *(p+n-1);
*(p+n-1) = *posk;
*posk = temp;
for(i=0,p=a;i<n;i++,p++)
{
printf("%d ",*p);
}
printf("\n");
getchar();
getchar();
return 0;
}
热心网友
时间:2023-10-13 23:54
#include "stdio.h"
void swap(int *p, int len);
void main()
{
int arr[] = {13, 38, 65, 97, 76, 49, 27, 49};
int len = 8;
int i;
printf("before swap : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");
swap(arr, len);
printf("after swap : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");
}
void swap(int *p, int len)
{
int max = 0, min = 0;
int i;
int temp;
/* 查找最小数和最大数 */
for(i=1; i<len; i++)
{
if(*(p+i) > *(p+max))
max = i;
if(*(p+i) < *(p+min))
min = i;
}
/* 如果第一个数是最小值,先保存,这一步非常重要 */
if(*p == *(p+min))
min = max;
/* 最大数和第一个数交换 */
temp = *p;
*p = *(p+max);
*(p+max) = temp;
/* 最小数和最后一个数交换 */
temp = *(p+len-1);
*(p+len-1) = *(p+min);
*(p+min) = temp;
}
把我的数据拿去测试前面的算法,他们的可能全都有问题。因为漏了关键的一步:如果第一个数是最小数的处理。
热心网友
时间:2023-10-13 23:55
前面的写得真快...
int a[10];
int i;
int *p;
for(i=0; i<10;i++)
scanf("%d"<a[i]);
p = a;
for(i=0; i<10;i++)
if( *p < a[i] ) p = &a[i];
i = a[0];
a[0] = *p;
*p = i;
for(i=0; i<10;i++)
if( *p > a[i] ) p = &a[i];
i = a[9];
a[9] = *p;
*p = i;
热心网友
时间:2023-10-13 23:55
//已调试成功
#include <stdio.h>
#define N 5
//你要的函数
void judge(int *a,int n)
{
int max,min,temp1,temp2,temp;
int i;
max=min=*(a);
temp1=temp2=0;
for(i=0;i<n;i++)
{
if(max<*(a+i))
{
max=*(a+i);
temp1=i;
}
if(min>*(a+i))
{
min=*(a+i);
temp2=i;
}
}
temp = *(a+temp1);
*(a+temp1) = *a;
*a = temp;
temp = *(a+temp2);
*(a+temp2) = *(a +n-1);
*(a +n-1)= temp;
}
void main()
{
int a[N];
int i;
for(i=0;i<N;i++)
{
printf("请输入第%d个数:",i+1);
scanf("%d",&a[i]);
}
judge(a,N);
printf("转换后的数组为\n");
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}