...两个数字字符,将其转换成为十进制后显示出来。这个程序怎么理解?

发布网友 发布时间: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);
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com