C语言编程 请帮忙分析下

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int x,y,i,a[8],j,u,v;
scanf("%d",&x);
y=x;
i=0;
do
{
u=y/2;
a[i]=y%2;//这步仔细分析下 谢谢
i++;
y=u;
printf("u=%d,y=%d,a[i]=%d\n",u,y,a[i]);
}while(y>=1);
for(j=i-1;j>=0;j--)
printf("a[j]=%d\n",a[j]);//请帮我分析下这个A[J]为什么是10010
//在者说A[I]是怎么传到A[J]的
}
这个程序 如果输入18
do
{
u=y/2;
a[i]=y%2;//这步仔细分析下 谢谢
i++;
y=u;
printf("u=%d,y=%d,a[i]=%d\n",u,y,a[i]);
}while(y>=1);
for(j=i-1;j>=0;j--)
printf("a[j]=%d\n",a[j]);//请帮我分析下这个A[J]为什么是10010
//在者说A[I]是怎么传到A[J]的
}

请帮我分析下主函数体

这是把十进制转换为二进制的程序。。
a[i]=y%2;
假设 y=13;
do循环
第一次:u=13/2=6
a[0]=13%2=1 y=u=6;
第二次:u=6/2=3
a[1]=6%2=0; y=u=3;
第三次:u=3/2=1;
a[2]=3%2=1; y=u=1;
第四次:u=1/2=0;
a[3]=1%2=1; y=u=0;
y<=1为假,退出do..while循环
a[j]跟a[i]是一样的数组a ,只是数组的下标换成另一个变量去表示而已,由于上述转换过程得出的高低存放着a数组的第一个里也就是a[0]中,最高位最后一步得出存放在数组a最后,故输出时要反向输出。。。13=1101
你问题中10010= 18
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-21
该程序要解决什么问题 或者说实现什么功能。
相似回答
大家正在搜