#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char ch[101];
char str[101];
gets(ch);
int i,k,sum=0;
for(i=0,k=0;i<strlen(ch);i++){
if(ch[i]>='0'&&ch[i]<='9')
{
str[k]=ch[i];
k++;
}
}
int n=strlen(str);
for(i=0;i<strlen(str);i++){
sum+=(str[i]-48)*pow(10,n-1);
n--;
}
printf("%d",sum*2);
return 0;
}
str最后一个字符后面没有添加结束符'\0',导致strlen结果不正确。
pow()函数没什么问题,修改如下,供参考:
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char ch[101];
char str[101];
gets(ch);
int i, k, sum = 0;
for (i = 0, k = 0; i < strlen(ch); i++) {
if (ch[i] >= '0' && ch[i] <= '9')
{
str[k] = ch[i];
k++;
}
}
str[k] = '\0'; //修改
int n = strlen(str);
for (i = 0; i < strlen(str); i++) {
sum += (str[i] - 48) * pow(10, n-1);
n--;
}
printf("%d", sum * 2);
return 0;
}