问答文章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
...二极管 电动车的电瓶因为出于成本考虑,将新旧电瓶混用,因为旧电池内 ... 两个不同容量的蓄电池并联后怎么防止大容量电池向小容量电池放电 工伤后小孩有抚养费吗,会给多少钱 南京工伤死亡子女抚养费标准 邵阳车管所疫情上班吗 2023年验车推迟吗,2023年检车线什么时候上班 全面复工包括黔江车管所不 江宁车管所什么时候复工 疫情期间交警几点下班? 3d和值多少算中奖? 从键盘输入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个整数存入一维数组中,排序后按由大到小的顺序输出 理财之道沙盘模拟的八个季度有哪些 理财之道沙盘实训如何把分数做高 理财之道(穷大学生的生存之道) 请大家推荐一款好的财务管理实训教学软件吧? 理财之道的内容简介 何为理财之道 佛语中毒龙指的是什么? 理财之道软件怎样操作才是最好的 毒龙指的是什么呢? 毒龙到底是什么呢?