当前位置:编程学习 > C/C++ >>

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

本程序用到了一个时间种子,来随机产生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"); 

运行结果如下:

 

补充:软件开发 , C语言 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,