求大佬解答
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');
字符数字变成整型数字 你看ascii码表就能理解了
用ch字符对应的整型减去 '0'对应的整型,从而实现字符变整型
【10 * num】 + 【(ch - '0');】
可以看成两部分,前面是控制位数,后面是得到该位数上的值
https://static01.imgkr.com/temp/e19506d2acd141f6bb3d08d7285d917c.png 大马强 发表于 2022-4-4 16:00
你看ascii码表就能理解了
用ch字符对应的整型减去 '0'对应的整型,从而实现字符变整型
【10 * num】 + 【 ...
控制位数安啥意思,他前面不是说num=0吗,那为什么要剩10 HZY222 发表于 2022-4-4 16:14
控制位数安啥意思,他前面不是说num=0吗,那为什么要剩10
不管多新的手,都要了解ascii表 wp231957 发表于 2022-4-4 16:19
不管多新的手,都要了解ascii表
-‘0’我看懂了,没看懂num*10什么意思啊 #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;
}
这个我自己写的,问题出在哪呢 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
可懂??? wp231957 发表于 2022-4-4 16:53
1=0*10+1
12=1*10+2
123=12*10+3
懂了懂了谢谢
HZY222 发表于 2022-4-4 16:14
控制位数安啥意思,他前面不是说num=0吗,那为什么要剩10
个 十 百
页:
[1]