带你学c带你飞课程里的问题
#include <stdio.h>int main()
{
int ch;
int num = 0;
printf("请输入待转换的字符串:");
do
{
ch = getchar();
if (ch >= '0' && ch <= '9')
{
num = 10 * num + (ch - '0');//不了解这边 10 * num 是什么用处,但是删除后再编译输入只会出现一个数字
}
else
{
if (num)
{
break;
}
}
}
while (ch != '\n');
printf("结果是:%d\n", num);
return 0;
}
代码源于带你学c带你飞课程S1E13 动动手第2题
请问这边10 * num是什么用途啊{:5_100:}
使之与 ASCII码表里面的数字对应。 本帖最后由 行客 于 2019-1-31 10:10 编辑
请观察注释:
// test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
int main()
{
int ch;
int num = 0; // num为整型变量,初始化为0。在do循环里是将输入的字符转变为数字,并组成整型变量。
printf("请输入待转换的字符串:");
do
{
ch = getchar();
if (ch >= '0' && ch <= '9')
{
num = 10 * num + (ch - '0'); //假设你输入的是字符串为'67a'。
//第一次循环,ch为'6':num = 10 * 0 + (54 - 48),num值为6。ch即6的ASII码为54,'0'的ASII码为48
//第二次循环,ch为'7':num = 10 * 6 + (55 - 48),num值为67。
//第三次循环:ch 为'a',进入下面的else。
}
else
{
if (num)
{
break;
}
}
}
while (ch != '\n');
printf("结果是:%d\n", num);
return 0;
} ba21 发表于 2019-1-31 00:02
使之与 ASCII码表里面的数字对应。
那再请问一下 getchar函数是把我输入的字符串一个个依次转换成ASCII码吗
比如说我这边输入 12a 1先进入if语句中循环将num赋值为1 2再继续进入if中将num赋值为12 a再进入语句中因为不符合第一个if所以跳到else 因为num不等于0 所以为真 执行break 跳出语句 输出num 行客 发表于 2019-1-31 10:09
请观察注释:
谢谢! 膜拜 都是大佬
{:10_256:}
页:
[1]