HZY222 发表于 2022-4-4 15:46:59

求大佬解答

2. C 语言中有个 atoi 函数(定义于 <stdlib.h> 头文件中),用于将字符串中的值解析为对应的整型数字。现在要求我们自己写一个程序,实现类似的功能。
基本要求
A. 将用户输入的字符串中代表数字的字符转换为整型数值
B. 打印转换结果
C. 只打印第一组数字
提示:你可以使用 break 语句在适当的时候跳出循环。v=2&

#include <stdio.h>

int main()
{
      int ch;
      int num = 0;

      printf("请输入待转换的字符串:");

      do
      {
                ch = getchar();

                if (ch >= '0' && ch <= '9')
                {
                        num = 10 * num + (ch - '0');
                }
                else
                {
                        if (num)
                        {
                              break; // 如果已有数字,则退出循环
                        }
                }

      }
      while (ch != '\n');

      printf("结果是:%d\n", num);

      return 0;
}


这个是啥意思num = 10 * num + (ch - '0');

wp231957 发表于 2022-4-4 15:48:52

字符数字变成整型数字

大马强 发表于 2022-4-4 16:00:59

你看ascii码表就能理解了
用ch字符对应的整型减去 '0'对应的整型,从而实现字符变整型
【10 * num】 + 【(ch - '0');】
可以看成两部分,前面是控制位数,后面是得到该位数上的值
https://static01.imgkr.com/temp/e19506d2acd141f6bb3d08d7285d917c.png

HZY222 发表于 2022-4-4 16:14:54

大马强 发表于 2022-4-4 16:00
你看ascii码表就能理解了
用ch字符对应的整型减去 '0'对应的整型,从而实现字符变整型
【10 * num】 + 【 ...

控制位数安啥意思,他前面不是说num=0吗,那为什么要剩10

wp231957 发表于 2022-4-4 16:19:55

HZY222 发表于 2022-4-4 16:14
控制位数安啥意思,他前面不是说num=0吗,那为什么要剩10

不管多新的手,都要了解ascii表

HZY222 发表于 2022-4-4 16:38:52

wp231957 发表于 2022-4-4 16:19
不管多新的手,都要了解ascii表

-‘0’我看懂了,没看懂num*10什么意思啊

HZY222 发表于 2022-4-4 16:50:02

#include <stdio.h>
int main()
{
        int num=0;
        int ch;
        printf("请输入转换字符;");
        do{
                ch=getchar();
      
          if('0'>=ch&&ch<='9')
      {
              num=ch-'0';
                }
                else
                {
                        break;
                }
               
               
                printf("转换结果为%d\n",num);
               
                       
        }
        while(ch!='\n');
       
        return 0;
}

这个我自己写的,问题出在哪呢

wp231957 发表于 2022-4-4 16:53:09

HZY222 发表于 2022-4-4 16:38
-‘0’我看懂了,没看懂num*10什么意思啊

1=0*10+1
12=1*10+2
123=12*10+3
1234=123*10+4
可懂???

HZY222 发表于 2022-4-4 16:59:49

wp231957 发表于 2022-4-4 16:53
1=0*10+1
12=1*10+2
123=12*10+3


懂了懂了谢谢

大马强 发表于 2022-4-4 21:39:51

HZY222 发表于 2022-4-4 16:14
控制位数安啥意思,他前面不是说num=0吗,那为什么要剩10

个 十 百
页: [1]
查看完整版本: 求大佬解答