zoukankan      html  css  js  c++  java
  • 2019年春季学期第三周作业+预习作业

    基础作业

    本周没上课,但是请大家不要忘记学习。
    本周请大家完成上周挑战作业的第一部分:给定一个整数数组(包含正负数),找到一个具有最大和的子数组,返回其最大的子数组的和。
    例如:
    [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 sum,t,b,i,j,n;
    	/*打开文件,进行写入操作*/ 
    	if((fp=fopen("D:\2019年春季学期第三周作业\chenjianxiong.txt","w"))==NULL){
    		printf("File open error!
    ");
    		exit(0);
    	}
    	scanf("%d",&n);
    	fprintf(fp,"%d
    ",n);
    	int a[n];
    	for(i=0;i<n;i++){
    	scanf("%d",&a[i]);
    	fprintf(fp,"%d,",a[i]);
    }
    	t=a[0];
            /*比较第一组从a[0]开始累加的大小*/
    	for(i=0;i<n;i++){
    		sum=0;
    		for(j=i;j<n;j++){
    			b=a[j];
    		sum+=a[j];
    		if(b<sum){
    			b=sum;
    		}
    		}
             /*在上面求出各组最大值在比较大小,求出最终值*/
    		if(t<b){
    			t=b;
    		}
    }
    	fprintf(fp,"
    %d",t);/*写入文件*/
        /*关闭文件*/ 
        if(fclose(fp)){
        	printf("Can not close the file!
    ");
        	exit(0); 
    	}
    	return 0;
    }
    

    2. 设计思路

    此次作业也是定义指针性,将其写写入文件。而主函数是以循环为基础的。所以这次作业也还好。
    流程图:

    3. 有对自己作业的评价

    存在问题和解决办法:
    做这个题目之前我就请教了我室友,和他一起讨论。当时我和他说,这个题目大概就是用一个循环去累加比较大小,也就是和求最大值差不多。
    就这样,我对这个题目就有点头绪。本来我是抱着很大的信心去做题,但是在实践过程中我就碰到一个可以算是简单的问题——循环。我在循环过程中,题目没有做出来,就把我自己给弄的晕头转向的。当时就炸了。就直接搬来救兵,叫室友来帮我看看我循环哪个地方出错了。室友的神助力肯定是有用的。
    还有一个问题,就是我在做这个题目之前,我就想到也不能只从第一个数进行累加把,万一从后面的数累加也有可能比从第一个数累加要大,所以我就带着这个问题去请教室友该怎么写,当然我自己也是有思路的。我知道要用俩个循环来写,而且这样的数也是有规律的,可以就用循环完成。在解决这些问题之后我完成了这个循环。
    心得:
    这个作业主要还是在循环上面去完成的,做完这个作业,让我对循环更加的理解了。
    时间消耗:
    学习进度条 基础作业
    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较困惑的问题
    3/13 下午 2小时 40 对循环更加了解 对此次作业暂无困惑

    4. 程序运行结果的截图

    预习作业

    判断上三角矩阵 (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()
    {
    	int T,n,i,j,k;
    	scanf("%d",&T);
    
    	for(k=0;k<T;k++){
    	scanf("%d",&n);
    	int a[n][n],flag=0;/*定义二维数组,一个变量为下面判断做基础*/
            /*输入矩阵(类似九九乘法表)*/
    	for(i=0;i<n;i++){
    		for(j=0;j<n;j++){
    			scanf("%d",&a[i][j]);
             /*判断左下角是否出现不为0的数*/
    			if(i>j&&a[i][j]!=0){
    				flag=1;
    			}
    		}
    	}
           /*判断flag*/
    	if(flag){
    		printf("NO
    ");
    	}
    	else{
    		printf("YES
    ");
    	}
      }
      return 0;
    }
    

    2. 设计思路

    这个作业是循环的大家伙,我认为跟九九乘法表差不多。就依据九九乘法表的循环来写。
    流程图:

    3. 有对自己作业的评价

    有对自己作业的评价(存在的问题和解决办法、心得、完成作业的时间消耗)
    存在问题和解决办法:
    在做这个题目之前我也思考了许久,才下手。得知这个题目也是镶嵌多个循环才能完成的,在写循环过程中我还是比较顺利,但是在写判断的条件语句的时候,就卡住了。就是在这里卡了许久。看了别人写的程序也不是看到很懂,然后自己想了许久也没有想出来。最后问了我们寝室的学霸,他和我说。先定义一个变量,然后判断,如果在矩阵的左下角如果出现不是0的数就不是上三角矩阵,我就从这个方向出发。顺利做了出来。
    心得:
    做题思考问题不能单一出发考虑,应该从多多方面思考,也要换角度去思考。
    时间消耗:
    学习进度条 预习作业
    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较困惑的问题
    3/13 下午 2小时 25 对循环更加了解 对此次作业暂无困惑

    4. 程序运行结果的截图

  • 相关阅读:
    104.Maximum Depth of Binary Tree
    103.Binary Tree Zigzag Level Order Traversal
    102.Binary Tree Level Order Traversal
    101.Symmetric Tree
    100.Same Tree
    99.Recover Binary Search Tree
    98.Validate Binary Search Tree
    97.Interleaving String
    static静态初始化块
    serialVersionUID作用
  • 原文地址:https://www.cnblogs.com/ct1314/p/10525651.html
Copyright © 2011-2022 走看看