练习题:
一个有正有负的数组,求这个数组的子数组中各个元素和最大的那个和。
分析思路:设置一个最大值来记录
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 /* 5 求一个有正有负的数组的子数组 的最大和 6 */ 7 int main() 8 { 9 int sum = 0, i, Max; 10 int a[10]; 11 12 srand((unsigned)time(NULL)); 13 14 printf("数组元素为: "); 15 for(i = 0; i < 10; ++i) 16 { 17 a[i] = rand()%10 - 5; 18 printf("%d ", a[i]); 19 sum = sum + a[i]; //加数 20 21 if(sum < 0) 22 { 23 sum = 0; //小于0就清空 24 } 25 else 26 { 27 if(sum > Max) 28 { 29 Max = sum; //Max记录下最大的一次结果 30 } 31 } 32 } 33 34 35 36 printf("\n"); 37 printf("Max = %d\n", Max); 38 return 0; 39 }