#include<stdio.h>
#include<string.h>
typedef struct Num
{
int x;
int y;
}Num;
int main()
{
Num a[2001];
int i=0,j,k=0;
while(scanf("%d%d",&a[i].x,&a[i].y)!=EOF) i++;
for(j=0;j<i;j++)
if(a[j].y)
{
a[k].x*=a[k].y;
a[k++].y--;
}
if(k!=0)
printf("%d %d",a[0].x,a[0].y);
for(j=1;j<k;j++)
printf(" %d %d",a[j].x,a[j].y);
if(k==0)
printf("0 0");
printf("\n");
return 0;
}
我最大的问题还是题目做少了,书看少了,没有培养一种思维。这道题目很简单,但是我是参考网上的思想才做出啦的。之前自己想的太复杂。主要是在输入输出上。而且还没有调试成功。把之前的代码也贴出来吧!
#include<stdio.h>
#include<string.h>
typedef struct Num
{
int a;
int b;
}Num;
int tran(char *str,char *tail)
{
int result=0,flag=0;
char *temp=str;
if(*temp=='-')
{
temp++;
flag=1;
}
while(temp!=tail&&temp!='\0')
{
result=result*10+*temp-'0';
temp++;
}
if(flag==1)
result=-result;
return result;
}
int main()
{
Num Arr[2001];
int i,j,f;
char *tail,*head;
char str[10000];
while(gets(str)!=NULL)
{
i=0;head=str;j=0;
tail=strchr(head,' ');
while(tail!=NULL)
{
if(j&1==0)
Arr[i].a=tran(head,tail);
else
Arr[i++].b=tran(head,tail);
head=tail+1;
j++;
tail=strchr(head,' ');
}
for(j=0;j<i;j++)
{
Arr[j].a*=Arr[j].b;
Arr[j].b--;
}
f=0;
for(j=0;j<i;j++)
{
if(Arr[j].a!=0)
{
if(f!=0)
printf(" %d %d",Arr[j].a,Arr[j].b);
else
printf("%d %d",Arr[j].a,Arr[j].b);
}
}
printf("\n");
}
return 0;
}