判断一个数是几位数(有负数和大于5的条件)

这个怎么把负数的条件加上啊,各位老哥,新学C语言,搞不懂

题目描述
给一个不多于5位的正整数,求出它是几位数。 如果输入的是一个负数或者大于5位数的数,则给出提示信息“out!”

输入格式:
一个不大于5位的正整数

输出格式:
输出该数的位数

输入样例复制
123
输出样例复制
3

不判断除以10直到为0即可

你题目的解答代码如下:

#include <stdio.h>

int main()
{
    int n, i = 0;
    scanf("%d", &n);
    if (n < 0)
    {
        printf("out!");
        return 0;
    }
    do
    {
        n /= 10;
        i++;
    } while (n > 0);
    if (i <= 5)
        printf("%d", i);
    else
        printf("out!");
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img


#include <stdio.h>
#include <math.h>
void main()
{
    int cnt = 0,n;
    scanf("%d",&n);
    if(n < 0 || n >= 100000){
        printf("out!");
    }else{
        while(n > 0){
            cnt ++;
            n /= 10;
        }
    }
    printf("%d",cnt);
}

img


#include <stdio.h>
int main()
{
    int x = 0, n = 0;
    printf("请输入一个整数:");
    scanf("%d", &x);
    if(x<0)
    {
        printf("out!");
        return 1;
    }
    for (n = 0; x > 0; n++)
    {
        x /= 10;
    }
    if(n>5)
        printf("out!");
    else
        printf("该数位数是:%d", n);
    return 0;
}

定义位数变量,对判断的数 循环 除以10,得到新的数位数+1,如果>0,继续循环,<=0 跳出循环,输出位数,假如是负数,或者大于5位数,先if判断完即可。


#include<stdio.h>
/*
* 输入格式:
一个不大于5位的正整数

输出格式:
输出该数的位数

输入样例复制
123
输出样例复制
3
*/
int main()
{
    int n;
    int i = 0;
    scanf("%d",&n);
    if (n<0)
    {
        printf("out!");
    }
    while (n>0)
    {
        i++;
        n /= 10;
    }
    if (i>5)
    {
        printf("out!");
    }
    else
        printf("%d",i);
    return 0;
}