...两个数字字符,将其转换成为十进制后显示出来。这个程序怎么理解?
发布网友
发布时间:2024-10-24 09:38
我来回答
共5个回答
热心网友
时间:2024-11-06 09:45
程序会自动过滤掉字符串中的其他字符,只读取数字(while循环中的代码实现了这一点);
关于题主的疑问那一行,这样可以说明:
正常的数字 654 = (((( 0 ) * 10 + 6) * 10 + 5 ) * 10 + 4 ),就是说我们看这个数字的时候,
先读到到6,此时应该认为是 初始化的 0 乘以10加上当前位6,结果是6;
然后乘以10再加上下一位5, 得到65;
重复第二步,65乘以10加上下一位4得到654;
一直循环到读取完整个字符串为止。
这个程序就是实现了这样一个读取流程。
热心网友
时间:2024-11-06 09:51
#include<stdio.h>
void main()
{
char ch;
int i,data;
data=0;
for(i=0;i<=2;i++) //前3个数字字符
{
while(1)
{
ch=getchar();
if(ch>='0'&&ch<='9')
{
break; //如果是不是数字就一直读
}
}
data=data*10+ch-'0'; //因为是10进制,所以先把data*10,再加上读入的那个字符
}
printf("data=%d",data);
}
热心网友
时间:2024-11-06 09:43
data=data*10+ch-'0';
比如说,第一次ch='5'时,data='5'-'0'
第二次ch='4'时,data=('5'-'0')*10+('4'-'0')
含义相当于data=5-0=5
data=5*10+4=54
热心网友
时间:2024-11-06 09:49
#include<stdio.h>
void main()
{
char ch;
int i,data;
data=0;
for(i=0;i<=2;i++) //前3个数字字符
{
while(1)
{
ch=getchar();
if(ch>='0'&&ch<='9')
{
break; //如果是不是数字就一直读
}
}
data=data*10+ch-'0'; //因为是10进制,所以先把data*10,再加上读入的那个字符
}
printf("data=%d",data);
}
热心网友
时间:2024-11-06 09:48
c语言
#include
#include
//#include
void
main()
{
char
*p,str[100];
int
i,result,x;
printf("请输入一个有数字组成的字符串:");
scanf("%s",str);
i=0;
x=1;
result=0;
p=&str[0];
while(*(p+i)!='\0'&&i<10)
{
if
(!(*(p+i)>=48&&*(p+i)<=57))
{
printf("\n输入的字符串含有非数字的字符");
x=0;
break;
}
result=result*10+(*(p+i)-48);
i++;
}
if
(x==1)
printf("\n你输入的整数为:%d",result);
}