输入5个整数,将最小值与第一个数交换, 最大值与最后一个数交换,然后输出交换后的5个数。

作者&投稿:直显 (若有异议请与网页底部的电邮联系)
输入5个整数,将最小值与第一个数交换, 最大值与最后一个数交换,然后输出交换后的5个数。~

最大值与最后一个交换,需要使用到max
和a[i],以及一个临时变量,你代码中使用的是max
a[0]
a[i],这里貌似有点问题。最小值与第一个交换,貌似你也是用的这3个变量。
如果觉得使用的变量过多,可以不使用临时变量,用嵌入式程序员的思路,节约空间复杂度,只使用max

a[i]两个变量就地进行值的交换
在你的两个
if
语句内改成
max
=
max
+
a[i];
a[i]
=
max
-
a[i];
max
=
max
-
a[i];
如果担心两数和超出范围可以用^异或操作
改成
max
=
max
^
a[i];
a[i]
=
a[i]
^
max;
max
=
max
^
a[i];
这样就不用担心两整数的和超出表示范围了。
下面的min的操作也与以上内容类似。
改成
min
=
min
^
a[0];
a[0]
=
a[0]
^
min
min
=
min
^
[a0]

#include
int main(void)
{
int a[10];
int n,i,min,max,t;
printf("Input n: ");
scanf("%d",&n);
printf("Input %d integers: ",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
min=max=0;
printf("After swapped: ");
for(i=1;i<n;i++)
{if(a[i]>a[max])max=i;
if(a[i]<a[min])min=i;
}
t=a[min];
a[min]=a[0];
a[0]=t;
if(0==max)max=min;
t=a[max];
a[max]=a[n-1];
a[n-1]=t;
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}

#include<stdio.h>
void main()
{ int a[5],max,min,i;
for ( i=0;i<5;i++ ) scanf("%d",&a[i]);
max=min=0;
for ( i=1;i<5;i++ ) if ( a[max]<a[i] ) max=i; else if ( a[min]>a[i] ) min=i;
if ( min!=0 ) { i=a[0]; a[0]=a[min]; a[min]=i; }
if ( max!=4 ) { i=a[4]; a[4]=a[max]; a[max]=i; }
for ( i=0;i<5;i++ ) printf("%d ",a[i]); printf("\n");
}


C语言 急急急急 输入5个正整数组num中,求出它们的最大值max 和最小值...
include <stdio.h> define N 5 void main() { int n,num,max,min; scanf("%d",&n);max=min=n; for(num=1; num<N;num++) { scanf("%d",&n);if(max<n) { max=n; } if(min>n) { min=n; } } printf("max=%d,min=%d\\n",max,...

由用户依次输入5个整数值,程序将数值保存在数组中,并利用指针在数组中查...
include"iostream.h"void main(){ int intarray[5];int*pmin;int l;for(l=0;l<5;l++){ cout<<"请输入数字"<<l+1<<":";cin>>*(intarray+l);} pmin=&intarray[0];for(l=0;l<5;l++){ if((*pmin)<=intarray[l])pmin=&intarray[l];} cout<<"最小值为"<<*pmin;} ...

c#中 由键盘连续输入5个整数并存放到整型数组中,然后再取出该数组中的...
Console.WriteLine("最大数为{0},最小数为{1}",lager,small);Console.ReadKey();} 这个方法可以实现你要的效果,不过在你输入数据时每个数据要用空格隔开,(因为这个方法是按空格拆分字符串的)还有就是你说是五个数据你就得输入五个不然可能造成最小值不正确,因为如果你的个数不足五个其他的...

C++从键盘输入五个整数放到数组中,将它们由大到小排列后输出_百度知 ...
文件名 a.cpp include <stdio.h> include <stdlib.h> void swap (int &a, int &b){int temp = a;a = b;b = temp;} void main(){ int a[5];int i,j;printf("Please input 5 int data:\\n");for (i=0;i<5;i++) scanf("%d",&a[i]);for (i=0;i<4;i++)for (j...

编程从键盘上输入5个整数,求去掉最大值和最小值以后那些元素的平均值...
include <stdio.h> main(){ int data[5];int i;int max=0,min=2147483647;int sum=0;for(i=0;i<5;i++){ printf("请输入第%d个整数:",i+1);scanf("%d",&data[i]);if(data[i]>max)max=data[i];\/\/记录最大值 if(data[i]<min)min=data[i];\/\/记录最小值 sum+=data[i]...

输入5个整数,并存放在数组中,找出最大数与最小数所在的下标位置,并把两...
include <stdio.h> include <stdlib.h> define N 5 int main() { int a[N],i,min,max;for(i=0;i<N;i++){ scanf("%d",&a[i]);} min=max=0;for(i=1;i<N;i++){ if(a[min]>a[i])min=i;if(a[max]<a[i])max=i;} i=a[max];a[max]=a[min];a[min]=i;for...

用C#语句随机输入5个整数,并一一输出,同时查找这5个数中最大值和最小...
using System;public class maxandmin{ public static void Main() { while(true) { Console.WriteLine("请输入数字(用','分割.)"); string inputstr = Console.ReadLine(); if(inputstr.Equals("Exit")) break; string[] inputnum = inputstr.Split(','); ...

输入5个整数数,并存放在一维数组中,找出最大数与最小数所在的下标位置...
int F[5],max,min,i,a=0,temp=0;for(i=0;i<5;i++){ scanf("%d",&F[i]);printf("%5d\\n",F[i]); \/* 删除printf里面的& *\/ if (0 == i){ temp = F[i]; \/* 把输入的第一个数作为最大值 *\/ a = F[i]; \/* 把输入的第一个数作为最小值 *\/ max = min =...

编写一个C++程序:从键盘输入的5个整数,用指针求这10个数中的最大数...
i++ ) cin>>a[i]; pmax=pmin=p=a; p++; av=0; for ( i=1;i<N;i++,p++ ) { av+=*p; if ( *p>*pmax ) pmax=p; if ( *p<*pmin ) pmin=p; } av\/=N; cout<<"最大值"<<*pmax<<",最小值"<<*pmin<<",平均值"<<av<<endl;} ...

用JAVA创建一个长度为5的整数类型数组,输入5个数到数组中 找出该数组...
getInt(){return Integer.parseInt(getString());}public static void main(String[] args){int[] s = new int[5];for(int i=0; i

柏乡县19899796005: 输入5个整数,将最小值与第一个数交换, 最大值与最后一个数交换,然后输出交换后的5个数. -
符卞盐酸: #include void main() { int a[5],max,min,i; for ( i=0;i max=min=0; for ( i=1;ia[i] ) min=i; if ( min!=0 ) { i=a[0]; a[0]=a[min]; a[min]=i; } if ( max!=4 ) { i=a[4]; a[4]=a[max]; a[max]=i; } for ( i=0;i}

柏乡县19899796005: 定义一个五个数的数组,使其中最小的和第一个交换(用c语言) -
符卞盐酸: #include "stdio.h" int main() {int a[5],min,i,t;for(i=0;i<5;i++) //输入5个整数scanf("%d",&a[i]); for(i=0;i<5;i++) //输出5个整数printf("%d ",a[i]); min=0; //找到最小值的下标,放在min中for(i=1;i<5;i++)if(a[i]t=a[0];a[0]=a[min];a[min]=t; //最小值和a[0]交换 printf("\n"); //再次输出数组 for(i=0;i<5;i++) printf("%d ",a[i]); }

柏乡县19899796005: c语言利用数组指针方法 输入五个数字求出最小值 将最小值和数组第一个数字互换位置 输出数组 -
符卞盐酸: #include<stdio.h> void main() {double a[] = {3, 4.2, 4, 5.3, 1, 0.4, 5};double *max=(double *)malloc(sizeof(double)); // 最大值duzhi指针double *min=(double *)malloc(sizeof(double)); // 最小值dao指针int i;*max = a[0]; // 初始化回最大值*min ...

柏乡县19899796005: 随即输入5个整数,找出最大值与最小值的位置,并交换位置,输出调整后数的顺序 -
符卞盐酸:[答案] 设max和min且都等于第一个数,一个一个比对,比第一个小的替换min,同理替换max,最终用一个中间变量交换max,min.最好是用数组来装这些数,那样输出的时候方便一点.我说得很清楚了,编起来应该不成问题.

柏乡县19899796005: C语言,输入n个整数的数组,将最小值与第一个书交换,最大值与最后一个数交换,然后输出数组? -
符卞盐酸: 你的程序没有问题,从某种意义上来说是正确的. 问题是你举的例子是最特殊的,数组4321,最大值4的位置max=0,最小值1的位置min=3.交换时,先是第一个元素a[0](4)跟最小的元素位置a[min](a[3]=1)进行交换,交换的结果是数组1324;接下来是a[3]跟a[max]交换,这时a[3]=4,而a[max]=a[0]=1,就是1与4交换,结果就成了1234.你会发现,它们又换回来了! 这个问题产生的原因,是max的值在第一次交换之后,已经不能代表最大值的真实位置了! 要解决这个问题,就把16-19行一起移动到13行之前.就可以了. 你可以试一下,有什么问题请留言.

柏乡县19899796005: 输入n个整数将最小值与第一个数交换最大值与最后一个数交换,然后输出交换后的n个数 -
符卞盐酸: #include voidswap(int*a,int*b) { intt=*a; *a=*b; *b=t; } voidmax_min(int*p,intn) { intl=n; int*max=p,*min=p; while(n--){ min=*p>*min?min:p; p++; } swap(min,--p); while(l--){ max=*p>*max?p:max; p--; } swap(max,++p); } voidoutput(intarray[],intn) { int*p=...

柏乡县19899796005: 使用C语言编写程序,输入10个整数,将其中最小的数与第一个数交换,最大的数与最后一个数交换. -
符卞盐酸: #include<stdio.h> void input(int a[10]) { int i; for(i=0;i<10;i++) { scanf("%d",&a<i>); } } void exchange(int a[10]) { int i,min,max,temp,big,small; min=max=a[0]; for(i=0;i<10;i++) { if(max<a<i>) { max=a<i>; big=i; } if(min>a<i>) { min=a<i>; small=i; } } ...

柏乡县19899796005: java 输入一个正整数n,再输入n个整数,将最小值与第一个数交换,最大值与最后一个数 -
符卞盐酸: 数组越界了.假如我上次输入的是 5 5 4 3 2 1 这次输入 4 1然后就会报错 原因是上次的t没有被初始化 t是4 这次的数组共4个值,所以最大只能a[3] 但是在比较的时候出现了a[4]所以就越界了 修改方案是把这些初始化 t=0;m=0;l=0; 放到第一个for语句后面

柏乡县19899796005: 编写程序,输入一个正整数n(1<n<=10),再输入n个整数,将最小值与第一个数交换,最大值与最后 -
符卞盐酸: #include <stdio.h> void main() { int i,j=0,k=0,t,n,min,max,a[10]; printf("输入整数的个数: "); scanf("%d",&n); printf("输入%d个整数: ",n); scanf("%d",&a[0]); max=a[0];min=a[0]; for(i=1;i<n;i++) { scanf("%d",&a[i]); if(max<a[i]) {...

柏乡县19899796005: 用指针的方法处理:输入十个整数,将其中最小的数与第一个数交换,将最大数和最后一个数交换! -
符卞盐酸: #include <stdio.h> int main(void) { int array[10], *x = 0, *y = 0, *z = 0, i = 0, j = 0, max = 0, min = 65536; printf("请输入十个正整数:\n"); x = (int*)array; for(i = 0; i< 10; i++) { scanf("%d", &j); j = j>0?j:-j; /*保证输入为正整数*/ if (max < j) { /*记录...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网