若输入3个整数3 2 1,则以下程序的输出结果是

若输入3个整数3,2,1,则以下程序输出的结果是__?
#include <stdio.h>
void sub(int n,int uu[ ])
{ int t;
t=uu[n--];t+=3*uu[n];
n++;
if(t>=10) {uu[n++]=t/10;uu[n]=t%10;}
else uu[n]=t;
main()
{int i,n,aa[10]={0};
scanf("%d%d%d",&n,&aa[0],&aa[1]);
for(i=1;i<n;i++) sub(i,aa);
for(i=0;i<=n;i++) printf("%d",aa[i]);
printf("\n");
}
为什么第二次i=2 aa[0]=2 aa[1]=7 t=uu[n--];这条语句后t = 0?n输入时不是等于2了吗?aa[2]不知道值啊怎么能知道t?

scanf("%d%d%d",&n,&aa[0],&aa[1]);//输入3,2,1后n =3 ,aa[0]=2,aa[1]=1
for(i=1;i<n;i++) sub(i,aa)//循环两次,
第一次i=1 aa[0]=2 aa[1]=1
t=uu[n--];//这条语句后t = 1 n =0
t+=3*uu[n];//这条语句后t=t+3*aa[0] t=7
n++//n = 1
uu[n]=t//aa[1]=7;
第一次循环结束
第二次i=2 aa[0]=2 aa[1]=7
t=uu[n--];//这条语句后t = 0 n =1
t+=3*uu[n];//这条语句后t=t+3*aa[1] t=21
n++//n = 2
uu[n++]=t/10;//aa[2] = 2 n=3
uu[n]=t%10//aa[3] = 1
第二次循环结束
for(i=0;i<=n;i++) printf("%d",aa[i]);
输入aa[0],aa[1],aa[2],aa[3].
所以结果是2,7,2,1

推荐你安装VC6.0这个可以单步调试,你就可以看内存变化什么的了。
以上回答你满意么?
温馨提示:答案为网友推荐,仅供参考
相似回答