求解一道关于C语言的题目!!求高手,急~
#include<stdio.h>main()intx,y,j,u,v,a[8];scantf("%d",&x);y=x;i=0;do{u=y/2;a[i]=y%2;i+...
#include<stdio.h>
main()
int x,y,j,u,v,a[8];
scantf("%d",&x);
y=x;
i=0;
do
{
u=y/2;
a[i]=y%2;
i++;y=u;
}while(y.+1);
for(j=i-1;j.=0;j--)
printf("%d",a[j]);
}
输入18,并回车
求输出的结果。
要解释为什么啊!!不要自给个答案,尤其是要细讲下
for(j=i-1;j.=0;j--)
没接触过。
小弟在此拜谢可!!
中间那个是while(y>=1)
后面的是j>=0 展开
main()
int x,y,j,u,v,a[8];
scantf("%d",&x);
y=x;
i=0;
do
{
u=y/2;
a[i]=y%2;
i++;y=u;
}while(y.+1);
for(j=i-1;j.=0;j--)
printf("%d",a[j]);
}
输入18,并回车
求输出的结果。
要解释为什么啊!!不要自给个答案,尤其是要细讲下
for(j=i-1;j.=0;j--)
没接触过。
小弟在此拜谢可!!
中间那个是while(y>=1)
后面的是j>=0 展开
7个回答
展开全部
感觉上这个程序的作用是将输入的x转换为二进制表示形式并输出,
程序中有几处错误:
#include<stdio.h>
main()
int x,y,j,u,v,a[8]; /*主函数“{”漏掉了,变量i没有定义
scantf("%d",&x); /*函数拼写错误“scanf”
y=x;
i=0;
do
{
u=y/2;
a[i]=y%2;
i++;y=u;
}while(y.+1); /*“.+”应该是输入或扫描时的错误,应为“>=”
for(j=i-1;j.=0;j--) /*“.=”同上,应为“>=”
printf("%d",a[j]);
}
程序分析:
do...while循环中进行通过除2取余的方法将十进制数转换为二进制数按位存入数组a中,
最后的for循环将a数组倒序输出,得出转换过的二进制数。
程序代码:
#include<stdio.h>
main()
{
int x,y,i,j,u,v,a[8];
scanf("%d",&x);
y=x;
i=0;
do
{
u=y/2;
a[i]=y%2;
i++;y=u;
}
while(y>=1);
for(j=i-1;j>=0;j--)
printf("%d",a[j]);
}
输出结果:
(输入为十八时)10010
结果分析:
输入:x=18,y=18,i=0
do...while循环:
i 0 1 2 3 4 5
y 9 4 2 1 0
u 9 4 2 1 0
a[i] 0 1 0 0 1
for循环:
j 4 3 2 1 0
a[j] 1 0 0 1 0
因此输出为10010
程序中有几处错误:
#include<stdio.h>
main()
int x,y,j,u,v,a[8]; /*主函数“{”漏掉了,变量i没有定义
scantf("%d",&x); /*函数拼写错误“scanf”
y=x;
i=0;
do
{
u=y/2;
a[i]=y%2;
i++;y=u;
}while(y.+1); /*“.+”应该是输入或扫描时的错误,应为“>=”
for(j=i-1;j.=0;j--) /*“.=”同上,应为“>=”
printf("%d",a[j]);
}
程序分析:
do...while循环中进行通过除2取余的方法将十进制数转换为二进制数按位存入数组a中,
最后的for循环将a数组倒序输出,得出转换过的二进制数。
程序代码:
#include<stdio.h>
main()
{
int x,y,i,j,u,v,a[8];
scanf("%d",&x);
y=x;
i=0;
do
{
u=y/2;
a[i]=y%2;
i++;y=u;
}
while(y>=1);
for(j=i-1;j>=0;j--)
printf("%d",a[j]);
}
输出结果:
(输入为十八时)10010
结果分析:
输入:x=18,y=18,i=0
do...while循环:
i 0 1 2 3 4 5
y 9 4 2 1 0
u 9 4 2 1 0
a[i] 0 1 0 0 1
for循环:
j 4 3 2 1 0
a[j] 1 0 0 1 0
因此输出为10010
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那里是while(Y>=1)吧
输出 10010
这个是求取 输入数据的二进制数据
第一个循环将求取结果存入a[i]
第二个循环,依次输出结果
for(j=i-1;j>=0;j--) 简单的循环 j初始值=i-1, 为二进制数组的最高位(4),然后依次递减直到为0
输出 10010
这个是求取 输入数据的二进制数据
第一个循环将求取结果存入a[i]
第二个循环,依次输出结果
for(j=i-1;j>=0;j--) 简单的循环 j初始值=i-1, 为二进制数组的最高位(4),然后依次递减直到为0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
main()
{
int i,x,y,j,u,v,a[8];
scanf("%d",&x);//输入18,把值赋给x
y=x;//y=18
i=0;//将i赋值,为0
do//开始循环
{
u=y/2;//给u赋值
a[i]=y%2;//
i++;//给a[0]到a[18]赋值
y=u;//把u的值给y,
}while(y>=1);//当y>=1时,结束循环,
for(j=i-1;j>=0;j--)//这是一个for循环,
printf("%d",a[j]);//输出a的每一个值
}
main()
{
int i,x,y,j,u,v,a[8];
scanf("%d",&x);//输入18,把值赋给x
y=x;//y=18
i=0;//将i赋值,为0
do//开始循环
{
u=y/2;//给u赋值
a[i]=y%2;//
i++;//给a[0]到a[18]赋值
y=u;//把u的值给y,
}while(y>=1);//当y>=1时,结束循环,
for(j=i-1;j>=0;j--)//这是一个for循环,
printf("%d",a[j]);//输出a的每一个值
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是把10进制转换为2进制,对2求余得到不是1就是0,然后赋值给a[i],
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询