输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

作者&投稿:望枝 (若有异议请与网页底部的电邮联系)
编写C语言程序,输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。~

#include
main()
{
int a[10],i,max,maxp,min,minp,t;
printf("请输入数组");
for(i=0;i<10;i++)//是10不是1
scanf("%d",&a[i]);//这里丢了个括号
max=min=a[0];
maxp=minp=0;
for(i=1;i<10;i++)
{
if(a[i]>max)
{
max=a[i];
maxp=i;
}
if(a[i]<min)
{
min=a[i];
minp=i;
}
}//for循环应到这为止
if(minp!=0)//注意要加这个条件 防止最小值是第一个时交换 出错
{
t=a[0];
a[0]=a[maxp];
a[maxp]=t;
t=a[9];
a[9]=a[minp];
a[minp]=t;
}
else
{
t=a[0];
a[0]=a[maxp];
a[maxp]=t;
t=a[9];
a[9]=a[maxp];
a[maxp]=t;
}

for(i=0;i<10;i++)
{
if(i!=4)
printf("%8d",a[i]);
else printf("%8d
",a[i]);
}
printf("
");
}

没问题了 已改正



可能出错的情况都测试了 这样就可以同时找最大值最小值了

#include
#define max 10
void change(int* p)
{
int i,maxk=0,mink=0,temp; //maxk,mink分别记录着最大和最小值的下标
for(i=1;i<max;i++)
{
if(p[i]>p[maxk])
maxk=i;
if(p[i]<p[mink])
mink=i;
}
temp=p[maxk];p[maxk]=p[0];p[0]=temp;
temp=p[mink];p[mink]=p[max-1];p[max-1]=temp;
}
int main ()
{
int num[max],i;

for(i=0;i<max;i++)
scanf("%d",num+i);
change(num);
printf("交换后:
");
for(i=0;i<max;i++)
printf("%d",num[i]);
printf("
");
return 0;
}

代码如下:

using System;

namespace demo003
{
class Program
{
static void Main(string[] args)
{
int[] numbers = new int[100];
int n = 0;

// 输入数据

Console.WriteLine("请输入数组数据(最多100个,空行结束):");

string line;

while ((line = Console.ReadLine()) != "")
{
int result = 0;

if (int.TryParse(line, out result))
{
numbers[n++] = result;
}
}

// 查找最大最小数

int max = 0, min = 0;

for (int i = 1; i < n; i++)
{
if (numbers[i] > numbers[max])
max = i;
if (numbers[i] < numbers[min])
min = i;
}

// 交换最大数
int temp = numbers[0];
numbers[0] = numbers[max];
numbers[max] = temp;

// 交换最小数
temp = numbers[n - 1];
numbers[n - 1] = numbers[min];
numbers[min] = temp;

// 输出

for (int i = 0; i < n; i++) 
{
Console.Write("{0} ", numbers[i]);
}

Console.WriteLine();
Console.ReadKey();
}
}
}

运行结果:



唯一的一个问题 

就是如果最大最小值本来就在第一个或者最后一个的情况.

比如, 最小值本来在a[0]  最大值在a[4]

这样循环后min=0 max=4

于是 先做了一次交换 a[max]和a[0] 也就是a[4]和a[0]

然后 又做了一次交换, a[min]和a[4] 还是a[0]和a[4] 又换回去了.

导致最小在a[0] 最大在a[4] 与要求不符.

修改方式 就是

m=array[max];
array[max]=array[0];
array[0]=m;
if(min==0) min=max;//如果min已经被换走了,那么把min赋值成被换的位置.
m=array[min];
array[min]=array[4];
array[4]=m;


using System;

class Program
{
public static void Main(string[] args)
{
int n,t,max,min;
int[] arr;

max=min=0;
Console.Write("请输入整数数组的元素个数:");
n=Convert.ToInt32(Console.ReadLine());
Console.WriteLine();
arr=new int[n];
Console.WriteLine("请输入{0}个整数,每行1个:",n);
for(int i=0;i<n;i++)
{
arr[i]=Convert.ToInt32(Console.ReadLine());
if(arr[i]>arr[max])
max=i;
if(arr[i]<arr[min])
min=i;
}
if(0!=max)
{
t=arr[0];
arr[0]=arr[max];
arr[max]=t;
if(0==min)
min=max;
}
if(n-1!=min)
{
t=arr[n-1];
arr[n-1]=arr[min];
arr[min]=t;
}
Console.WriteLine("最大值与第一个交换,最小值与最后一个交换后:");
for(int i=0;i<n-1;i++)
{
Console.Write("{0} ",arr[i]);
}
Console.WriteLine(arr[n-1]);
Console.WriteLine("按任意键继续。。。");
Console.ReadKey(true);
}
}

#include <iostream>
using namespace std;
void swap(int& a, int& b)
{
int temp=a;
a=b;
b=temp;
}
void change(int *a,int len)
{
int max=a[0];
int maxpos=0;
int min=a[0];
int minpos=0;
for (int i=1; i<len; i++)
{
if (a[i]>max)
{
max=a[i];
maxpos=i;
}
if (a[i]<min)
{
min=a[i];
minpos=i;
}
}
swap(a[0],a[maxpos]);
swap(a[len-1],a[minpos]);
}
void main()
{
int a[]={3,1,4,2,0,5,7,6};
int len=sizeof(a)/sizeof(int);
change(a,len);
for (int i=0; i<len; i++)
{
cout<<a[i]<<endl;
}

}

m=array[max];
// array[max]=array[0];多余的
array[0]=m;
m=array[min];
// array[min]=array[4];多余的
array[4]=m;


...并存入数组,要求将10个数中最大的数与第1个输入的数交换;
include<stdio.h> int main(){int a[10],*p,*max,*min,t;for(p=a;p<a+10;p++)scanf("%d",p);for(max=min=p=a;p<a+10;p++)if(*max<*p)max=p;else if(*min>*p)min=p;t=*a; *a=*max; *max=t;t=*(a+9); *(a+9)=*min; *min=t;for(p=a;p...

...数组的10个元素,并将最小值与第一个数交换,最大值与最后一个数交换...
include <stdio.h>int main() {int a[10],i,t,imin,imax,n = 10;printf("输入10整数(空格隔开):");for(i = 0; i < n; ++i)scanf("%d",&a[i]);printf("处理前:\\n");for(i = 0; i < n; ++i) printf("%d ",a[i]);printf("\\n");imin = imax = 0;for(i = ...

编写一个函数,该函数的功能是将一个整数数组中的最大值与第一个元素交 ...
\/\/ 交换第一个元素和最大值 i = a[0];a[0] = a[maxPosition];a[maxPosition] = i;\/\/ 交换最后一个元素和最小值 i = a[N-1];a[N-1] = a[minPosition];a[minPosition] = i;} void output (int a[]){ int p;for (p = 0; p < N; p++){ printf ("%d ", a[p]...

...将其中最小的数与第一个数对换,把最大的数与最后一个数对换?_百度...
include<stdio.h>int main() { int i,a[10],*max,*min,temp;for(i=0;i<10;i++) scanf("%d",&a[i]); \/\/ <改成=printf("处理前: "); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\\n");min=max=&a[0];for (i=1;i<10;i++) if ( *maxa[i] ) min...

C语言中,定义一个数组,输入10个数,将最大值与第一个值互换,最小值与...
用乱七八糟评价你的代码一点不为过,不光是格式,连同逻辑!写代码要尽量往简单写,提供一个供参考——int main(void){ int arr[10],i,max_i,min_i; printf("请输入10个数字:"); for(max_i=min_i=i=0;i<10;i++){ scanf("%d",&arr[i]); if(arr[i]<arr[min...

求java练习题
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 【程序36】 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数 【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的...

c++输入N个整数,找出最大数所在位置,并将它与第一个数对调位置,输出改 ...
你这样复杂化了吧。。。不是说,只要把最大数和第一个数交换就可以了,你这样是全部往后移动了。你只要 找出最大数,然后跟x[0]交换就可以了。需要代码,可以追问我。

输入N个整数,找出最大数所在位置,并将它与第一个数对调位置。这利用c+...
void part_1(int *p,int len){ int i=0,r=len-1,t; while(i<r) { if(p[i]>p[r]) r--; else i++; } t=p[0]; p[0]=p[i]; p[i]=t;}

...数组的10个元素,并将最小值与第1个数交换,最大值与最后一个数交换...
你没有把xiao和da初始化!你先把xiao = 0;da = 0;(数组第一个数)你再试一下!你如果不初始化的话,在if条件中有些情况会出现xiao或da未赋值,而造成数组越界!一般在运行至出错的,很多是内存问题,有数组的话,很有可能就是越界啦!自己平常多思考一下!

...包含10个元素的一维数组找出其中的最大值让其与第一个元素交换,找出...
printf("\\n\\n最大值:\\t%d", max);min = a[0];pmin = 0;for(i=1; i<10; i++){ if(a[i] < min){ min = a[i];pmin = i;} } printf("\\n最小值:\\t%d", min);tmp = a[0];a[0] = a[pmin];a[pmin] = tmp;tmp = a[9];a[9] = a[pmax];a[pmax]...

麻江县15086906434: 从键盘输入一个一维数组将最大的元素与第一个元素交换,最小的元素与最后一个元素交换,并输出原来的数组求此题思路 -
邓映卫复:[答案] 遍历一位数组,得到最大值和最大值的位置,得到最小值和最小值的位置,然后将数组最大值的位置与第一个元素交换,最小值的位置与最后一个元素交换. 不懂可以上代码

麻江县15086906434: 从键盘输入数组元素,最大的一个与第一个元素交换,最小的与最后一个元素交换,并输出数组 -
邓映卫复: int a[10]; 赋值 a[max] a[min]分别存放数组中最大最小值 然后各自交换

麻江县15086906434: 输入数组,最大的与第一个元素交换,最小的与最后一个 元素交换,输出数组. -
邓映卫复: 楼主搞错了吧,这个程序是将最小值行在第一位,最大值行在最后一位i++ array array+10 *p<*min

麻江县15086906434: 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组. -
邓映卫复: #include <stdio.h>#define SWAP(a, b) { i = a; a = b; b = i; } int main() { int a[100], n, i, max, min; printf( "输入一个数组的长度:" ); scanf( "%d", &n ); printf( "输入这%d个数:", n ); min = max = 0; for ( i = 0; i < n; ++i ) { scanf( "%d...

麻江县15086906434: 用C语言编程实现输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组(用指针的方法) -
邓映卫复: //运行时,请随机输入10个数!#include<stdio.h> void main(){ int i,j,k,f[10],max,min,a,b; for(i=0;i<10;i++) scanf("%d",&f[i]); a=b=0; max=min=f[0]; for(j=1;j<10;j++) {if(f[j]>max) {max=f[j]; a=j;} if(f[j]<min) {min=f[j]; b=j;} } k=f[0]; f[0]=f[b]; f[b]=k; if(f[9]!=...

麻江县15086906434: 输入十个数,找出最大的跟第一个数交换,找出最小的跟最后一个数交换 -
邓映卫复:[答案] dim a(10) '十个数 for i=2 to 9 if a(1)a(i) then a(i)=a(i)+a(10) a(10)=a(i)-a(10) a(i)=a(i)-a(10) end if next '交换完了,可以输出了

麻江县15086906434: 求解答c语言编程:将数组中最大的值与第1个元素交换,最小值与最后一个元素交换,输出数组 -
邓映卫复: char a[LEN];int max=a[0],min=a[0],maxid=0,minid=0,tmp; int i; for (i=1;i<len;i++) { if (max < a[i]) { max=a[i]; maxid=i; } if (min > a[i]) { min=a[i]; minid=i; } } tmp=a[0]; a[0]=a[maxid]; a[maxid]=tmp; tmp=a[len-1]; a[len-1]=a[minid]; a[minid]=tmp;

麻江县15086906434: C语言——将用户输入的10个元素的数组中最大的与第一个元素交换,最小的与最后一个元素交换,输出数组 -
邓映卫复: #include<stdio.h> int main(void) { int a[10],i,min,max,b,c; printf("input 10 integers:"); for(i=0;i<10;i++) scanf("%d",&a[i]); min=0;max=0; for(i=1;i<10;i++) if(a[i]<a[min]) min=i;b=a[min]; a[min]=a[9]; a[9]=b;for(i=1;i<10;i++) if(a[i]>a[max]) max=i; ...

麻江县15086906434: 一个数组有10个整数(任意输入),找出数组中最大的值并与数组第一个元素交换 -
邓映卫复: int main() { int a[10]; int index=0; int max; for(int i=0;i printf("输入第%d个数:\n",i+1); scanf("%d",&a[i]); if(i==0){ max=a[0]; }else{ if(max max=a[i]; index=i; } } } int v=a[index]; a[index]=a[0]; a[0]=v; for(int i=0;i scanf("%d",&v); return 0; }

麻江县15086906434: 初学者问:如何设计C程序,使输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组. -
邓映卫复: 你的意思是按从大到小的顺寻排列么? #include"stdio.h" void main() { int a[10],i,t,j; printf("please input ten numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("the number is:\n"); for(j=0;j<10;j++) printf("%d ",a[j]); printf("\n"); for(i=...

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