程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 體驗結對開發的樂趣2(一維數組求最大子數組的和溢出問題),結對維數

體驗結對開發的樂趣2(一維數組求最大子數組的和溢出問題),結對維數

編輯:關於C語言

體驗結對開發的樂趣2(一維數組求最大子數組的和溢出問題),結對維數


結對人員:信1201-2班高揚、信1201-1班韓雪東

一、設計思路

   對於大數溢出問題開始很迷茫,不大懂該干什麼,思路匮乏。因為只要溢出這個數就不會被存儲被改變,這樣導致很難去判斷溢出後該怎樣做,但後來我們改變了一下思路,采用逆向思維,首先找到能存儲的最大數,用它來減去將要運行的數,從而與即將要加的數比較,如果小了咋說明相加後會產生溢出,直接結束程序。

二、源代碼

 1 // ceshi.cpp : Defines the entry point for the console application.
 2 //作者:韓雪東,高揚
 3 //時間:2015/3/28
 4 
 5 //#include "stdafx.h"
 6 #include "stdio.h"
 7 #include "stdlib.h"
 8 #include "time.h"
 9 
10 int shuchu(int m[],int szcdx,int xhy)//m[]表示要測試的數組,szchx表示數組長度,xhy表示循環條件
11 {
12     int t,p;
13     int max,sum;
14     //緩存數組賦值
15     int c[10];
16     int v[10];
17     for(t=szcdx-xhy-1;t<szcdx;t++)
18     {
19         c[t-szcdx+xhy+1]=m[t];
20     }
21     //循環
22     for(t=xhy;t>=0;t--)
23     {
24         sum=0;
25         for(p=0;p<=t;p++)
26         {
27             if(2147483647-sum<c[p])
28             {
29                 printf(" 數值過大 ");
30                 system("PAUSE");
31                 
32             }
33             sum=sum+c[p];
34         }
35         v[t]=sum;
36         
37         
38         
39     }
40     //循環輸出最大值
41     max=v[0];
42     for(t=0;t<xhy+1;t++)
43     {
44         if(max<=v[t])
45         {
46             max=v[t];
47         }
48         printf(" %d  ",v[t]);
49     }
50     
51     return max;
52 }
53 
54 int main(int argc, char* argv[])
55 {
56     srand(time(NULL));
57     int a[10];
58     for(int j=0;j<10;j++)
59     {
60         a[j]=rand()%100000+20000000;
61     }
62 
63     int maxx[10];
64     
65     for(int i=9;i>=0;i--)
66     {
67         printf("包含數組中第%d個數在內的所有相鄰子數組的和:",10-i);
68         maxx[i]=shuchu(a,10,i);
69         printf("\n%d\n\n",maxx[i]);
70     
71     }
72     int maxxx=maxx[0];
73     for(i=0;i<10;i++)
74     {
75         if(maxxx<=maxx[i])
76         {
77             maxxx=maxx[i];
78 
79         }
80     }
81     printf("\n\n該數組的所有子數組的和的最大值:%d\n\n",maxxx);
82     return 0;
83 }

三、運行結果截圖

四、心得體會

     以前的測試程序並沒有過多的考慮過大數溢出的問題,通過這次練習認識到了大數溢出給程序帶來的嚴重性的問題,在以後的編寫程序的時候一定會注意這一個問題。

五、有圖有真相

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved