判斷上三角矩陣

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的矩陣;主對角線爲從矩陣的左上角至右下角的連線。spa

本題要求編寫程序,判斷一個給定的方陣是否上三角矩陣。設計

輸入格式: 輸入第一行給出一個正整數T,爲待測矩陣的個數。接下來給出T個矩陣的信息:每一個矩陣信息的第一行給出一個不超過10的正整數n。隨後n行,每行給出n個整數,其間以空格分隔。指針

輸出格式: 每一個矩陣的判斷結果佔一行。若是輸入的矩陣是上三角矩陣,輸出「YES」,不然輸出「NO」。code

輸入樣例:blog

2
3
1 2 3
0 4 5
0 0 6
2
1 0
-8 2

輸出樣例:it

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。io

(三)實驗遇到的問題及解決方案

看懂題意花了半個小時,判斷上三角的條件就是行大於列且元素不爲0,可是在設計時我把標記的flag弄錯了,致使上三角輸出NO,不是則輸出了YES,後來仔細檢查發現了這個錯誤·,可是我把改好的程序放在C++上編譯時倒是分步輸出,而pta上要求一步輸出,我提交pta對了,也許pta上認爲這是對的吧,這個問題使我認識到了pta格式有時候也不必定那麼嚴格;

(四)運行結果截圖

###(五)學習進度條 |||||||||||||| |:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--| |周/日期|這周所花的時間|代碼行|學到的知識點簡介|目前比較迷惑的問題| |3/2-3/8|3天|30|一維數組的使用及文件的儲存。|指針不會用| |3/9-3/15|3天|100|二維數組|文件的增強版子數組|

(六)本週學習總結

簡單預習了二維數組,完成了上三角矩陣,離不開循環結構作題,對於文件輸出最大子數組之和,我認爲很難,個人思惟老是打不開,只能慢慢探索,知識仍是學淺了,下週要更努力。

相關文章
相關標籤/搜索