2019第四周作业(基础作业+挑战作业)
基礎題1:
輸入一個正整數 n (1≤n≤10)和n 階方陣a的元素,如果方陣a中的所有元素都沿主對角線對稱,輸出“Yes”, 否則,輸出“No”。主對角線為從矩陣的左上角至右下角的連線,方陣a中的所有元素都沿主對角線對稱指對所有i, k,a[i][k]和a[k][i]相等。輸入輸出示例如下:
輸入:
3
1 2 3
4 5 6
7 8 9 輸出:
No
#include <stdio.h>
int main(void)
{ int found, i, k, n;int a[10][10];scanf ("%d", &n);for (i = 0; i < n; i++) for (k = 0; k < n; k++)scanf("%d", &a[i][k]);found = 1;for (i = 0; i < n; i++){ for (k = 0; k < i; k++){if (
a[i][k]!=a[k][i]
(3分)) { found=0
; break;}}if (
found==0
){break;}}if (found != 0){printf("Yes\n");} else{printf("No\n");} return 0;
} 基礎作業2
選擇法排序
本題要求將給定的n個整數從大到小排序后輸出。
輸入格式:
輸入第一行給出一個不超過10的正整數n。第二行給出n個整數,其間以空格分隔。
輸出格式:
在一行中輸出從大到小有序的數列,相鄰數字間有一個空格,行末不得有多余空格。
輸入樣例:4 5 1 7 6
輸出樣例:7 6 5 1
實驗代碼:
#include<stdio.h>
int main(){int n,i,k,max,temp;int a[10];scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(k=0;k<n-1;k++){max=k;for(i=k+1;i<n;i++)if(a[i]>=a[max])max=i;temp=a[max];a[max]=a[k];a[k]=temp;}printf("%d",a[0]);for(i=1;i<n;i++)printf(" %d",a[i]);return 0;
} 實驗過程中遇到的問題
對于行末不得有多余空格的理解錯誤。
PTA運行結果截屏
流程框圖
基礎作業3
找鞍點
一個矩陣元素的“鞍點”是指該位置上的元素值在該行上最大、在該列上最小。
本題要求編寫程序,求一個給定的n階方陣的鞍點。
輸入格式:
輸入第一行給出一個正整數n(1≤n≤6)。隨后n行,每行給出n個整數,其間以空格分隔。
輸出格式:
輸出在一行中按照“行下標 列下標”(下標從0開始)的格式輸出鞍點的位置。如果鞍點不存在,則輸出“NONE”。題目保證給出的矩陣至多存在一個鞍點。
輸入樣例1:
4 1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9
輸出樣例1:
2 1
輸入樣例2:
2 1 7 4 1
輸出樣例2:
NONE
實驗代碼
#include<stdio.h>
int main(){int n,i,j,k,y,p,flag;int a[6][6];scanf("%d",&n);for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);k=0;y=0;flag=1,p=0;if(n==1)printf("0 0");else{for(i=0;i<n;i++){y=i;for(p=0; p<n; p++) {if(a[i][k]<=a[i][p]){k=p;}}for(j=0; j<n; j++){if(a[y][k]>a[j][k]){y=j;break;}}if(i==y){flag=0;break;} }if(flag==0)printf("%d %d",i,k);elseprintf("NONE");}
} 實驗過程中遇到的問題
忽略了當n=1時的情況
解決方法
利用if-else語句
PTA運行結果截圖
流程框圖
挑戰作業
冒泡法排序
輸入1個正整數n(1<=n<=10),然后輸入n個整數并存放在數組中,將這n個整數從大到小排序后輸出,相鄰數字間有一個空格,行末不得有多余空格。
輸入格式:
輸入第一行給出一個不超過10的正整數n。第二行給出n個整數,其間以空格分隔。
輸出格式:
在一行中輸出從大到小有序的數列,相鄰數字間有一個空格,行末不得有多余空格。
輸入樣例:
4 75 71 77 76
輸出樣例:
77 76 75 71
實驗代碼
#include<stdio.h>
int main ()
{int i,j,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++){j=k;for(i=k+1;i<n;i++)if(a[i]>a[j])j=i;temp=a[j];a[j]=a[k];a[k]=temp;}printf("%d",a[0]);for(i=1;i<n;i++){printf(" %d",a[i]);}return 0;
} PTA運行結果截圖
流程框圖
本周學習總結
本周學習二維數組和選擇排序法,冒泡排序法。
本周學習進度條
| 周/日 | 這周所花時間 | 代碼行 | 學到的知識點 |
|---|---|---|---|
| 3/17-3/23 | 八小時 | 300行 | 二維數組 |
轉載于:https://www.cnblogs.com/Liu0922/p/10579499.html
總結
以上是生活随笔為你收集整理的2019第四周作业(基础作业+挑战作业)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 耳膜修复一边需要多少钱
- 下一篇: codeforces3A