题意:
本题要求提取一个字符串中的所有数字字符('0'……'9'),将其转换为一个整数输出。
输入格式:
输入在一行中给出一个不超过80个字符且以回车结束的字符串。
输出格式:
在一行中输出转换后的整数。题目保证输出不超过长整型范围。
输入样例:
输入样例:
free82jeep5
输出样例:
825
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
代码如下(示例):
#include <stdio.h>
#include <stdlib.h>
#define MAXN 81
void find_put(char a[], int n) {
char c[n];
int j = 0;
for (int i = 0; a[i] != '\n'; i++) {
if ((a[i])>='0'&&a[i]<='9') {//判断一个字符是不是数字字符,
c[j++] = a[i]; //可以用<ctype.h>中的isdigit(int c)判断
c[j] = '\0'; //字符数组需以'\0'结尾
}
}
int d = atoi(c); //atoi()可以将数字字符串转为整数,同样atof()呢?
printf("%d", d);
}
int main() {
char a[MAXN];
char c;
scanf("%c",&c);
int i=0;
while(c!='\n'){
a[i++]=c;
scanf("%c",&c);
}
a[i++]='\n';
a[i]='\0';
find_put(a, i-1);
return 0;
}
或者:
#include <stdio.h>
#include <string.h>
int main(){
char a[82],b[82];
int k=0;
gets(a);
int n=strlen(a);
for(int i=0;i<n;i++){
if(a[i]>='0'&&a[i]<='9') b[k++]=a[i];
}
b[k]='\0';
int i=atoi(b);
printf("%d",i);
return 0;
}