本週請你們完成上週挑戰做業的第一部分:給定一個整數數組(包含正負數),找到一個具備最大和的子數組,返回其最大的子數組的和。
例如:[1,-2,3,10,-4,7,2,-5]的最大子數組爲[3, 10, -4, 7, 2]
輸入:
請創建以本身英文名字命名的txt文件,並輸入數組元素數值,元素值之間用逗號分隔。
輸出
在不刪除原有文件內容的狀況下,將最大子數組以及子數組的和寫入文件。數組
#include<stdio.h> #include<stdlib.h> int main() { FILE *fp; int a[10]; int i, j, n, m, s, x, Sum=0; if((fp=fopen("F:\\yangzixin.txt","r+"))==NULL) { printf("File open error!\n"); exit(0); } scanf("%d", &n); for(i=0; i<n; i++) { scanf("%d", &a[i]); fscanf(fp,"%d%c", &a[i]); } m = s = a[0]; for(j=1; j<n; j++) { s += a[j]; if(s > m) m = s; if(s < a[j]) { s = a[j]; x=j; } } fprintf(fp,"\n"); while(1) { printf("%d ", a[x]); fprintf(fp,"%d ",a[x]); Sum += a[x]; x++; if(Sum==m) break; } printf("\n%d", m); fprintf(fp,"\n%d", m); if(fclose(fp)) { printf("Can not close the file!\n"); exit(0); } return 0; }
問題1:顯示文件打開錯誤
解決方法:文件方面確定出了問題,仔細檢查了文件,改了一下文件學習
問題2:不知道最大子數組是什麼,怎樣判斷
解決方法:查閱資料,參考別人的寫法,來判斷何爲最大子數組設計
問題3:仍是錯在fscanf和fprintf上面
解決方法:得多本身練習,區分好用法指針
上三角矩陣指主對角線如下的元素都爲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調試
#include <stdio.h> int main (void) { int T,n,i,j,k,m=0; int a[10][10]; int d[100]={0}; scanf("%d\n",&T); for(i=0;i<T;i++) { scanf("%d",&n); for(j=0;j<n;j++) { for(k=0;k<n;k++) { scanf("%d",&a[j][k]); } } for(j=0;j<n;j++) { for(k=0;k<n;k++) { if(j>k&&a[j][k]!=0) m++; } } if(m==0) d[i]=1; else d[i]=0; m=0; } for(i=0;i<T;i++) { if(d[i]) printf("YES\n"); else printf("NO\n"); } return 0; }
問題1:一開始不懂二維數組的用法,看着題目有點懵
解決方法:看老師發的那個視頻,看書上的二維數組知識點和例題,按照那個方法來編寫程序code
問題2:編寫程序的時候,不太知道上三角矩陣的判斷條件是什麼
解決方法:查看資料,看了一下大佬的博客,而後知道了怎麼判斷視頻
問題3:由於for循環沒有適時結束,致使運行結果老是報錯
解決方法:仔細檢查代碼,調試,發現錯誤是在for語句中,一個個看,改正錯誤blog