本题要求提取一个字符串中的所有数字字符('0'……'9'),将其转换为一个整数输出。
输入格式:
输入在一行中给出一个不超过80个字符且以回车结束的字符串。
输出格式:
在一行中输出转换后的整数。题目保证输出不超过长整型范围。
输入样例:
free82jeep5
输出样例:
825
分析:这一题可以分为几个步骤
第一步是获取所有的输入存到数组,第二步是将输入初步处理,得到所有的数字字符存到另外一个数组,第三步是将数字字符转化为整数后输出。因此,可写代码如下:
#include <stdio.h>
#include <math.h>
#define N 80
int main(){
int a[N], b[N];
int i = 0, len = 0, lenb = 0, sum = 0;
char ch;
//获取输入存到a数组
ch = getchar();
for (i = 0; ch != '\n'; i++){
a[i] = ch;
len++;
ch = getchar();
}
//筛选出数字字符存到b数组
for (i = 0; i < len; i++){
if (a[i] >= '0' && a[i] <= '9'){
b[lenb] = a[i];
lenb++;
}
}
//将数字字符转化为整数
for (i = lenb - 1; i >= 0; i--){
sum += (b[i]-'0')*pow(10,lenb - i - 1);
//这里面的b[i] - '0'是把数字字符转化为数字,也可以写成b[i] - 48
}
printf("%d",sum);
return 0;
}