题目链接:
https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1134
Description
输入一个以回车结束的字符串,它由数字和字母组成,请过滤掉所有非数字字符,然后将数字字符串转换成十进制整数后乘以2输出。
Input
输入一个以回车结束的字符串,长度不超过100,由数字和字母组成。
Output
将转换后的整数乘以2输出,测试数据保证结果在int范围内。
Sample Input
sg987aa65t498
Sample Output
197530996
AC代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<ctype.h>
4 void str_rev(char s[],int l);
5 int main()
6 {
7 char b[101],a[101];
8 int l,i,j,c[105],f;
9 while(scanf("%s",a) != EOF)
10 {
11 l=strlen(a);
12 for(j=0,i=0;i<l;i++)
13 {
14 if(isdigit(a[i]))
15 b[j++]=a[i];
16 }
17 b[j]='\0';//字符处理的结尾要加结束符号
18 str_rev(b,j);
19 memset(c,0,sizeof(c));
20 for(i=0;i<j;i++)
21 {
22 if(isdigit(b[i]))
23 c[i]=(b[i]-'0') * 2;
24 }
25 for(i=0;i<j;i++)
26 {
27 if(c[i]>9)
28 {
29 c[i] %= 10;
30 c[i+1]++;
31 }
32 }
33 for(f=0,i=101;i>=0;i--)
34 {
35 if(c[i]||f==1)
36 {
37 printf("%d",c[i]);
38 f=1;
39 }
40 }
41 if(f==0)
42 printf("0");//特殊情况
43 printf("\n");
44 }
45 return 0;
46 }
47 void str_rev(char s[],int l)//更换长度
48 {
49 int i;
50 char t;
51 for(i=0;i<=(l-1)/2;i++)
52 {
53 t=s[i];
54 s[i]=s[l-i-1];
55 s[l-i-1]=t;
56 }
57 s[l]='\0';
58 }
来源:https://www.cnblogs.com/wenzhixin/p/7368314.html