| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2902 人关注过本帖
标题:[求助]输入一个正整数,求位数
只看楼主 加入收藏
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
我这个可以算出9位的程序(小于21亿的10位数也行)


#include <stdio.h>
#include <conio.h>
#define MAX 15
main()
{
long n;
int i=0;
char ch[MAX];
system("cls");
printf("n=");
scanf("%ld",&n);
ltoa(n,ch,10);
while (ch[i]!=0)
i++;
printf("the bit of %ld is %d",n,i);
getch();
}


2006-02-20 15:50
cxwl3sxl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:495
专家分:129
注 册:2005-11-12
收藏
得分:0 
同意2#和12#的,编程应该好好考虑一下自己所使用的算法!!

努力,哈哈,总有一天会变成高手~~~~~~因为我相信:没有办不到,只有想不到!http://t..cn/fpress
2006-02-20 23:01
限量版猪头
Rank: 2
等 级:论坛游民
威 望:1
帖 子:165
专家分:30
注 册:2006-2-5
收藏
得分:0 
以下是引用zqj417在2006-2-20 15:13:00的发言:
还是看不懂啊

你用纸上把一个十进制的数转换成二进制怎么转换的?
你先算一遍,再看我的算法就知道了~
首先一个数,最小的正整数0也占一位,所以i初始值为1。。然后。。


2006-02-21 12:09
开心娃
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-2-1
收藏
得分:0 

main()

{

int x,t=0;

while(x>0)

{ t=t+x%10;

x=x\10;

}

printf(“t=%d”,t);

}

这样就可以了呀~~~~~~~

[此贴子已经被作者于2006-2-21 12:51:17编辑过]

2006-02-21 12:24
天晶子剑
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-2-13
收藏
得分:0 
以下是引用Fjcyz在2006-2-19 17:56:00的发言:
scanf("num=%ld",&num);

这个语法错误. scanf("%ld",&num);

2006-02-21 13:10
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 
以下是引用feng1256在2006-2-19 21:45:00的发言:
除10嘛。直到结果等于0,除的次数就是位数
要打印数字的话顺便存数组里

//妙啊


自强不息:)
2006-02-21 14:05
sunliulin80
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-12-13
收藏
得分:0 

正确的程序的这样的:
main()
{
int bit;
long num;
clrscr();
scanf("%ld",&num);
if(num<0||num>99999)
printf("\ninput wrong");
else
{if(num>9999&&num<100000)
bit=5;
if(num>999&&num<10000)
bit=4;
if(num>99&&num<1000)
bit=3;
if(num>9&&num<100)
bit=2;
if(num>=0&&num<10)
bit=1;
printf("bit=%d",bit);}
}

2006-02-21 18:41
khhily
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-2-20
收藏
得分:0 
嗯,除10的;办法不错

2006-02-21 19:24
限量版猪头
Rank: 2
等 级:论坛游民
威 望:1
帖 子:165
专家分:30
注 册:2006-2-5
收藏
得分:0 
不好意思。。。我以为是转化为二进制后的位数了。。

除以10,直到等于0~

2006-02-22 12:16
wwiilla
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2005-9-5
收藏
得分:0 

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

#define MAX 10

void main()
{
long n;
char ch[MAX];
int i = 0;

scanf("%ld",&n);

ltoa(n,ch,10);

while(ch[i] != '\0')
i++;

printf("%d",i);
getch();
}这样做好像简单一点。

2006-02-26 11:46
快速回复:[求助]输入一个正整数,求位数
数据加载中...
 
   



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

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