问题:
字符串操作,输入字符串,提取其中的数字并相加,在屏幕上显示结果,比如输入dfd56hj5hjkk9kk7,在屏幕上显示出:56+5+9+7=77。
#include <stdio.h>
#include<string.h>
int main()
{
char *s,ss[1000];
int n,i,k=0,kk=0;
char save[1000][1000];
int sum=0;
s=ss;
scanf("%s",s);
n=strlen(s);
for(i=0;s[i]!='\0';i++)
{
if((int)(s[i]-'0')>=0&&(int)(s[i]-'0')<=9)
{
save[k][kk++]=s[i];
continue;
}
else
{
k++;
kk=0;
continue;
}
}
for(i=0;i<n;i++)
{
sum+=atoi(save[i]);
}
printf("%d\n",sum);
}
再进行优化,第二个版本:
#include <stdio.h>
#include<string.h>
int main()
{
const int N=1000;
char str[N];
scanf("%s",str);
//ar* str="345ppp56fff4ddd3";
int n=strlen(str);
int t[N];
memset(t,-1,sizeof(t));
int k=0;
int flag=-1;
int temp=0;
int i;
for(i=0;i<=n;i++)
{
if((str[i]>='0')&&(str[i]<='9')){
if(flag==1){temp=temp*10+str[i]-'0';}
else{flag=1;temp=str[i]-'0';}
}
else{
if(flag==1){
t[k]=temp;
k++;
}
flag=0;
}
}
int sum=0;
for(i=0;i<N;i++){
if(t[i]==-1)break;
if(i==0){printf("%d",t[i]);}
else{printf("+%d",t[i]);}
sum+=t[i];
}
printf("=%d",sum);
}