| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1110 人关注过本帖
标题:求助,一个简单的问题
只看楼主 加入收藏
maoyan20034
Rank: 2
等 级:论坛游民
帖 子:27
专家分:46
注 册:2009-11-30
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:10 
求助,一个简单的问题
判断输入的一个数是个几位数,,
大虾们帮帮忙啊
2009-12-21 19:28
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:10 
程序代码:
int f(int n)
{
int i=1;
if(n/10)
    ++i;
return i;
}

想象力征服世界
2009-12-21 20:09
sidooh
Rank: 4
等 级:业余侠客
帖 子:121
专家分:265
注 册:2009-6-26
收藏
得分:0 
int main(){

    char s[100];

    scanf("输入一个数%s\n",s);
    scanf("%s\n",s);
    printf("这个数是%d位数\n",strlen(s));

    return 0;

}
2009-12-21 20:12
xiaotutu6000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:85
专家分:137
注 册:2009-10-30
收藏
得分:0 
~恩  用你那个数字循环处以10 弄个计数的东西~  如果等0了就停止循环,  这样你那个计数的是几  就是你那个数的几位了
2009-12-21 20:24
wyane
Rank: 2
等 级:论坛游民
帖 子:14
专家分:12
注 册:2009-9-18
收藏
得分:0 
2楼正解
2009-12-21 20:34
maoyan20034
Rank: 2
等 级:论坛游民
帖 子:27
专家分:46
注 册:2009-11-30
收藏
得分:0 
恩知道了。。非常感谢 啊,,

有时候沉迷是一种境界!
不是非主流!不是信春哥! 是C语言!

  
2009-12-21 20:54
sidooh
Rank: 4
等 级:业余侠客
帖 子:121
专家分:265
注 册:2009-6-26
收藏
得分:0 
事实上,即使用unsigned long来存放输入的数,最多也只能是11位(如果是64位机的话,位数会到20位:unsigned long long),所以用这种数学方法是有限制的(输入的数不能超过11位或20位)

而用字符数组来存放输入的数,位数是没有限制的
2009-12-21 20:56
已屏蔽
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:89
专家分:124
注 册:2009-9-5
收藏
得分:0 
int main(){

    char s;
    int i;
    scanf("输入一个数\n");
    getchar(&s);
    for(i=0;s!='\n';i++)
     getchar(&s);
    printf("这个数是%d位数\n",i);
    return 0;

}
...

[ 本帖最后由 已屏蔽 于 2009-12-21 21:00 编辑 ]
2009-12-21 20:59
xiaotutu6000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:85
专家分:137
注 册:2009-10-30
收藏
得分:0 
这个会好点
#include <stdio.h>

void main()
{
    int i=1;
    int a=200000;
    while((a=a/10) != 0)
    {
        i++;
    }
    printf("%d\n",i);
}
2009-12-22 22:56
sidooh
Rank: 4
等 级:业余侠客
帖 子:121
专家分:265
注 册:2009-6-26
收藏
得分:0 
因为9楼的又重新看了一遍这个帖子,2楼的方法是错的,无论输入的是几位数,返回值都是2,希望2楼能够改过来,以免误导其他人.

程序代码:
这个会好点
#include <stdio.h>

void main()
{
    int i=1;
    int a=200000;
    while((a=a/10) != 0)
    {
        i++;
    }
    printf("%d\n",i);
} 
你认为你的方法比8楼什么地方好?
这种方法与8楼相比不仅位数有限制(输入的数不能超过11位),而且效率也不高,这种方法要进行n次除法,n次比较和n次加法,而8楼进行n次比较和n次加法,多出了n次除法

我在3楼发的帖子,因为对io不够了解,所以要求输入了两次,改正如下(据发帖时间超过1440小时,不能修改3楼了):
程序代码:
int main(){   

    char s[100];

    printf("输入一个数:");
    scanf("%s",s);
    printf("这个数是%d位数\n",strlen(s));

    return 0;
}



[ 本帖最后由 sidooh 于 2009-12-22 23:48 编辑 ]
2009-12-22 23:40
快速回复:求助,一个简单的问题
数据加载中...
 
   



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

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