第三週做業

1、基礎做業

本週請你們完成上週挑戰做業的第一部分:給定一個整數數組(包含正負數),找到一個具備最大和的子數組,返回其最大的子數組的和。
例如:[1,-2,3,10,-4,7,2,-5]的最大子數組爲[3, 10, -4, 7, 2]
輸入:
請創建以本身英文名字命名的txt文件,並輸入數組元素數值,元素值之間用逗號分隔。
輸出
在不刪除原有文件內容的狀況下,將最大子數組以及子數組的和寫入文件。數組

1.實驗代碼

#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;
}

2.設計思路

3.解題過程當中遇到的問題及解決辦法:


問題1:顯示文件打開錯誤
解決方法:文件方面確定出了問題,仔細檢查了文件,改了一下文件學習

問題2:不知道最大子數組是什麼,怎樣判斷
解決方法:查閱資料,參考別人的寫法,來判斷何爲最大子數組設計

問題3:仍是錯在fscanf和fprintf上面
解決方法:得多本身練習,區分好用法指針

4.運行結果截圖

2、預習做業

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 (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;
}

2.設計思路

3.解題過程當中遇到的問題及解決辦法:

問題1:一開始不懂二維數組的用法,看着題目有點懵
解決方法:看老師發的那個視頻,看書上的二維數組知識點和例題,按照那個方法來編寫程序code

問題2:編寫程序的時候,不太知道上三角矩陣的判斷條件是什麼
解決方法:查看資料,看了一下大佬的博客,而後知道了怎麼判斷視頻

問題3:由於for循環沒有適時結束,致使運行結果老是報錯
解決方法:仔細檢查代碼,調試,發現錯誤是在for語句中,一個個看,改正錯誤blog

4.運行結果截圖

3、學習進度條

4、學習感悟

這一次的做業就是複習了上週所學的編寫程序處理文件中的數據以及預習二維數組的知識,感受編寫程序來處理文件數據仍是挺好作的,可是對於二維數組的用法以及指針的用法仍是不太會,寫第二題的時候就感受到懵,其餘的感受啥也沒有,因此還得多加練習,多加努力

相關文章
相關標籤/搜索