1050 Sequence Problem : Array Practice
阿新 • • 發佈:2018-12-22
Description
整數序列是一串按特定順序排列的整數,整數序列的長度是序列中整數的個數,不可定義長度為負數的整數序列。
兩整數序列A、B的和定義為一個新的整數序列C,序列C的長度是A、B兩者中較長的一個,序列C的每個位置上的整數都是A、B對應位置之和。若序列A、B不等長,不妨假設A比B整數多,那麼序列C中多出B的那部分整數視作A的對應位置上的整數與0相加。
你的任務是計算符合某些要求的整數序列的和,這些序列中的整數都是小於1000的非負整數。
Input
輸入為多行,直到檔案末尾結束。每行第一個整數為N(N<=1000),後接一個長度為N的整數序列。
Output
對輸入的整數序列兩兩相加:第1行和第2行相加、第3行和第4行相加……按順序輸出結果:每行輸出一個整數序列,每兩個整數之間用一個空格分隔。若序列數目不為偶數,則視作補一個長度為0的整數序列相加。
值得注意的是一個長度為0的整數序列也應該有輸出,即使沒有整數輸出,也應該佔有一行,因為“每行輸出一個整數序列”。
Sample Input
3 1 2 3
5 10 15 20 30 50
4 100 200 300 400
Sample Output
11 17 23 30 50
100 200 300 400
HINT
這裡最少要用到一個數組來存數整數序列或整數序列的和。
Append Code
#include <stdio.h> #include <string.h> int main() { int N,M,i,j=0,t; int a[1005]={0},b[1005]={0},c[1005]={0}; while(scanf("%d",&N)!=EOF) { j++; if(j%2!=0)//奇數列與偶數列分開表示 { M=N;//記錄奇數列的元素個數 for(i=0;i<N;i++) scanf("%d",&a[i]); } else { for(i=0;i<N;i++) scanf("%d",&b[i]); } if(j%2==0)//兩行一輸出 { if(N==0&&M==0)//兩個都是0,直接換行,不輸出c[0] printf("\n"); else { if(N<M) { t=N; N=M; M=t; } for(i=0;i<N;i++) c[i]=a[i]+b[i]; printf("%d",c[0]); for(i=1;i<N;i++) printf(" %d",c[i]); printf("\n"); } memset(a,0,sizeof(a));//初始化陣列。 memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); } } if(N!=0&&j%2==1)//若總列數為奇數 { printf("%d",a[0]); for(i=1;i<N;i++) printf(" %d",a[i]); printf("\n"); } if(N==0&&j%2==1) printf("\n"); return 0; }