我想输入一个数小于等于5位数的数字判断他是几位数,代码如下

img

img

img


但是运行后会出现正确结果出现后还会循环,怎么跳过求解答,如果是代码问题,应该怎么改

参考如下:


#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
 
    int count = 1; // 位数
    int m = n; // 复制一份,便于计算
    while (m > 9)
    {
        m = m / 10; 
        count++;
    }
    printf("%d 是个 %d 位数", n, count);
 
    return 0;
}

题主的代码,修改如下,供参考:

#include <stdio.h>
int main()
{
    int x, i, n = 5;
    scanf("%d", &x);
    for (i = 10000; i >= 1; i /= 10)
    {
        if (x / i > 0) {
            printf("%d是%d位数\n", x, n);
            break;
        }
        else 
            n--;
    }
    return 0;
}

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7764519
  • 这篇博客你也可以参考下:输入一个正整数,判断它是几位数,并且倒序输出.
  • 除此之外, 这篇博客: 西安交通大学915考研编程笔记中的 21.求一个数字是几位数,并将其逆序打印(不多于5位数),并判断这个数字是不是回文数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • //求一个数字是几位数,并将其逆序打印(不多于5位数)
    //判断这个数字是不是回文数
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int a,b,c,d,e,f;//分别代表个、十、百、千、万
        long x;     //未知数
        cin>>x;
        a=x%10;     //个
        b=(x/10)%10; //十
        c=(x/100)%10; //百
        d=(x/1000)%10; //千
        e=(x/10000)%10; //万
        f=(x/100000)%10; //十万
        if(f!=0)
            cout<<"error"<<endl;
        else if(e!=0)
        {
            cout<<"5位数,逆序为:"<<a<<b<<c<<d<<e<<" ";
            if(a==e&&b==d)
                cout<<"是回文数"<<endl;
            else
                cout<<"不是回文数"<<endl;
        }
    
        else if(d!=0)
        {
            cout<<"4位数,逆序为:"<<a<<b<<c<<d<<" ";
            if(a==d&&b==c)
                cout<<"是回文数"<<endl;
            else
                cout<<"不是回文数"<<endl;
        }
    
        else if(c!=0)
        {
            cout<<"3位数,逆序为:"<<a<<b<<c<<" ";
            if(a==c)
                cout<<"是回文数"<<endl;
            else
                cout<<"不是回文数"<<endl;
        }
        else if(b!=0)
        {
            cout<<"2位数,逆序为:"<<a<<b<<" ";
            if(a==b)
                cout<<"是回文数"<<endl;
            else
                cout<<"不是回文数"<<endl;
        }
    
        else if(a!=0)
        {
            cout<<"1位数,逆序为:"<<a<<" ";
            cout<<"是回文数"<<endl;
        }
        return 0;
    }
    
  • 您还可以看一下 朱学超老师的微信小程序广告位开发及经验分享课程中的 如何快速开通微信小程序流量主小节, 巩固相关知识点