C语言输出一个数组中,所有元素之和为0的子序列

来源:岁月联盟 编辑:exp 时间:2012-10-09

本程序用到了一个时间种子,来随机产生10个整数[-5~5],函数是randData( )。还有一个计算子序列为0的函数ZeroSubarray( )。
randData( )如下:
[cpp]
int arr[10]; 
void randData(int a[], int start, int end) 

    srand(time(NULL)); 
    for (int i = start; i <= end; ++i) 
        a[i] = rand() % 10-5;  
     
    printf("生成新的序列 :"); 
    print(a, start, end); 
    printf("/n"); 

ZeroSubarray( )如下:
[cpp]
void ZeroSubarray(int a[], int size) {  
    if (size<=0)  
        perror("error array size");  
    int sum = 0;  
    int max = - (1 << 31);   
    printf("************/n"); 
    for (int cur=0;cur<size;cur++) 
    { 
        sum=0; 
        for (int j=cur;j<size;j++) 
        { 
            sum += a[j];  
            if (sum==0) 
            { 
                while (cur<=j)  
                { 
                    printf("%d ",a[cur++]); 
                } 
                printf("/n************/n"); 
            } 
        } 
    } 

main函数:
[cpp]
void main() 

    randData(arr,0,9); 
    ZeroSubarray(arr,10); 
    printf("/n"); 

运行结果如下:

 

图片内容