C语言十进制转化为二进制

大家帮忙看看那错了
#include<stdio.h>
main()
{int i,j,m;
int a[100];
printf("please enter a number here");
scanf("%d",&i);
while(i>0)
{j=turn2(i);
i=i/2;
m=0;a[m]=j;
m++;}
while(m>=0)
{printf("%d",a[m]);
m--;}
printf("\t");
getch();}
int turn2(int i)
{int t;
t=i%2;
return(t);}

一楼没有指出所有的错误,正确的程序如下,错误有标注,你的程序写得很罗嗦,自己好好改一下,会有很多收获
#include <iostream>
using namespace std;
#include<stdio.h>
int turn2(int);//a要加函数声明
int main() //这里加int 即使是主函数 也要加类型说明
{
int i,j,m;
int a[100];
printf("please enter a number here");
scanf("%d",&i);
m=0;
while(i>0)
{j=turn2(i);
i=i/2;
//m=0; //把m放这里会老执行
a[m]=j;//
m++;}
m--;//最后会多加一次一
while(m>=0)
{

printf("%d",a[m]);
m--;
}

printf("\t");
getchar();}//不是getch()
int turn2(int i)
{int t;
t=i%2;
return(t);}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-09
你在循环while(i>0)
{j=turn2(i);
i=i/2;
m=0;a[m]=j;
m++;}
中,每次循环的时候都重新给m赋值为0,完了给a[0]赋值j,完了又m++。你每次循环都在更新的是a[0]的值,所以怎么计算都不对的。

把m=0放到while之前。
第2个回答  2009-11-09
错的地方不少
首先m的值是变化的,你将“m=0”放在循环里,导致每次只对a[0]赋值,
int turn2(int a)函数需要事先声明
还有就是m在第二个循环前应先减去1,m在第一个循环最后加1,退出循环时已出界。
还有“getch()”用法可能不对
#include<stdio.h>
#include<stdlib.h>
main()
{int i,j,m;
int a[100];
printf("please enter a number here");
scanf("%d",&i);
m=0;
while(i>0)
{
int turn2(int a);
j=turn2(i);
i=i/2;
a[m]=j;
m++;}
m=m-1;
while(m>=0)
{printf("%d",a[m]);
m--;}
printf("\t");
getchar();
system("pause");
}
int turn2(int i)
{int t;
t=i%2;
return(t);}
第3个回答  2009-11-09
首先m=0不能放在那里,要放在第一个在while前。
把那个m--;移到print("%d ",a[m]);前。
因为在第一个while中当i=0后,m++也会执行。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网