zoukankan      html  css  js  c++  java
  • 设计一个程序,让它能够返回一个整数数组最大子数的和,并能完成几项测试

    实验人员:常啸帆,毕文强

    实验要求:必须能处理1000个元素;

                      每个元素是int32类型的,出现子数组之和大于显示最大范围会出现什么情况;

                      输入一个整形数组,有正也有负;

                      数组中连续的一个或多个整数组成一个数组,每个子数组都必须有一个和;

                      求所有子数组和的最大值,要求时间复杂度为o(n)。
    实验过程:在本次实验中,我们两人通过所学的c++知识来编写程序,在过程中我们发现了一下问题并逐步解决
                      在编写的过程中,首先会发现数组中少了一个元素,那是因为在循环时length写成了length-1,
               而且max没有初始化,如果初始化为0,那么都是负数时结果为0,这个结果是错误的,原因在于负数都比0小,
               解决方法就是max初始化为数组第一个元素的值。并且在测试时,针对数组为空抛出异常,进行处理。
    实验代码:
                  #include<stdio.h>
                  #include<stdlib.h>
                  #include<string.h>
                   int Largest(int list[],int length)
         {
                     int i;
                     int max;
                     max=list[0];
                          if(list==NULL||length==0)
                             {
                                    printf("数组元素不能为空,请重新输入! ");
                                    return 0;
                             }
                          else
                             {
                                         for(i=0;i<length;i++)
                                              {
                                                 if(list[i]>max)
                                                       {
                                                             max=list[i];
                                              }
                              }
                                              return max;
         }
    }
                                           int main()
                              {
                                        int max;
                                         int i;
                                        int n;
                                         int *a;
                                    char ch;
                                    a=(int*)malloc(n*sizeof(int));
                                      in:    printf("请输入数组的个数: ");
                                       scanf("%d",&n);   
                                          if(n>0)
                                         {
                                                       printf("请输入数组元素: ");
                                                       for(i=0;i<n;i++)
                                                             {
                                                                   scanf("%d",&a[i]);
                                                              }
                                                                     max=Largest(a,n);
                                                                 printf("数组元素的最大值是:%d ",max);
                                          }
                                           else
                                          {
                                                     printf("数组不能为空,请重新输入! ");
                                                     goto in;       
                                                  }
                                                         return 0;
                                         }
     
    测试截图:
     
     
     
     
     
  • 相关阅读:
    Deploying an Application on X11 Platforms
    使用xenu查找web站点死链接使用方法及结果分析 Binbby 博客园
    About | Channel 9
    Amber is an implementation of the Smalltalk language that runs on top of the JavaScript runtime.
    linux下qt静态编译_自由出土文物的空间_百度空间
    A year of Qt ecosystem growth with Digia nurturing Qt Commercial
    华汇超市二层的小餐馆可当MBA案例了
    js web tools
    [转]PAC Manager: Ubuntu 上强大的 SSH 帐号管理工具,可取代 SecureCRT_Miracle_百度空间
    qq云输入法也支持五笔了,太适合我了,特别是在ubuntu下有时候输入法
  • 原文地址:https://www.cnblogs.com/supremeX/p/9786993.html
Copyright © 2011-2022 走看看