Problem C: Sequence Problem (II) : Array Practice
题目描述:
解题思路:
这里最少要用到一个数组来存数整数序列或整数序列的和。一个省事的做法是把数组定义的稍微大一点,因为有时你的程序可能会边界处理的不是太好。
与上一题类似。
注意偶数和奇数的输出。
注意最后一次的输出。
给出代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int a[1100],b[1100],c[1100],add[1110];
int m,n,i,j,k,x1=0,x2=0;
scanf("%d",&k);
int count1=1;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
if(k%2==0)
{ while(count1<=k){
if(count1%2!=0)
{
for(i=1;;i++)
{
scanf("%d",&j);
if(j==0)
break;
else
{
a[i]=j;
x1++;
}
}
count1++;
}
else
{
for(i=1;;i++)
{
scanf("%d",&j);
if(j==0)
break;
else
{
b[i]=j;
x2++;
}
}
if(x1==0&&x2==0)
printf("\n");
else
{
if(x1>x2)
{
for(i=1;i<=x1;i++)
{
if(i==1)
printf("%d",a[i]+b[i]);
else
printf(" %d",a[i]+b[i]);
}
}
else
{
for(i=1;i<=x2;i++)
{
if(i==1)
printf("%d",a[i]+b[i]);
else
printf(" %d",a[i]+b[i]);
}
}
printf("\n");
}
count1++;
x1=0;
x2=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
}
}
}
else
{
while(count1<=k){
if(count1%2!=0&&count1!=k)
{
for(i=1;;i++)
{
scanf("%d",&j);
if(j==0)
break;
else
{
a[i]=j;
x1++;
}
}
count1++;
}
else
{
for(i=1;;i++)
{
scanf("%d",&j);
if(j==0)
break;
else
{
b[i]=j;
x2++;
}
}
if(x1==0&&x2==0)
printf("\n");
else
{
if(x1>x2)
{
for(i=1;i<=x1;i++)
{
if(i==1)
printf("%d",a[i]+b[i]);
else
printf(" %d",a[i]+b[i]);
}
}
else
{
for(i=1;i<=x2;i++)
{
if(i==1)
printf("%d",a[i]+b[i]);
else
printf(" %d",a[i]+b[i]);
}
}
printf("\n");
}
count1++;
x1=0;
x2=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
}
if(count1==k)
{
for(i=1;;i++)
{
scanf("%d",&j);
if(j==0)
break;
else
{
a[i]=j;
x1++;
}
}
if(x1==0)
printf("\n");
else
{
for(i=1;i<=x1;i++)
{
if(i==1)
printf("%d",a[i]+b[i]);
else
printf(" %d",a[i]+b[i]);
}
printf("\n");
}
count1++;
}
}
}
return 0;
}
代码有些麻烦,求一些优化的代码。