• 2019第三周作业


    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 i,n,a[100],k,x,y,sum,max=0;
    	if((fp=fopen("D:\Duanjianhong.txt","a+"))==NULL){
    		printf("File open error!
    ");
    		exit(0);
    	}
    		fscanf(fp,"%d",&n);
    		printf("%d
    ",n); 
    		for(i=0;i<n;i++) {
    		fscanf(fp,"%d",&a[i]);
    		printf("%d ",a[i]);
    			
    		}
    	for(i=0;i<n;i++){
    		sum=0;
    		for(k=i;k<n;k++){
    			sum=sum+a[k];
    			if(sum>max)
    			max=sum;
    		}
    	}
          
             for(i=0;i<n;i++){
             	sum=0;
             	for(k=i;k<n;k++){
             		sum=sum+a[k];
             		if(sum==max){
             		x=i;
             		y=k;
             	}
    		
    		   }  
    		 }
    		 printf("
    %d
    ",max);
    	fprintf(fp,"
    %d
    ",max);
    	    for(i=x;i<=y;i++){
    		  	
    		  	fprintf(fp,"%d ",a[i]);
    		  	 printf("%d ",a[i]);
    
               }
    		                 if(fclose(fp)){
                          printf("Can not close the file!
    ");
                              exit(0);
                              
               }
                   return 0;
    }
    

    2)流程图

    3)遇到的问题

    在输出子数组是永远全存在

    4)解决:仔细浏览之后发现在控制子数组的if语句中没有大括号,再加上之后正确。

    5)对于自己的这次作业不是特别满意,用时长,参考了别人的。
    预习作业
    预习“7.2 二维数组”,并完成PTA上的第三周作业:判断上三角矩阵
    1)实验代码

    #include<stdio.h>
    int main()
    {
          int T,n,i,j,k,count;
          scanf("%d",&T);
             for(i=0;i<T;i++){
      	   count=0;
              scanf("%d",&n);
               int a[n][n];
                  for(j=0;j<n;j++)
                     for(k=0;k<n;k++)
                    scanf("%d",&a[j][k]);
    	  for(j=0;j<n;j++)
    	   for(k=0;k<j;k++)
    	     if(a[j][k]!=0)
                 count=1;
                  if(count==1)
                printf("NO
    ");
             else
            printf("YES
    ");
    }
                return 0;
    }
    

    2)流程图

    3)遇到的问题

    刚开始一直用的是矩阵下三角的数来判断是否为下三角矩阵然后答案一直错误。
    4)解决 后来发现用等于零来判断不行,因为这样只要下三角最后一个数为零就会满足导致答案错误,所以我用不等于零来判断

    5)评价:对这次作业自我感觉良好,熟透了,用时一个小时左右。

  • 相关阅读:
    webpack打包提示: Uncaught Error: Cannot find module 'strip-ansi'
    CentOS 7.6 内网穿透服务lanproxy部署
    《这是全网最硬核redis总结,谁赞成,谁反对?》六万字大合集
    网络监控解决方案及拓扑图
    漫画:什么是 “混合云”?
    听说过Paas、Saas和Iaas,那你听说过Apaas吗?
    Squid设置用户名密码
    别再售卖 5块钱 的 Win10 激活码了,后果很严重
    Jackson 实体转Json、Json转实体
    Spring
  • 原文地址:https://www.cnblogs.com/djhxxx/p/10539763.html
Copyright © 2020-2023  润新知