c++逆序输出、拆数逐个顺序输出

平台要求:输入一串数字,输出:1、数字串位数;2、将原数字串每一位分开输出;3、将原数字串逆序输出
以用vs2022用试运行成功,可平台显示答案错误
可以帮忙看看是哪里出问题了吗

img

img

img

img

看看题目有没有规定范围,比如最大不超过10位么?
还有遇到结尾有0的数字,比如 100,你能转换对么?
建议这种问题,不要用数字,用字符串来做,可靠,并且位数几乎无限制。
还有,你的平台如果是gcc,可能不支持scanf_s哦

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7592946
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C++题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
  • 除此之外, 这篇博客: C++ 面向对象(二)多态 : 虚函数、多态原理、抽象类、虚函数表、继承与虚函数表中的 动态绑定和静态绑定 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 对象的静态类型:对象在声明时采用的类型。是在编译期确定的。(比如下面的h1,Human也就是他原本的类型就是静态类型,而他指向的对象的类型Student也就是动态类型)
    对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改
    静态绑定:绑定的是对象的静态类型,某特性(比如函数)依赖于对象的静态类型,发生在编译期。
    动态绑定:绑定的是对象的动态类型,某特性(比如函数)依赖于对象的动态类型,发生在运行期。

    接着我们通过汇编代码,来观察多态是在哪个阶段实现的, 就可以知道它是静态还是动态。

    int main()
    {
    	Student s1;
    
    	Human& h1 = s1;
    	Human h2 = s1;
    
    	h1.print();
    	h2.print();
    
    	return 0;
    }
    

    在这里插入图片描述
    可以看到h1的print是满足多态的,这里调用的函数是在在这里插入图片描述
    这一阶段中找到eax中存储的虚函数指针,所以可以发现,满足多态的调用是在运行的时候,到对象中的找到虚函数指针来完成的调用

    在这里插入图片描述
    而下面h2的print则不满足多态,所以是直接在编译时从符号表中找到函数的地址后调用。

    所以可以得出的结论是,满足多态的函数调用时在运行的时候调用的,也就是动态多态。而之前重载那一章节也曾经说过重载也是一种多态的表现,只不过重载是在编译的时候完成的调用,所以也被静态多态

    1. 静态绑定又称为前期绑定(早绑定),在程序编译期间确定了程序的行为,也称为静态多态,比如:函数重载
    2. 动态绑定又称后期绑定(晚绑定),是在程序运行期间,根据具体拿到的类型确定程序的具体行为,调用具体的函数,也称为动态多态。

  • 您还可以看一下 朱有鹏老师的朱老师C++课程第3部分3.4.模板特化与类型萃取课程中的 3.4.6.函数模板为什么不能偏特化小节, 巩固相关知识点