❶ 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;
}
你把數組下標和數字搞混了;
你每次for循環都會將a[0]重新賦值給max(或者min);