當前位置:首頁 » 編程語言 » 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);