2019年春季學期第三周作業
基礎作業
本周沒上課,但是請大家不要忘記學習。
本周請大家完成上周挑戰作業的第一部分:給定一個整數數組(包含正負數),找到一個具有最大和的子數組,返回其最大的子數組的和。
例如:[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 i,n,m,total=0;
if((fp=fopen("F:\\yanghucai.txt","w+"))==NULL)
{
printf("File open error!\n");
exit(0);
scanf("%d",&n);
fprintf(fp,"%d\n",n);
}
scanf("%d",&n);
fprintf(fp,"%d\n",n);
int a[8],max=a[0];
for(i=0;i<8;i++)
{
scanf("%d",&a[i]);
fprintf(fp,"%d",a[i]);
if(m!=7)
{
fprintf(fp,",");
}
}
for(i=0;i<8;i++)
{
total+=a[i];
if(total<a[i])
{
total=a[i];
}
if(max<total)
{
max=total;
}
}
printf("%d",max);
fprintf(fp,"\n%d",max);
if(fclose(fp))
{
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
(二)設計思路
(三)實驗遇到的問題及解決方案
本題為上周的挑戰作業,難得令人頭皮發麻,光是不寫入文件我就覺得很難了,更難的是還要寫入文件里,難度我給五顆星,作為小白的我不斷看別人怎么寫的,從看懂到自己慢慢嘗試。
文件有些地方不太懂,不知道為什么回車要放前面,開辟了一個符合題意空間的數組為什么還要往文件里輸入n,為什么逗號可以直接輸入文件里。通過問室友和百度解決了這些問題,回車放前面是提前換行,輸入行數n的原因防止開辟數組空間過小造成誤差,在C語言中,可以使用格式化輸入函數fscnaf來解決輸入逗號的問題。
(四)運行結果截圖
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
(一)實驗代碼:
#include<stdio.h>
int main(){
int T;
int i,j,t,flag=0;
scanf("%d\n",&T);
int a[10][10],n;
for(t=1;t<=T;t++){
flag=1;
scanf("%d\n",&n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
if(j<i&&a[i][j]!=0){
flag=0;
}
}
}
if(flag==1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
(二)設計思路
這個題就是用for循環做的,要定義一個二維數組去做,注意滿足上三角的條件,對角線以上為1,以下為0。
(三)實驗遇到的問題及解決方案
看懂題意花了半個小時,判斷上三角的條件就是行大於列且元素不為0,但是在設計時我把標記的flag弄錯了,導致上三角輸出NO,不是則輸出了YES,后來仔細檢查發現了這個錯誤·,但是我把改好的程序放在C++上編譯時卻是分步輸出,而pta上要求一步輸出,我提交pta對了,也許pta上認為這是對的吧,這個問題使我認識到了pta格式有時候也不一定那么嚴格;
(四)運行結果截圖
(五)學習進度條
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 | ||||||||
3/2-3/8 | 3天 | 30 | 一維數組的使用及文件的儲存。 | 指針不會用 | ||||||||
3/9-3/15 | 3天 | 100 | 二維數組 | 文件的加強版子數組 |
(六)本周學習總結
簡單預習了二維數組,完成了上三角矩陣,離不開循環結構做題,對於文件輸出最大子數組之和,我認為很難,我的思維總是打不開,只能慢慢探索,知識還是學淺了,下周要更努力。