问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

输入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");
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
arrive in和arrive at 有什么区别? 磁力泵为什么可空转? 为什么不让衬氟塑料磁力泵空转?怎样提升设备稳定性? 工业软管泵 塑料磁力泵为什么不能空转 求推荐男主和女配在一起的小说? 《红衣天下》txt全集下载 检测公司检测哪些 检测公司是怎么样的 检测公司属于什么企业 从键盘输入10整数,放在一维数组中.输入一个整数,在数组中查找与其相等的数,,并输出其下标。否则输出-1. 从键盘输入十个整数存入一维数组中,求出它们的和及平均值并输出 C语言中,输入10个数存入一个一维数组中,统计其中的正数,负数与零的个数 office outlook web access 为什么每次登陆阅读邮件之后,再在另外一台电脑上登陆,就什么都没有了? 同一个outlook 账户,可以在不同电脑登陆吗? 请问microsoft outlook同一个账号可以在不同的电脑使用吗? 两台电脑上的同一outlook邮箱账户,删除其中一台电脑上的账户设置,对另一台有影响吗?怎么删除没影响 同一个outlook账号登录2台电脑出现问题!!! outlook账户在另一个电脑设置,还是选择原来的文件,账户设定好后,邮件重复 outlook 同一个帐号能不能在两台电脑上使用?会不会丢失邮件? 梦到去世的奶奶还活着我还拿钱给她用,还说去看她是什么意思? 未成年人拨打一次120骚扰电话会被拘留吗 同一个outlook 账户,可以在不同电脑登陆吗 孙女梦见去世的奶奶还活着烧火把衣服着了孙女给救灭了是什么意思这个梦好吗? 对方把你手机号码加入了黑名单,用紧急呼叫能打通他的电话号吗? 梦见去世多年的奶奶又活过来了。怎么回事? 蚂蚁很神奇,他们之间通讯主要靠的是什么呢? 梦见死去的奶奶,活着,还活蹦乱跳? 梦见去世的奶奶活着但过的很穷苦 梦到已故的奶奶还活着还跟她说了话,还帮她拿已经晾干的衣服是什么意思啊... 从键盘上输入10个整数,并放入一个一维数组中,然后将其前5个元素与后5个元素对换. 从键盘输入十个整数,存放到一个一维数组中,按从小到大排序后输出 从键盘输入10个数存入一维数组中,输出下标为奇数的元素。 从键盘上输入10还个整数存入一维数组元素中,然后输出该数组的和? - 信息提示 C程序,输入10个整数存入一维数组,从第二个元素开始,每个元素的值等 vb编程输入10个整数存入一维数组,再按逆序重新存放后再输出? 从键盘上输入10个整数,并放入一个一维数组中。然后将其前5个元素与后5个元素对换,即:第1个元素与 输入10个整数并存放在一维数组中,找出其中最大值和此元素的下标 编程,从键盘上输出10个整数存入一维数组中,排序后按由大到小的顺序输出 理财之道沙盘模拟的八个季度有哪些 理财之道沙盘实训如何把分数做高 理财之道(穷大学生的生存之道) 请大家推荐一款好的财务管理实训教学软件吧? 理财之道的内容简介 何为理财之道 佛语中毒龙指的是什么? 理财之道软件怎样操作才是最好的 毒龙指的是什么呢? 毒龙到底是什么呢?