####基礎做業 給定一個整數數組(包含正負數),找到一個具備最大和的子數組,返回其最大的子數組的和。 例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子數組爲[3, 10, -4, 7, 2] ##輸入: 請創建以本身英文名字命名的txt文件,並輸入數組元素數值,元素值之間用逗號分隔。 ##輸出: 在不刪除原有文件內容的狀況下,將最大子數組以及子數組的和寫入文件。 ####1).實驗代碼數組
#include<stdio.h> #include<stdlib.h> int main(void) { FILE*fp; int i=0,x=0,y=0,n=0,sum2=0,sum3=0,h=0,l=0; int a[10]; if((fp=fopen("D:\\helei.txt","a+"))==NULL){ printf("File open error!\n"); exit(0); } fscanf(fp,"%d\n",&n); printf("%d\n",n); for(i=0;i<n;i++){ fscanf(fp,"%d,",&a[i]); printf("%d,",a[i]); sum3=a[0]-1; } for(x=0;x<n;x++){ sum2=0; for(y=x;y<n;y++){ sum2=sum2+a[y]; if(sum2>sum3){ h=x; l=y; sum3=sum2; } } } printf("\n"); fprintf(fp,"\n"); for(h;h<=l;h++){ printf("%d,",a[h]); fprintf(fp,"%d,",a[h]); } printf("\n%d",sum3); fprintf(fp,"\n%d",sum3); if(fclose(fp)){ printf("Can not close the file!\n"); exit(0); } return 0; }
####2).設計思路 學習
####3).本題調試過程碰到的問題以及解決辦法 從運行結果能夠看出程序沒有計算全部可能的子數組的和,仔細檢查代碼發現第18行for(x=0;x<n-x;x++){和第二十行for(y=x;y<n-x;y++){中的n-x應爲n,當時不知道怎麼想的加了個-x,致使浪費了不少時間在檢查代碼上,修改後正確。 ####4).運行結果截圖
####預習做業 ####7-1 判斷上三角矩陣 (15 分) 上三角矩陣指主對角線如下的元素都爲0的矩陣;主對角線爲從矩陣的左上角至右下角的連線。 本題要求編寫程序,判斷一個給定的方陣是否上三角矩陣。 ##輸入格式: 輸入第一行給出一個正整數T,爲待測矩陣的個數。接下來給出T個矩陣的信息:每一個矩陣信息的第一行給出一個不超過10的正整數n。隨後n行,每行給出n個整數,其間以空格分隔。 ##輸出格式: 每一個矩陣的判斷結果佔一行。若是輸入的矩陣是上三角矩陣,輸出「YES」,不然輸出「NO」。 ##輸入樣例: 2 3 1 2 3 0 4 5 0 0 6 2 1 0 -8 2 ##輸出樣例: YES NO ####1).實驗代碼設計
#include<stdio.h> int main() { int T=0,i=0,n=0,h=0,l=0,x=0; int a[10][10],b[10]; scanf("%d",&T); for(i=0;i<T;i++){ scanf("%d",&n); for(h=0;h<n;h++){ for(l=0;l<n;l++){ scanf("%d",&a[h][l]); if(l<h&&a[h][l]!=0){ b[x]=1; } } } x++; } for(x=0;x<T;x++){ if(b[x]==1){ printf("NO\n"); } else{ printf("YES\n"); } } return 0; }
####2).設計思路 調試
####3).本題調試過程碰到的問題以及解決辦法 本題沒有問題。 ####4).運行結果截圖
###2、學習進度條 |周/日期|這周所花的時間|代碼行|學到的知識點簡介|目前比較迷惑的問題| |:-:|:-:|:-:|:-:|:-:| |3/2-3/8|2h|23行|數組|無 |3/9-3/11|3h|29行|讀取文件數據|無 |3/12-3/18|5h|70行|用數組輸出矩陣|無 ###3、學習感悟 這周學習了新的C語言知識,還算簡單,有時間能夠挑戰一下難題,另外就是寫代碼的時候必定要思路清晰,認真仔細,避免出現沒必要要的錯誤。code