第三周编程总结

Posted zhlj477

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三周编程总结相关的知识,希望对你有一定的参考价值。

题目一、 判断上三角矩阵
上三角矩阵指主对角线以下的元素都为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()  
                 {  
                   int T;
                       int i,j,t,count;
                   int a[10][10],Tab[t];
                   scanf("%d
",&T);    
                   for(t=1;t<=T;t++)
                   {
                       count=1; 
                       scanf("%d
",&Tab[t]);   
                       for(i=0;i<Tab[t];i++)
                       {
                                for(j=0;j<Tab[t];j++)
                                {
                                      scanf("%d",&a[i][j]); 
                                      if(i>j)
                                      {                 
                                           if(a[i][j]!=0) 
                                           {
                                                count=0;
                                             }
                                        }
                                  }
                         }
                         if(count)
                         printf("YES
");
                         else printf("NO
");
                    }
                    return 0;
                 }  

2)设计思路
技术图片
3)本题调试过程碰到问题及解决办法
技术图片
问题:数组定义形式不对,我的不是数组长度
解决方式:看书上例题发现的
4)正确结果截屏
技术图片

题目二、给定一个整数数组(包含正负数),找到一个具有最大和的子数组,返回其最大的子数组的和。
例如:[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 i,j,b,e,M=0,count=0;
       int a[8];
       if((fp=fopen("E:\\新建文件夹\\ZWY.txt","w+"))==NULL)
       {
          printf("File open error!
");
          exit(0);
        }
        for(i=0;i<8;i++)
           {
        scanf("%d",&a[i]);
       }
          for(i=0;i<8;i++)
          {
                count=0;
                for(j=i;j<8;j++)
                {
                count=count+a[j];
                if(M<count)
                M=count;
        }
           }  
       for(i=0;i<8;i++)
       {
         count=0;
         for(j=i;j<8;j++)
         {
           count=count+a[j];
           if(count==M)
          {
            b=i;
            e=j;
            break;
          }
        }
      } 
     for(i=b;i<=e;i++)
     {
           fprintf(fp,"%d ",a[i]);
       printf("%d ",a[i]);
     }
     fprintf(fp,"
%d",M);
     printf("
%d",M);
     if(fclose(fp))
    {
    printf("Can not close the file!
");
    exit(0);
    } 
   return 0;
   }

2)设计思路
技术图片
3)本题调试过程碰到问题及解决办法
问题1:技术图片

这题主要问题就是在前面有定义count并给其赋值,但是在for语句里面就没有写入count语句,所以运行结果不对
解决方法:在C++错误运行下进行检查,在for语句要有一个初始值才开始运行,否则运行有误
4)运行结果截图
技术图片

二、学习进度条
技术图片

三、学习感悟
这周老师没上课,很遗憾没能从老师那里学到新知识,但是在没有任何预习情况下做新题还是很困难,所以按照老师的要求去预习就没那么吃力,所以一切知识源于课本。其次就是第二个挑战题,对于我来说真的是个大挑战,因为做了9个小时的作业,起码三分之二时间都在挑战题上。我参考了不同的设计思路,复杂也好简单也好各有各的特别之处,但是相比那些简单的,还是很惭愧自己的编程,希望能够越来越好吧。对于这个题我请教了电信专业的同学,他给出的不是建文件的,但是他的编程里有很多我未触及到的东西,更是让我意识到自学和多看书的重要性。
以下是他的解法:

      #include<bits/stdc++.h>
      using namespace std;
      int judge (vector<int> arr, int len);
      int l = 0, m = 0;
      int main()
     {
         int n, sum, len;
         vector<int> a;
         do
         {
             cin >> n;
             a.push_back(n);
         } 
         while (getchar() != '
');
         len = a.size();
         sum = judge(a, len);
         cout << sum << endl;
         for(int i = l; i <= m - 1; i++) cout << a[i] << " ";
         cout << a[m];
        return 0;
     }
    int judge (vector<int> arr, int len)
    {
          int a = 0;
          int b = 0;
          for(int i = 0; i < len; i++)
         {
              b += arr[i];
              if (b > a)
              {
                   m++;
                   a = b;
              }
              if (b < 0)
             {
                  l = i + 1;
                 m = l;
                 b = 0;
             }
     }
     return a;
  }

以上是关于第三周编程总结的主要内容,如果未能解决你的问题,请参考以下文章

20172312『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结

《Java程序设计》第三周学习总结

第三周编程总结

第三周编程总结

第三周编程总结

第三周总结