• 2019年春季学期第三周作业


    一、本周作业
    基础作业
    本周没上课,但是请大家不要忘记学习。
    本周请大家完成上周挑战作业的第一部分:给定一个整数数组(包含正负数),找到一个具有最大和的子数组,返回其最大的子数组的和。
    例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子数组为[3, 10, -4, 7, 2]
    输入:
    请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
    输出:
    在不删除原有文件内容的情况下,将最大子数组以及子数组的和写入文件。
    1、实验代码

     #include<stdio.h>
     #include<string.h>
     #include<stdlib.h>
     int main()
     {
         FILE *fp;
         int i,j,n=8,b,c,max,sum;
         char op=',';
         int a[8];
         if((fp=fopen("E:\C语言\dengbo.txt","w+"))==NULL)
         {
    	     printf("File open error!
    ");
    	     exit(0);
         }                             //最大数组之和// 
         for(i=0;i<8;i++){
    	     scanf("%d",&a[i]);
    	     fprintf (fp,"%d%c",a[i],op); 
         }
         fprintf (fp,"
    ");
             for(i=0;i<n;i++)
            {
          	    sum=0;
    	            for(j=i;j<n;j++)
    	            {
    		           sum+=a[j];
    		           if(max<sum)
    		                 max=sum;
    	     }
         }
            //找出最大子数组//
         for(i=0;i<n;i++)
         {
    	     sum=0;
    	     for(j=i;j<n;j++)
    	     {
    		     sum+=a[j];
    		     if(sum==max)
    		     {
    			     b=i;
    			     c=j;
    			     break;
    		     }
    	      }
           } 
             //输出最大子数组//
           for(i=b;i<=c;i++)
           {
     	      fprintf(fp,"%d%c",a[i],op);
     	      printf("%d ",a[i]);
           }
                 //输出最大子数组和//
           fprintf(fp,"
    %d",max);
           printf("
    %d",max);
       
           if(fclose(fp))
           {
             	printf("Can not close the file!
    ");
      	        exit(0);
           } 
           return 0;
     }
    

    2、设计思路

    3、运行结果截图

    7-1 判断上三角矩阵

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

    2、设计思路

    3、运行结果截图

    二、学习进度条

    三、学习感悟
    刚开始看到这两个题目的时候,有点懵逼。做PTA时,开始不懂怎么下手,后来看了下书,依葫芦画瓢基本知道怎么写,但是还是有几个地方不懂到底是什么意思。做挑战作业的时候,大体知道怎么写,但有些地方有时候有点转不过来,问了好久才知道的。通过这次作业练习,我知道了对于一些难的问题,不要忽视,要尽量去解决弄懂,以免影响以后的作业练习。

  • 相关阅读:
    [BFS][链表][二分][STL]JZOJ 5875 听我说,海蜗牛
    [SPFA]JZOJ 5869 绿洲
    [Splay]Luogu 3960 NOIP2017 列队
    [扩欧]JZOJ 5855 吃蛋糕
    [模拟退火][堆优化Prim]2017TG Day2 T2 宝藏
    [并查集]奶酪
    [容斥]JZOJ 5843 b
    JS Undefined 类型
    Python logging 模块
    14.浏览器屏幕缩放bug修复
  • 原文地址:https://www.cnblogs.com/dengbo990915/p/10540395.html
Copyright © 2020-2023  润新知