当前位置: 代码迷 >> C语言 >> 一个简单题目 但你不一定会...呦....
  详细解决方案

一个简单题目 但你不一定会...呦....

热度:132   发布时间:2007-01-24 15:48:00.0
以下是引用pinglideyu在2007-1-24 15:19:00的发言:

#include <stdio.h>

void main()
{
int n,m;

printf("Enter the number: ");
scanf("%d",&n);

while (n!=0)
{
m=n%2;
printf("%d",m);
n=n/2;
}
printf("\n");
}
这是我用循环做的.不过结果要反过来读.
谁能帮我修正一下.

法一:放到数组中,反向输出
法二:栈(其它不如数组简单,只是意义更明确)
----------------解决方案--------------------------------------------------------
请问怎么实现栈这个功能???能举一下例吗??
----------------解决方案--------------------------------------------------------
就是用整除加取余思想...你可以写一个任意进制之间的整数转换
----------------解决方案--------------------------------------------------------

以下是引用pinglideyu在2007-1-24 15:19:00的发言:

#include <stdio.h>

void main()
{
int n,m;

printf("Enter the number: ");
scanf("%d",&n);

while (n!=0)
{
m=n%2;
printf("%d",m);
n=n/2;
}
printf("\n");
}
这是我用循环做的.不过结果要反过来读.
谁能帮我修正一下.

谢谢大侠 出手相助
----------------解决方案--------------------------------------------------------
#include"stdio.h"
main()
{int i,j,m=475;
char a[40];
i=0;
while(m!=0)
{a[i++]=m%2+'0';
m/=2;};
for(j=i-1;j>=0;j--)
printf("%c",a[j]);
getch();
}

----------------解决方案--------------------------------------------------------

以下是引用penggf在2007-1-25 11:59:00的发言:
#include"stdio.h"
main()
{int i,j,m=475;
char a[40];
i=0;
while(m!=0)
{a[i++]=m%2+'0';
m/=2;};
for(j=i-1;j>=0;j--)
printf("%c",a[j]);
getch();
}

这是"法一:放到数组中,反向输出"

----------------解决方案--------------------------------------------------------

#include <stdio.h>

void main()
{
int n,m,p[10],i=0,j;

printf("Enter the number: ");
scanf("%d",&n);

while (n!=0)
{
m=n%2;
p[i]=m;
i++;
n=n/2;
}
for(j=i-1;j>=0;j--)
printf("%d",p[j]);
printf("\n");
}
这样放顺序就对了


----------------解决方案--------------------------------------------------------
以下是引用pinglideyu在2007-1-24 15:19:00的发言:

#include <stdio.h>

void main()
{
int n,m;

printf("Enter the number: ");
scanf("%d",&n);

while (n!=0)
{
m=n%2;
printf("%d",m);
n=n/2;
}
printf("\n");
}
这是我用循环做的.不过结果要反过来读.
谁能帮我修正一下.

这个用栈是最好的方法,
要不如果用你的方法做的话,因为加上数组是一种方法,但是我们不知道这个数组要多大.
所以可以选择用连表.这样空间不浪费.


----------------解决方案--------------------------------------------------------
int zhuanhuan(int a[],long num,int m)
{
int i=0;
while(n)
{
a[i++]=n%m;
n/=m;
}
return i;
}
----------------解决方案--------------------------------------------------------

用栈的方法就是递归。下面是偶的程序:


#include<stdio.h>

int main()
{
long int n;
void sub(long);
printf("Please enter a long intger:\n");
scanf("%ld",&n);
sub(n);
return 0;
}

void sub(long x)
{
long temp;
temp = x % 2;
if (x > 0)
{
sub(x/2);
printf("%1d",temp);
}
else printf("\n");
}


----------------解决方案--------------------------------------------------------
  相关解决方案