注册 登录
编程论坛 C++教室

如何处理从键盘输入一个整数后,把此整数变成一个字符串

异ren 发布于 2016-03-30 23:26, 5475 次点击
/******************************************************
要求:从键盘输入一个整数,判断该数是几位数,逆向输出该数
*******************************************************/
# include <iostream>
using namespace std;
int main()
{


char b[]="12";//我只会这样编写程序,可是要求说整数是从键盘输入的,要怎么改我这个程序才能达到题目的要求呢?
    int c=strlen(b);
        cout<<c<<endl;
        for(int i=0;i<=c;i++)
            cout<<b[c-i]<<endl;
        return 0;
}

14 回复
#2
qq10235692232016-03-30 23:55
你就直接用整数输入就行,然后用库函数itoa转换成字符串,strlen可判断几位数,再将字符串逆序输出。

[此贴子已经被作者于2016-3-30 23:56编辑过]

#3
仰望星空的2016-03-31 10:19
直接cin>>unity不行嘛?
#4
异ren2016-03-31 22:42
回复 3楼 仰望星空的
我没学过啊,看来在教科书学的东西还是很少,那要怎么改呢?
#5
异ren2016-03-31 22:43
回复 2楼 qq1023569223
我没学过啊,看来在教科书学的东西还是很少,那要怎么改呢?
#6
qq10235692232016-03-31 23:10
程序代码:
//C++我不熟悉,C语言的你看看,一样的
#include <stdio.h>

int main()
{
    int num=0,len=0,i=0;
    int a[10]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};  //用来保存数字的各位数,从个位开始到高位

    scanf("%d",&num);  //因int的限制,至多请输入9位数,更多可自己改成long long

    for(;num!=0;i++)  //求数字的各位数和长度
    {
        a[i]=num%10;  //取最低位数字
        num/=10;      //去掉最低位,如想不明白,请在纸上比划
        len++;        //长度自增
    }
    //输出
    printf("result:%d\t",len);

    for(i=0;a[i]!=-1;i++)
    {
        printf("%d",a[i]);
    }
    printf("\n");

    return 0;
}
#7
hjx11202016-03-31 23:41
/******************************************************
要求:从键盘输入一个整数,判断该数是几位数,逆向输出该数
*******************************************************/
# include <iostream>
#include <string>
using namespace std;
int main()
{
    string ch;
    cin >> ch;
    cout << ch.size() << endl;
    for (int i = ch.size() - 1 ; i >= 0 ; i--)
    {
        cout << ch[i];
    }
    return 0;
}
#8
wmf20142016-04-01 07:18
按题意要求,可不需要转换为字符串的。
#9
农民工2016-04-01 13:02
itoa 或者 sprintf
#10
异ren2016-04-01 13:40
回复 7楼 hjx1120
# include <iostream>
#include <string>
using namespace std;
int main()
{
    string ch;
    cin >> ch;
    cout << ch.size() << endl;
    for (int i = ch.size(); i >= 0 ; i--)//此处的ch.size ()-1中的减1去掉之后的运行结果都是一样的,例如输入的是12,那么在for循环之内,
        //第一个输出的是a[2],这样不就越界了吗,为什么还能编译
    {
        cout << ch[i];
    }
    return 0;
}
#11
异ren2016-04-01 15:45
回复 6楼 qq1023569223
//C++我不熟悉,C语言的你看看,一样的
#include <stdio.h>

int main()
{
    int num=0,len=0,i=0;
    int a[10]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};  //用来保存数字的各位数,从个位开始到高位

    scanf("%d",&num);  //因int的限制,至多请输入9位数,更多可自己改成long long

    for(;num!=0;i++)  //求数字的各位数和长度
    {
        a[i]=num%10;  //取最低位数字
        num/=10;      //去掉最低位,如想不明白,请在纸上比划
        len++;        //长度自增
    }
    //输出
    printf("result:%d\t",len);

    for(i=0;a[i]!=-1;i++)
    {
        printf("%d",a[i]);
    }
    printf("\n");

    return 0;
}
这个我看得懂,但是你这个程序的话就只适合于正整数,负整数和零都是是不适合的啊,还有我把你的程序稍稍改了一下,C++的格式
include <iostream>
using namespace std;
int main()
{
    int num=0,len=0;
    int a[10];   

   cin>>num;
    for(int i=0;num!=0;i++)  //求数字的各位数和长度
    {
       a[i]=num%10; //取最低位数字
        num/=10;      //去掉最低位,如想不明白,请在纸上比划
        len++;        //长度自增
    }
    cout<<len<<endl;
 for(i=0;i<len;i++)
    {
        cout<<a[i];
    }
   return 0;
}
不过都是不适合负整数和零
#12
hjx11202016-04-01 19:07
字符串是从0开始的
例:
字符串: 567
字符   567\0
数字   0123
size()函数计算的结果是3  
\0这个字符不可见
反着输出就是
\0765
减1不输出'\0'这个符号
765
其实输出的是字符不是字符串



#13
qq10235692232016-04-01 20:30
回复 11楼 异ren
用if判断,0的话直接输出,负数的话先按正数输出,末尾加个-不就好了。
#14
异ren2016-04-01 23:02
回复 13楼 qq1023569223
对,我也是这样想的
#15
yangfrancis2016-04-02 16:25
回复 10楼 异ren
也许是编译器没访问到下标为2的元素就没有输出,才会得到与预期一样的效果。当然访问未赋值变量,被输出随机数的情况也很常见,一般是不报错的。但访问未指向确值的指针多半要报错。
1