当前位置:首页 » 编程语言 » c语言数组最大值和第一个值交换
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言数组最大值和第一个值交换

发布时间: 2022-05-20 02:46:45

c语言——将用户输入的10个元素的数组中最大的与第一个元素交换,最小的与最后一个元素交换,输出数组

#include <stdio.h>
#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("交换后:\n");
for(i=0;i<max;i++)
printf("%d\t",num[i]);
printf("\n");
return 0;
}

❷ C语言输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组

唯一的一个问题

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

比如, 最小值本来在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;

❸ C语言编程,输入10个数查找最大数字并和第一个数字互换。

#include "stdio.h"
int Max(int num[]);//自定义一个求一组数据中最大数的下标
void main()
{
int num[10];//定义一个数组存放输入的10个数字
int i,temp;//i为循环变量,temp为最大数与第一个数交换时的中间变量
int n;
printf("Please input ten numbers:\n");
for(i=0;i<10;i++)
{
scanf("%d",&num[i]);
}
n=Max(num);//找出最大数的下标
//以下三行代码为最大数与第一个数交换
temp=num[0];
num[0]=num[n];
num[n]=temp;
//输入处理后的十个数
printf("ten numbers:\n ");
for(i=0;i<10;i++)
{
if(i%5==0)
printf("\n%5d",num[i]);
else
printf("%5d",num[i]);
}
}
int Max(int num[])
{
int max=0;//用于存放最大数的下标
int i;
for(i=1;i<10;i++)
{
if(num[i]>num[max])//用于比较出最大的数
max=i;//比较后的最大数的下标赋值给max变量
}
return max;//返回最大数的下标
}

❹ C语言中,定义一个数组,输入10个数,将最大值与第一个值互换,最小值与最后一个值互换,再输出这个数组

用乱七八糟评价你的代码一点不为过,不光是格式,连同逻辑!写代码要尽量往简单写,提供一个供参考——

intmain(void){
intarr[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_i])
min_i=i;
if(arr[i]>arr[max_i])
max_i=i;
}
i=arr[9];
arr[9]=arr[min_i];
arr[min_i]=i;
i=arr[0];
arr[0]=arr[max_i];
arr[max_i]=i;
printf("交换后的结果为:");
for(i=0;i<10;i++)
printf("%d",arr[i]);
printf(" ");
return0;
}

❺ c语言:输入10个整数,将其中最大数与第一个数交换,最小数与最后一个数交换(要求用指针方法实现)

#include <stdio.h>

#include <conio.h>

void main()

{

int i,min,max,temp,t1,t2,a[10],*p=a;

for(i=0;i<10;i++)

scanf("%d",p+i);

min = a[0];

max = a[0];

t1=0;

t2=0;

for(i=0;i<10;i++)

{

if(min>a[i])

{

min=a[i];

t1=i;

}

if(max<a[i])

{

max=a[i];

t2=i;

}

}

temp=a[0];

a[0]=min;

a[t1]=temp;

temp=a[9];

a[9]=max;

a[t2]=temp;

printf("max=%d,min=%d ",max,min);

for(i=0;i<10;i++)

printf("%d",a[i]);

}

(5)c语言数组最大值和第一个值交换扩展阅读:

使用指针来读取数据,在重复性操作的状况下,可以明显改善程序性能,例如在遍历字符串,查取表格,控制表格及树状结构上。对指针进行复制,之后再解引用指针以取出数据,无论在时间或空间上,都比直接复制及访问数据本身来的经济快速。

指针的机制比较简单,其功能可以被集中重新实现成更抽象化的引用数据形别。许多编程语言中都支持某种形式的指针,最着名的是C语言,但是有些编程语言对指针的运用采取比较严格的限制,如Java一般避免用指针,改为使用引用。

❻ C语言编程:输入n个数,将最大的与第一个数交换,最小的与最后一个数交换,输出交换后的结果

#include<stdio.h>

voidswap(int*a,int*b)
{
printf("%d,%d ",*a,*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=array;
while(n--)
printf("%d",*p++);
printf(" ");
}

intmain(void)
{
inti;
intn;
intbuf[128];

printf("inputcountofarray:");
scanf("%d",&n);
printf("input%dnum:",n);
for(i=0;i<n;i++)
scanf("%d",&buf[i]);
max_min(buf,n);
output(buf,n);
return0;
}

❼ 编写C语言程序,输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

*min=a[n];a[n]=k;

*max=a[0];a[0]=j;

n=7,但数组的下标为0-6,出现了下标越界。

#include<stdio.h>

int main(void)

printf("请输入数组:");

a[0]=a[maxp];

a[maxp]=t;

printf("输出: ");

}

数组中的元素

数组中的所有元素都具有相同类型。数组中的元素存储在一个连续性的内存块中,并通过索引来访问(这一点也和结构和类中的字段不同,它们通过名称来访问)。数组元素并非只能是基元数据类型,还可以是结构、枚举或类。

以上内容参考:网络-数组

❽ C语言:定义一个包含10个元素的一维数组找出其中的最大值让其与第一个元素交换,找出最小值与最后一个

代码如下:

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

void main(){

int i, a[10], max, min, pmax, pmin, tmp;

srand(time(NULL));

for(i=0; i<10; i++){

a[i] = rand()%100+0;

}


printf("这十个数分别为: ");

for (i=0; i<10; i++){

printf("%d ", a[i]);

}


max = a[0];

pmax = 0;

for(i=1; i<10; i++){

if(a[i] > max){

max = a[i];

pmax = i;

}

}

printf(" 最大值: %d", max);


min = a[0];

pmin = 0;

for(i=1; i<10; i++){

if(a[i] < min){

min = a[i];

pmin = i;

}

}

printf(" 最小值: %d", min);


tmp = a[0];

a[0] = a[pmin];

a[pmin] = tmp;


tmp = a[9];

a[9] = a[pmax];

a[pmax] = tmp;


printf(" 经过调整过后的十个数分别为: ");

for (i=0; i<10; i++){

printf("%d ", a[i]);

}


}

(8)c语言数组最大值和第一个值交换扩展阅读:

注意事项

数组位置交换的几种方法

1、引入第三个变量

var arr = ['one','two'];var item = arr[0];

arr[0] = arr[1];

arr[1] = item;

2、splice方法,splice() 方法会直接对数组进行修改,splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。

arr.splice(1,1,arr[0]) 将第二个值替换成第一个值,...arr.splice(1,1,arr[0])拿到被替换的值,即第二个值,
arr.splice(0,1,...arr.splice(1,1,arr[0]))将第一个值换成第二个值
var arr = ['one','two'];

arr.splice(0,1,...arr.splice(1,1,arr[0]))// 或者 arr.splice(0,1,arr.splice(1,1,arr[0])[0])//arr.splice(index2,1,...arr.splice(index1, 1 , arr[index2]));

3、数组解构赋值(数组长度大于2时不适用)

var arr = ['one','two'];

[arr[0],arr[1]] = [arr[1],arr[0]]// [arr[index1],arr[index2]] = [arr[index2],arr[index1]];

❾ c语言:输入a[10],将最大的元素与第一个元素交换,最小的元素与最后一个元素交换,输出数组所有元素。

intmin=0;
intminindex=0;
intmax=0;
intmaxindex=0;
inti=0;

min=a[0];
max=a[0];
for(i=0;i<10;i++)
{
if(a[i]>=max)
{
max=a[i];
maxindex=i;
}
if(a[i]<=min)
{
min=a[i];
minindex=i;
}
}

a[maxindex]=a[0];
a[minindex]=a[9];
a[0]=max;
a[9]=min;

❿ C语言作业,找出数组中最大值与第一个交换,最小值和最后一个交换,求改错

#include<stdio.h>

intmain()
{
inta[10];
inti,t1=0,t2=0,min=0,max=0;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
t1=a[0];
for(i=0;i<10;i++)
{
if(a[i]<t1)
{
min=i;
t1=a[i];
}
}
t2=a[min];
a[min]=a[0];
a[0]=t2;

t1=a[0];
for(i=0;i<10;i++)
{
if(a[i]>t1)
{
max=i;
t1=a[i];
}
}
t2=a[max];
a[max]=a[9];
a[9]=t2;
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
return0;
}


  1. 你把数组下标和数字搞混了;

  2. 你每次for循环都会将a[0]重新赋值给max(或者min);