zoukankan      html  css  js  c++  java
  • 判断上三角矩阵

    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!
    ");
            exit(0);
            scanf("%d",&n);       
        fprintf(fp,"%d
    ",n);
        }
        scanf("%d",&n);       
        fprintf(fp,"%d
    ",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,"
    %d",max);
        if(fclose(fp))
        {
            printf("Can not close the file!
    ");
            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
    ",&T);
      int a[10][10],n;
      for(t=1;t<=T;t++){
        flag=1;
      scanf("%d
    ",&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
    ");
      else
      printf("NO
    ");
      }
      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 二维数组 文件的加强版子数组

    (六)本周学习总结

    简单预习了二维数组,完成了上三角矩阵,离不开循环结构做题,对于文件输出最大子数组之和,我认为很难,我的思维总是打不开,只能慢慢探索,知识还是学浅了,下周要更努力。

  • 相关阅读:
    Mirco2440核心板设计思考
    linux 第一次获得root权限
    MakeFile 文件详解
    windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号
    linux信息查找
    ubuntu不能正常使用make menuconfig的解决方案
    Linux 解压/压缩操作命令
    Linux 文件/文件夹操作命令
    Linux内核开发基础
    计算文件夹的大小
  • 原文地址:https://www.cnblogs.com/wsyhc/p/10534128.html
Copyright © 2011-2022 走看看