Aixer 发表于 2022-11-24 16:48:01

字符转换中的前导0问题

题目:提取字符串中的数字字符0~9 将其转化为一个整型输出

#include<stdio.h>

int main()
{
    char ch;
    int n=0;
   
    while(1)
    {
      scanf("%c",&ch);
      if(ch == '\n'){ break;}
      
      if( ch >= '0' && ch <= '9')
      {
            n =(int) ch - 48;
            printf("%d",n);
      }
    }
   
    return 0;
}

提交之后提示我没有前导0,想问前导0是什么,改怎么输出?

tommyyu 发表于 2022-11-24 16:50:11

把题目地址发一下

jackz007 发表于 2022-11-24 18:18:05

本帖最后由 jackz007 于 2022-11-24 18:25 编辑

      别人的意思恐怕恰恰是你的代码不能过滤前导 0 吧?
#include<stdio.h>

int main()
{
      char ch                                 ;
      int n = 0                                 ;
      while(1) {
                scanf("%c" , & ch)                ;
                if(ch >= '0' && ch <= '9') {
                        if(n || ch != '0') {
                              printf("%c" , ch) ;
                              n ++            ;
                        }
                } else {
                        if(n) break               ;
                }
      }
      if(n) printf("\n")                        ;
}
      编译运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
000abc00100000asdfs3456dfgdfa899065
100000

D:\\C>

两手空空儿 发表于 2022-11-24 20:05:40

本帖最后由 两手空空儿 于 2022-11-24 20:09 编辑

题目:提取字符串中的数字字符0~9 将其转化为【一个整型】输出
你和题目的要求不一样
要求应该是
比如输入 akldg123ksdgh
代码中应抓到123,并
n = 123
输出n

#include<stdio.h>

int main()
{
    char ch;
    int n=0;
   
    while(1)
    {
      scanf("%c",&ch);
      if(ch == '\n'){ break;}
      
      if( ch >= '0' && ch <= '9')
      {
            n =(int) ch - 48;   //这里改成 n = n *10 + (ch - '0') ;
            //printf("%d",n);
      }
    }
   printf("%d",n);   ////////////
    return 0;
}

Aixer 发表于 2022-11-25 10:53:50

两手空空儿 发表于 2022-11-24 20:05
题目:提取字符串中的数字字符0~9 将其转化为【一个整型】输出
你和题目的要求不一样
要求应该是


非常感谢
页: [1]
查看完整版本: 字符转换中的前导0问题