一川95 2022-10-27 08:30 采纳率: 50%
浏览 93
已结题

C++(数组)输入个十进制字符串,将其转化成一个10进制有符号整数,否则报错

用C++定义一个字符数组char str[80]。输入一个10进制字符串(以回车结束),将其转换为10进制有符号整数,如果输入的数据错误则报错。
如:输入字符串156或+156,转换为整型156输出。输入字符数组-156,转换为整数-156输出。如输入字符串12.33(只要含有非0~9,及+、-号不在第一个字符。)则报错,输出提示“输入错误!”。允许输入前导空格处理时能够自动忽略。

  • 写回答

4条回答 默认 最新

  • 快乐鹦鹉 2022-10-27 08:42
    关注

    遍历字符串,开头的空格过滤掉,开头的+或-号转为正负,后面如果有小数点也算错。然后遇到数字字符减去'0'

    #include<iostream>
    using namespace std;
    
    int main()
    {
        char str[80];
        gets(str);
        int i=0;
        int n=0;
        int f=0;
        int flag = 1;
        while(str[i] != '\0')
        {
            if(f==1)
            {
                if(str[i] < '0' || str[i] > '9')
                    break;
            }
            else
            {
                if(str[i] == '+' || str[i] == '-' || str[i] == ' ')
                {
                    if(str[i] == '-')
                        flag *= -1;
                    i++;
                    continue;
                }
                if(str[i] < '0' || str[i] > '9')
                    break;
                f=1;
            }
            n = n*10 + str[i] - '0';
            i++;
        }
        if(str[i] == '\0')
            printf("%d",n);
        else
            printf("输入错误!");
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月27日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效