第四周作業
這次作業屬于哪個課程 | C語言程序設計 |
---|---|
這個作業要求在哪里 | 第四周作業 |
我的課程目標 | 全部學會 |
這個作業在那個具體方面幫助我實現目標 | 深入了解二維數組 |
參考文獻 | 教科書 |
一,基礎作業
程序填空題5-1
輸入一個正整數 n (1≤n≤10)和n 階方陣a的元素,如果方陣a中的所有元素都沿主對角線對稱,輸出“Yes”, 否則,輸出“No”。主對角線為從矩陣的左上角至右下角的連線,方陣a中的所有元素都沿主對角線對稱指對所有i, k,a[i][k]和a[k][i]相等。輸入輸出示例如下:
#include <stdio.h>
int main ()
{int i,k,a[10],b,c,n;scanf("%d",&n);for (i=0;i<n;i++) {scanf("%d",&a[i]);}for(k=0;k<n-1;k++) {c=k;for (i=k+1;i<n;i++) {if(a[i]<a[c]){c=i;b=a[c];a[c]=a[k];a[k]=b;}}}for (i=n-1;i>0;i--) {printf("%d",a[i]);}printf("%d",a[0]);return 0;
}
流程圖
本題調試遇到的問題及其解決方法
問題1,代碼的前部分是在從小到大排數字,而題目是從大到小輸出數字
解決方法,在輸入數組時,可以從后往前輸出!
問題2,題目要求輸出的數字行末不得有多余的空格
解決方法,最后一個數字單獨輸出!
截圖
程序設計題7-1
找鞍點 (20 分)
一個矩陣元素的“鞍點”是指該位置上的元素值在該行上最大、在該列上最小。
本題要求編寫程序,求一個給定的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,c,b,g; int a[6][6];scanf("%d",&n);for (i=0;i<n;i++) {for (j=0;j<n;j++) {scanf("%d",&a[i][j]);}scanf("\n");}g=0;for (i=0;i<n;i++) {b=0;for (j=b+1;j<n;j++) {if (a[i][b]<a[i][j]){b=j;}c=i;for (i=0;i<n;i++) {if(a[i][b]>=a[c][b]){break;}else {g=1;printf("%d %d",c,b);}}}if(g==0) {printf("NONE");}}return 0;
}
2)設計思路
我還是簡單用文字介紹我的設計思路吧。先在行中找到最大值,再從該最大值所在的列判斷該數是不是在該列中是最小值!其中的“if(i==temp)”是用來判斷是不是鞍點,因為鞍點的行數等于列數!
3)本題調試過程中遇到的問題及其解決方法
問題1,“最大規模,有并列極值元素,最后一個是鞍點”
截圖
流程圖
本題調試遇到的問題及其解決方法
問題1,代碼的前部分是在從小到大排數字,而題目是從大到小輸出數字
解決方法,在輸入數組時,可以從后往前輸出!
問題2,題目要求輸出的數字行末不得有多余的空格
解決方法,最后一個數字單獨輸出!
挑戰題
7-1 冒泡法排序 (10 分)
輸入1個正整數n(1<=n<=10),然后輸入n個整數并存放在數組中,將這n個整數從大到小排序后輸出,相鄰數字間有一個空格,行末不得有多余空格。
輸入格式:
輸入第一行給出一個不超過10的正整數n。第二行給出n個整數,其間以空格分隔。
輸出格式:
在一行中輸出從大到小有序的數列,相鄰數字間有一個空格,行末不得有多余空格。
輸入樣例:
4
75 71 77 76
輸出樣例:
77 76 75 71
實驗代碼
#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;}for(i=n-1;i>0;i--){printf("%d ",a[i]);}printf("%d",a[0]);return 0;
本題調試遇到的問題及其解決方法
問題1,代碼的前部分是在從小到大排數字,而題目是從大到小輸出數字
解決方法,在輸入數組時,可以從后往前輸出!
問題2,題目要求輸出的數字行末不得有多余的空格
解決方法,最后一個數字單獨輸出!
流程圖
第四周挑戰題.jpg
截圖
學習總結
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較困惑的問題 |
---|---|---|---|---|
3/9-3/15 | 3d | 100 | 文件建立及其文件的利用 | 無 |
3/15-3/18 | 4d | 150 | 二位數組和暴力解法 | 最大子數組最優的解法是什么,如何降低時間復雜度 |
3/18-3/19 | 5d | 250 | 選擇排序法 | 我沒有完全消化選擇排序法的思路 |