题干:
本题要求提取一个字符串中的所有数字字符('0'……'9'),将其转换为一个整数输出。
输入格式:
输入在一行中给出一个不超过80个字符且以回车结束的字符串。
输出格式:
在一行中输出转换后的整数。题目保证输出不超过长整型范围。
输入样例:
free82jeep5
输出样例:
825
题解:
本题并不难,只要把一串字符数组中的数字输出即可
难点在于结果要以整数形式输出,如果开头为0的之后要隐去
因此我引入了一个变量 t ,初始化为 0 。
使用语句 (a[i]!='0'||t==1) 可实现当第一个 a[i] 不为0时进入if语句,然后使 t=1
这样后续的 a[i] 则无需判断是否为0都可以输出。
那么这样还有另一个问题,如果字符串中数字都是0,那么应该输出0;
所以有了当循环结束后 t 还是 0 的时候要输出 0 。
那么又出现了一个问题,如果字符串中没有出现数字,t 也会为 0 ,但此时应该不输出任何数字,
因此我又引入一个标志变量k,用于判断字符串中是否含有数字。
代码如下:
#include <stdio.h>
int main()
{
char a[80];
scanf("%c",&a[0]);
int n=0;
while(a[n]!='\n'){
n++;
scanf("%c",&a[n]);
}
int t=0,k=0;
for(int i=0;i<n;i++){
if(a[i]<='9'&&a[i]>='0'){
if(a[i]!='0'||t==1){ //使输出的第一个a[i]不为0
printf("%c",a[i]);
t=1;
}
k=1; //判断a中是否有数字
}
}
if(t==0&&k==1){ //a中数字全为0时输出0
printf("0");
}
return 0;
}