题目要求:
将一个由数字字符组成的字符串转换为整数或者小数并输出(忽略精度带来的差异)。如:
输入:134.567#
输出:134.567
思路:
先循环处理小数点之前的字符(整数),再循环处理小数点之后的字符
代码块:
#include<stdio.h>
int main()
{
char ch;
int n,pnum=0,p=10;//pnum表示整数部分
float anum=0;//anum表示小数部分
scanf("%c",&ch);
//先处理整数部分
while(ch!='.'&&ch!='#'){
n=ch-'0';//字符转化为数字
pnum=pnum*10+n;
scanf("%c",&ch);
}
//再处理小数部分
if(ch=='.')
{
scanf("%c",&ch);
while(ch!='#'){
n=ch-'0';
anum=anum+(float)n/p;//注意强制类型转换
p=p*10;
scanf("%c",&ch);
}
}
if(anum==0)
printf("%d",pnum);
else
printf("%f",pnum+anum);
return 0;
}