简单数字的处理与判断

题目:
一. 给出一个不多于5位的整数,要求:
1、求出它是几位数
2、分别输出每一位数字
3、按逆序输出各位数字,例如原数为321,应输出123
4、如果要求是任意位数,又怎么处理

下面是常规思路:

#include"iostream"
using namespace std;
int main(){
    int x,count=1;//最先处理的一次不用除以10,所以count=1
    int a[6];//指定了数组的大小,对于第四个问题无法解决
    //当然你也可以定义一个很大的数组,但浪费空间!
    cin>>x;
    a[0]=x%10;//注意:这里取余求得是最后一位,列如:12345,则为5
    while(x/=10){ //x为int,除以10为1234.5,但系统会自动处理为1234
        a[count++]=x%10;//取得的余数,存入数组,列如:12345,数组存入是54321
    }
    cout<<count<<endl;
    for(int i=count-1;i>=0;i--){//count先减,while()处默认最后count++
        cout<<a[i]<<' ';
    }
    cout<<endl;
    for(int i=0;i<count;i++){//注意这里不是"<=",因为数组是从零开始的
        cout<<a[i];
    }
    return 0;
}

这里是使用字符数组的方式:

二. string的大小和容量:(补充知识)

1.strlen()求出的字符数组长度为有效长度,不包含字符串末尾结束符 ‘\0’;
2.length()函数可用于求字符串的有效长度
提醒:c语言中没有字符串,用的是字符数组
2.sizeof()操作符求出的长度包含字符串末尾的结束符 ‘\0’;
当在函数内部使用sizeof()求解由函数的形参传入的字符数组的长度时,得到的结果为指针的长度,既对应变量的字节数,而不是字符串的长度,此处一定要小心
下面为函数的使用方法:

strlen(str) //假设str为待求的**字符串数组名**
str.length()//假设str为待求的**字符串名**
sizeof()//可以用于求字符数组与字符串的长度,但是尽量不用sizeof
//或者不能用它来求字符串长度
//代码演示
#include"iostream"
#include"string.h"
using namespace std;
int main(){
    char a[10];
    string b;
    cin>>a>>b;
    cout<<strlen(a)<<' '<<sizeof(a)<<endl;
    cout<<b.length()<<' '<<sizeof(b);
    return 0;
}

sizeof为什么求得的结果是32?

string的实现在各库中可能有所不同,但是在同一库中相同一点是,
无论你的string里放多长的字符串,它的sizeof()都是固定的,
字符串所占的空间是从堆中动态分配的,与sizeof()无关。   
sizeof(string)=4可能是最典型的实现之一,
不过也有sizeof()为12、32字节的库实现。 但是vscode测试后>sizeof(string)=16.还是跟编译器有关

在这里插入图片描述
字符数组的实现代码:

#include "iostream"
#include "string.h"
using namespace std;
int main(){
    char a[10];
    cin>>a;
    int len=strlen(a);
    cout<<len<<endl;
    for(int i=0;i<len;i++){
        cout<<a[i]<<' ';
    }
    cout<<endl;
    for(int j=len-1;j>=0;j--){//数组是从0开始的
        cout<<a[j];
    }
    return 0;
}

如有裨益,吾之幸也。刚入们如有不足望大家指正 !祝大家编程进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值