zoukankan      html  css  js  c++  java
  • 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(void)
    {
        FILE * fp;
        int num[8],i,k,j=0,max,n,sum=0,a[30],m;
        char op;
        if((fp=fopen("d:\Alice.txt","r"))==NULL){
            printf("File open error!
    ");
            exit(0);
        }
        for(i=0;i<8;i++){
            fscanf(fp,"%c%d",&op,&num[i]);
            printf("%c%d",op,num[i]);
        }
        fscanf(fp,"%c",&op);
        printf("%c",op);
        for(i=0;i<8;i++){
            sum=num[i];
            for(k=i+1;k<8;k++){
                sum=sum+num[k];
                a[j]=sum;
                j++;
            }        
        }
        max=a[0];
        for(n=0;n<27;n++){
            if(max<=a[n]){
                max=a[n];
            }
        }
        if(fclose(fp)){
            printf("Can not close the file!
    ");
            exit(0);
        }
        if((fp=fopen("d:\Alice.txt","a"))==NULL){
            printf("File open error!
    ");
            exit(0);
        }
        j=0;
        printf("
    [");
        fprintf(fp,"
    [");
        for(i=0;i<8;i++){
            sum=num[i];
            for(k=i+1;k<8;k++){
                sum=sum+num[k];
                a[j]=sum;
                j++;
                if(sum==max){
                    for(m=i;m<=k;m++){
                        printf("%d,",num[m]);
                        fprintf(fp,"%d,",num[m]);
                    }
                    break;
                }
            }        
        }
        printf("]
    ");
        printf("%d",max);
        fprintf(fp,"]
    ");
        fprintf(fp,"%d",max);
        if(fclose(fp)){
            printf("Can not close the file!
    ");
            exit(0);
        }
        return 0;
     }
     

    2)流程图

    2)本题遇到的问题及解决办法

    问题:没办法把内容输入到文件里

    解决办法:我把文件先用只读的方式打开在关闭,之后再打开再写文件

    4)运行结果截图

    5)评价

    这次作业我做了很长时间,不知道为什么写的内容进不去文件,还是自己了解的不多,要多多学习才行

    用时5小时

    预习作业
    预习“7.2 二维数组”,并完成PTA上的第三周作业:判断上三角矩阵
    预习可以参看翁恺老师的MOOC视频:https://www.icourse163.org/course/ZJU-9001 ,第八周 数组—》8.2 数组运算

    1)实验代码

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

    2)流程图

    3)本题调试过程中碰到的问题及解决办法

    问题:就是设定数组是不能直接是a[n][n],否则会出现段错误,还有就是设定的count不能在最上面否则结果会一直累加,应该在第一个循环里设定count=0.

    解决办法:和室友一起想办法,最后进行调试,在调试的时候发现错误了。

    4)运行结果截图

    5)评价

    这道题目做起来其实并不难,但是要仔细,定义是在循环里面还是在外面要分清楚,还有就是调试真的有必要。

    用时2小时

  • 相关阅读:
    hdp (ambari) 集成hue
    Hive的metastore
    windows 常用cmd命令
    HDFS datanode心跳与运维中的实际案例
    scala drools and map
    hadoop nn 运维一例
    Eclipse 多行注释选择
    JSP SERVLET 基础知识
    记录一次代码错误,elastic search的INDEX需要使用小写字母
    HIVE大数据出现倾斜怎么办
  • 原文地址:https://www.cnblogs.com/H-Alice/p/10529681.html
Copyright © 2011-2022 走看看