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


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

    设计思路:

    对这次作业的评价:

    遇到的问题以及解决方法:
    1)遇到的问题:
    问题:输入的数没有到下一行.
    2)解决方法:
    方法:后续代码都调整,加了 ..

    用时:1小时
    心得:在之前的代码的基础上只需要进行一点小改动就可以了.

    实验截图:

    运行前1:

    运行后1:

    运行前2:

    运行后2:

    运行前3:

    运行后3:


    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,n,m,a=0,b=0,c=0,x;
        scanf("%d",&T);
        int YN[T];
        for(int i=0;i<T;i++){
        scanf("%d",&n);	
        if(n==1){
        	scanf("%d",&m);
        	YN[i]=0;
    	}
    	else{
        for(int j=0;j<n;j++){
        for(int k=0;k<n;k++){
        	scanf("%d",&m);
             if(k<=a&&m==0){
             	b++;
            if(b==a){
            	c++;
    		}
    	}
    	}
        a++; 
        b=0;
    	}
        n=n-1;
        if(c==n){
        	YN[i]=1;
    	}
    	else{
    		YN[i]=0;
    	}
    }
    }
        for(int i=0;i<T;i++){
        	x=YN[i];
        	if(x==1){
        		printf("YES
    ");
    			}
           	if(x!=1){
        		printf("NO
    ");
    		}
    
    }
    	return 0;
    }
    

    设计思路:

    尝试用非二维数组进行编译,不管怎么做都只有部分正确,就一直犟在这里,结果结束了都没有把其他的2个判断点找出来,只有部分正确

    (提交的结果,只有测试点1是答案正确)

    运行结果截图:

    无,未成功做出来只有部分正确

  • 相关阅读:
    Android 中设置全屏和无标题模式
    轻松管理安卓应用中的log打印信息
    使用Cocos2d游戏引擎开发火热的植物大战僵尸游戏
    Android中获取系统通讯录联系人并显示在EditText
    使用json解析国家气象局(天气预报)接口数据
    Android中简单的日期格式化
    Android的消息推送技术Androidpn
    格式化日期和时间详细介绍
    智能短信管家 V1.0版本正式上线啦!
    学用MVC4做网站一:用户登陆1.2
  • 原文地址:https://www.cnblogs.com/zhuwanxing/p/10541515.html
Copyright © 2020-2023  润新知