标题:工联部第二次任务
第一题:
题目:1. 输入一个大小为 10 的整型数组,数组中的一个或连续多个整数组成一个子数
组。求所有子数组的和的最大值。
例子:
输入一个数组:1 5 6 2 3 4 9 1
子数组的最大值:18
代码部分为:
在这里插入代码片//工联部第二次任务第1题
/*我是这样想的;首先定义两个数组a[10] 和 sum[10],分别用来存放我们将要输入的 10 个数字和当存放遍历到某个数时,从这个数开始向后继续遍历,存放其合的
最大值。 */
#include<stdio.h>
int main(void){
int a[10];
int sum[10] , sum_s;
int i , j , n;
int max;
for(i = 0 ; i < 10 ; i++){
sum[i] = 0;
}
for(i = 0; i < 10; i++){
printf("请输入第%d个数;", i + 1);
scanf("%d", &a[i]);
}
for(i = 0; i < 10; i++){
//将每个数全遍历一遍
if(a[i] < 0){
//如果第一个面对的数是负数的话,直接跳过这个数,遍历下一个
continue;
}
else{
//碰到的数是正数时
for(j = i; j < 10; j++){
//从这个正数开始往后遍历
if(a[j] >= 0){
sum[i] = sum[i] + a[j]; //如果碰到的数是大于等于0的,直接累加 (按照第一次的数,肯定是大于0 的,但是如果特意加个判断,好像更浪费空间和时间)
}
else{
//如果往后遍历的过程中碰到了负数
n = j;
while(1){
sum_s = sum_s + a[n]; //再找一个中间变量来从遇到