思路:初始化数组num[9],以及指向数组的指针p,sum=max=0。用for循环遍历数组,sum为指针p指向元素之前所有元素的和,当sum<0时舍弃p之前的元素,意思就是让sum变为0,当sum>=0时让sum=sum+p当前指向的元素的值,每次循环的时候让max和sum比较如果sum>max就把sum的值赋给max。
#include<stdio.h>
int main()
{
int sum=0;int max=0;
int num[9];
int e;
int *p=num;
for(int j=0;j<9;j++)
{
scanf("%d",&e);
num[j]=e;
}
for(int i=0;i<9;i++)
{
sum=sum+*(p+i);
if(sum>0||sum==0)
{
if(sum>max)
max=sum;
}
if(sum<0)
sum=0;
}
printf("max=%d\n",max);
return 0;
}
运行结果: 输入的值为 -2,1,-3,4,-1,2,1,-5,4,
输出结果max=6