題目1.本週請你們完成上週挑戰做業的第一部分:給定一個整數數組(包含正負數),找到一個具備最大和的子數組,返回其最大的子數組的和。
例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子數組爲[3, 10, -4, 7, 2]
輸入:
請創建以本身英文名字命名的txt文件,並輸入數組元素數值,元素值之間用逗號分隔。
輸出
在不刪除原有文件內容的狀況下,將最大子數組以及子數組的和寫入文件。數組
#include<stdio.h> int main(void) { FILE *sz=fopen("C:\\Users\\LILI\\Desktop\\LX\\input.text","a+"); int LI[100]; char ch; int i, number, time; for(i = 0;fscanf(sz,"%d%c", &number, &ch); i ++) { time++; LI[i] = number; if(ch == "\n") break; } int k, j, m, max=LI[0], middle, sum, start=0, end=0; for(k=0; k<time; k++){ for(j=k; j<k; j++){ sum = 0; for(middle = i; middle < j+1; middle ++) sum += LI[middle]; if(sum >= max) { start = k; end = j; max = sum; } } } for(m = start; m <= end; i++) fprintf(sz,"%d ", LI[m]); fprintf(sz,"\n%d", max); fclose(sz); return 0; }
遇到的問題:數據寫不進文件
解決的辦法:觀察代碼,發現時文件名打錯了。學習
題目2.7-1 判斷上三角矩陣 (15 分)
上三角矩陣指主對角線如下的元素都爲0的矩陣;主對角線爲從矩陣的左上角至右下角的連線。設計
本題要求編寫程序,判斷一個給定的方陣是否上三角矩陣。調試
輸入格式:
輸入第一行給出一個正整數T,爲待測矩陣的個數。接下來給出T個矩陣的信息:每一個矩陣信息的第一行給出一個不超過10的正整數n。隨後n行,每行給出n個整數,其間以空格分隔。code
輸出格式:
每一個矩陣的判斷結果佔一行。若是輸入的矩陣是上三角矩陣,輸出「YES」,不然輸出「NO」。視頻
輸入樣例:blog
2 3 1 2 3 0 4 5 0 0 6 2 1 0 -8 2
輸出樣例:input
YES NO
#include<stdio.h> int main(void) { int T, n, i, j, time, flag; scanf("%d", &T); int a[10][10]; for(time = 0;time < T;time ++) { scanf("%d\n", &n); flag=0; for(i = 0; i < n; i ++){ for(j = 0; j < n; j ++){ scanf("%d", &a[i][j]); } } for(i = 1; i < n; i ++){ for(j = 0; j < i; j ++){ if(a[i][j] != 0) { flag=1; break; } } } if (flag == 1) printf("NO\n"); else printf("YES\n"); } return 0; }
遇到的問題1:答案錯誤(只能判斷一個矩陣是否爲上三角矩陣)
解決的辦法:在pta上沒有錯誤緣由,我就用本身編譯器試了一下,發現只能判斷一個矩陣,就想到了錯誤緣由應該出在第一個循環那裏,改了半天,結果發現並非,後來聽了搭檔的話把判斷是否爲上三角矩形的條件改了(i<j去掉)。編譯器
遇到的問題2:段錯誤
解決的辦法:不知道哪裏錯誤了,就問了本次的搭檔楊浩誠,搭檔說不用變長數組(括號裏的是變量就是變長數組),就把int a[n][n]改成了int a[10][10]。io
基礎做業:主要靠學習助教的教學視頻寫出,寫該題的主要問題在不理解題目的意思,還有發現本身本週的專業課學習態度有問題,基本靠老師推着走,對於其餘課程的學習,英語競賽和四級的準備,沒有分配好時間,下一週要加油學習C才行。
預習做業:又學到了一種新類型的題,知道了變長數組有時是沒有必要的。跟搭檔交流了一下學習c語言時遇到的難題,發現本身之後將會遇到更多的困難,但願本身能一直堅持下去。