zoukankan      html  css  js  c++  java
  • 【作业】现代程序设计

    题目及题目要求

    现代程序设计 作业 2

    设计思路

    仅实现返回一维数组最大子数组和。

    通过观察演算可发现,若前几位之和大于零,则子数组的和就有可能继续增大。

    当所有数字小于零时,最大子数组和为最大负数,因此当和小于零时,该数也需参与各子数组和的排序。

    代码

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 //qsort依赖比较函数头
     5 int cmpfunc (const void * a, const void * b);
     6 
     7 int main(int argc,char *argv[])
     8 {
     9    long row, col, res;
    10    char temp;
    11    FILE *fp = fopen(argv[argc-1],"r+");
    12 
    13    //判断文件是否正常打开,若未正常打开,文件指针为空指针
    14    if(fp == NULL)
    15    {
    16        printf("Please type correct file name or arguments!\n");
    17        getchar();
    18        exit(1);
    19    }
    20 
    21    fscanf(fp,"%ld%c%ld%c", &row, &temp,&col,&temp);
    22 
    23    //使用VLA(变长数组)特性,需编译器支持C99
    24    int num[col],sum[col];
    25 
    26    for(int i=0;i<col;i++)
    27    {
    28         fscanf(fp,"%d%c", num+i, &temp);
    29    }
    30 
    31    //仅实现一维数组
    32    if(row!=1)
    33    {
    34        printf("\nThis edition don't support text whose the number of rows is more than 1!\n");
    35        exit(1);
    36    }
    37 
    38    //使用长整形变量,判断输入数字是否在int32位范围内
    39    if(col>0x7fffffff || col<-0x7fffffff)
    40    {
    41        printf("The range of number should  in int32!");
    42        exit(1);
    43    }
    44 
    45    //前1个数的和为第1个数
    46    sum[0] = num[0];
    47 
    48    for(int i=1; i<col; i++)      
    49    {
    50         if(sum[i-1] > 0)  //若前几位之和大于零,则子数组的和就有可能继续增大
    51         {
    52             sum[i] = sum[i-1] + num[i];
    53         }
    54         else             //用于处理数字都为负的情况
    55         {
    56             sum[i] = num[i];
    57         }
    58    }
    59 
    60    qsort(sum, col, sizeof(int), cmpfunc);//对和数组排序
    61 
    62    printf("%d",sum[0]);
    63    return 0;
    64 }
    65 
    66 int cmpfunc (const void * a, const void * b)
    67 {
    68    return ( *(int*)b - *(int*)a );
    69 }

    测试实验

    在有限个输入错误测试中,并未产生程序崩溃。在运行程序参数错误时,亦有相应的错误提示信息。

    想必有未测试出来的错误输入使得程序崩溃,还请各位看官参与测试。

    附:

        可执行文件下载地址  programing.exe

  • 相关阅读:
    jquery 内容选择器
    jquery 子选择器
    jquery 基础选择器
    jquery 基础过滤器
    jdk1.8+SpringAOP注解报java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut select错误的不知原因的解决办法[仅供参考]
    [Spring]@Autowired,@Required,@Qualifier注解
    [Spring]IOC控制反转和DI依赖注入
    [LeetCode]无重复字符的最长子串
    Spring-代理模式
    Spring-使用注解开发
  • 原文地址:https://www.cnblogs.com/harson/p/10502619.html
Copyright © 2011-2022 走看看