zzuli oj 1134 字符串转换

孤人 提交于 2020-03-18 18:55:03

题目链接:

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 } 

 

 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!