奥里给
#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;
}
各位大佬,我想问一下dowhile课程那里的这一道题目,他不是这么理解的吗,那个break遇到数字就会跳出循环,那么遇到第一个数字不是已经跳出循环了吗,比如说ad12as,他的结果不是1吗,为啥是12呢 do {
ch = getchar();
if (ch >= '0' && ch <= '9') {
num = 10 * num + (ch - '0') ; // 数字字符分支
} else {
if(num) break ; // 非数字字符分支
}
} while (ch != '\n') ;
如果键入 "ad12as" 那么,ch 是 'a'、'd' 的时候,走两次非数字字符分支,这时,由于 num = 0,并不会 break 出循环,到了 ch 是 '1'、'2' 的时候,会走两次数字字符分支,这会使 num = 12,到了 ch 是 'a' 的时候,走非数字字符分支,这时,由于 num = 12,会 break 出 while 循环。 我悟了,兄弟,谢谢
页:
[1]