题目链接:
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