今天编的:计算2+22+222+2222+22222+……(N个2相加)的代码,怎么检验?

3 views
Skip to first unread message

Billy

unread,
Mar 7, 2009, 1:12:13 AM3/7/09
to 南京大学OPEN技术论坛
#include <stdio.h>
#include <stdlib.h>
main()
{int n;
int a[100];
int i,p;
int j,x;
printf("please input N:");
scanf("%d",&n);
for(i=0;i<=99;i++)
a[i]=0;
p=0;
for(i=0;i<n;i++)
{a[i]=(2*(n-i)+p)%10;
p=2*(n-i)/10;
}
for(i=0;i<100;i++)
if(a[i]!=0) j=i;
for(i=j;i>=0;i--)
printf("%d",a[i]);
printf("\n");
scanf("%d",&x);
}

定义数组100,计算加到前50位2相加都还好,怎么检验加到51个2及以后相加的正确与否?

Billy

unread,
Mar 7, 2009, 1:54:18 AM3/7/09
to 南京大学OPEN技术论坛


On 3月7日, 下午2时12分, Billy <zhaoj...@gmail.com> wrote:
> #include <stdio.h>
> #include <stdlib.h>
> main()
> {int n;
> int a[100];
> int i,p;
> int j,x;
> printf("please input N:");
> scanf("%d",&n);
> for(i=0;i<=99;i++)
> a[i]=0;
> p=0;
> for(i=0;i<n;i++)
> {a[i]=(2*(n-i)+p)%10;
> p=(2*(n-i)+p)/10;
> }
> for(i=0;i<100;i++)
> if(a[i]!=0) j=i;
> for(i=j;i>=0;i--)
> printf("%d",a[i]);
> printf("\n");
> scanf("%d",&x);
>
我自己检查出错了,在迭代关系时少了一个P,
> for(i=0;i<n;i++)
> {a[i]=(2*(n-i)+p)%10;
> p=(2*(n-i)+p)/10;
> }这下貌似成功了!
Reply all
Reply to author
Forward
0 new messages