| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1322 人关注过本帖
标题:一个简单题目 但你不一定会...呦....
只看楼主 加入收藏
tyc611
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-21
收藏
得分: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");
}
这是我用循环做的.不过结果要反过来读.
谁能帮我修正一下.

法一:放到数组中,反向输出
法二:栈(其它不如数组简单,只是意义更明确)


2007-01-24 15:48
linsq
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-11-20
收藏
得分:0 
请问怎么实现栈这个功能???能举一下例吗??

2007-01-24 15:57
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
就是用整除加取余思想...你可以写一个任意进制之间的整数转换

这个社会太复杂。。。
2007-01-24 17:11
喜C
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-1-23
收藏
得分: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");
}
这是我用循环做的.不过结果要反过来读.
谁能帮我修正一下.

谢谢大侠 出手相助

2007-01-24 23:18
penggf
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-1-19
收藏
得分:0 
#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();
}
2007-01-25 11:59
penggf
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-1-19
收藏
得分:0 
以下是引用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();
}

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

2007-01-25 12:45
lxhf546
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-1-19
收藏
得分:0 

#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");
}
这样放顺序就对了

2007-01-25 15:09
swiminfire
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2005-8-11
收藏
得分: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");
}
这是我用循环做的.不过结果要反过来读.
谁能帮我修正一下.

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


Get in first, and then word your ways out ! BY KIKI
2007-01-26 11:28
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
int zhuanhuan(int a[],long num,int m)
{
int i=0;
while(n)
{
a[i++]=n%m;
n/=m;
}
return i;
}

倚天照海花无数,流水高山心自知。
2007-01-26 15:39
hiaod
Rank: 1
等 级:新手上路
威 望:1
帖 子:66
专家分:0
注 册:2007-1-25
收藏
得分:0 

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


#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");
}

2007-01-26 21:30
快速回复:一个简单题目 但你不一定会...呦....
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043918 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved