杭电oj hud1092 1093 活用EOF&n--

1092题目:输入包含多组样例。每组样例包含一个整数N,然后在同行有N个整数。

   若N = 0,则表示输入结束,这个样例不需要被处理。

旧思维写的复杂冗余算法:

#include<stdio.h>
#define max 100000
int main(){            
    int s,sum[max],n=0,m=0,i;
    
    while(scanf("%d",&n)){
        
        if(n==0)
        break;
        i=0;
        while( i<n){
            scanf("%d",&s)    ;
            sum[m]=sum[m]+s;
            i++;
        }
        m++;
    }
    for(int i=0;i<m;i++)
    printf("%d
",sum[i]);
    
}

活用EOF简化:

#include<stdio.h>
#define max 100000
int main(){            
       
     int s,sum[max],n,m=0,i;
    
    while(scanf("%d",&n)!=EOF&&n){
        s=0;
        while(n--){
            scanf("%d",&i)    ;
            s+=i;
        }
            printf("%d
",s);
    }    
}    

1093题目:第一行有一个整数N,表示有N行数。接下来N行,每行第一个为整数M,表示本行后面有M个整数。

旧思路:

#include<stdio.h>
#define max 100000
int main(){            

    int s,n,sum[max],m=0,i,j=0,N;
    scanf("%d",&N);
    while(j<N){
        scanf("%d",&n);
        i=0;
        while( i<n){
            scanf("%d",&s)    ;
            sum[m]=sum[m]+s;
            i++;
        }
        m++;j++;
    }
    for(i=0;i<m;i++)
    printf("%d
",sum[i]);
    
}

简化:

#include<stdio.h>

int main(){            
    int s,n,m=0,i=0,N;
    scanf("%d",&N);
    while(i<N){
        scanf("%d",&n);
        s=0;
        while(n--){
            scanf("%d",&m)    ;
            s+=m;
        }
        i++;
        printf("%d
",s);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/Theo-sblogs/p/11448744.html