7-2 選擇法排序 (20 分)
本題要求將給定的n個整數從大到小排序后輸出。
輸入格式:
輸入第一行給出一個不超過10的正整數n。第二行給出n個整數,其間以空格分隔。
輸出格式:
在一行中輸出從大到小有序的數列,相鄰數字間有一個空格,行末不得有多余空格。
?
代碼
#include<stdio.h> int main(void) {int i,index,k,n,temp;int a [10];scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a [i]);for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++)if(a [i]>a [index]) index=i;temp=a [index];a [index]=a [k];a [k]=temp;} printf("%d",a [0]);for(i=1;i<n;i++)printf(" %d",a [i]);return 0; }
截圖
?
思路
?
評價
這題和書上的一樣,只是輸出格式有要求。
用時不久,就是輸出格式那里
?
?
7-1 找鞍點 (20 分)
一個矩陣元素的“鞍點”是指該位置上的元素值在該行上最大、在該列上最小。
本題要求編寫程序,求一個給定的n階方陣的鞍點。
輸入格式:
輸入第一行給出一個正整數n(1≤n≤6)。隨后n行,每行給出n個整數,其間以空格分隔。
輸出格式:
輸出在一行中按照“行下標 列下標”(下標從0開始)的格式輸出鞍點的位置。如果鞍點不存在,則輸出“NONE”。題目保證給出的矩陣至多存在一個鞍點。
代碼
#include<stdio.h> int main(void) {int a [6][6];int i,j,x,y;int n,row,col,flag=0;scanf("%d",&n);for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a [i][j]);for(i=0;i<n;i++){row=i;col=0;for(j=0;j<n;j++){if(a [row][j]>=a [row][col])col=j; }for(x=0;x<n;x++){if(a [x][col]<a [row][col]) {flag=0;break;} elseflag=1;}if(flag==1) break;else continue;}if(flag==1)printf("%d %d",row,col);elseprintf("NONE");return 0; }
截圖
?
思路
評價
首先時間用的久,開始思路是清晰的,但在寫的過程中出現很多錯誤,主要是循環的不正確
?
?
?
7-1 冒泡法排序 (10 分)
輸入1個正整數n(1<=n<=10),然后輸入n個整數并存放在數組中,將這n個整數從大到小排序后輸出,相鄰數字間有一個空格,行末不得有多余空格。
輸入格式:
輸入第一行給出一個不超過10的正整數n。第二行給出n個整數,其間以空格分隔。
輸出格式:
在一行中輸出從大到小有序的數列,相鄰數字間有一個空格,行末不得有多余空格。
?
代碼
#include<stdio.h> int main(void) {int i,j,temp,n;int a [10];scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a [i]);for(j=0;j<n-1;j++)for(i=0;i<n;i++)if(a[i]<a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;}printf("%d",a[0]);for(i=1;i<n;i++)printf(" %d",a[i]);return 0; }
截圖
思路
?
評價
首先不知道冒泡排序法是什么,在網上查了,是比較相鄰兩個數的大小,進行替換,
其次用時不是很久