C语言问题

#include <stdio.h>
#include <string.h>
void main ()
{
char str[100];
int a,i,sum=0;
printf("请输入一串字符:\n");
gets(str);
a=strlen(str);
for(i=0;i<a;i++)
{
if(('0'<=str[i])&&(str[i]<='9'))
sum=sum*10+str[i]-'0';
}
printf("统计过后的数为;\n");
printf("%d",sum);
}
这个函数修改一下,可以达到比如我输入asd123fe456输出的结果是123 456吗?如果可以的话,请问要怎么进行修改?

//printf肯定是需要移到for循环里的,因为你要输出好几个数字.这段代码我没验证,不敢说百分百正确,但是流程我保证是对的
void main ()
{
char str[100];
int a,i,sum=0;
printf("请输入一串字符:\n");
gets(str);
a=strlen(str);
printf("统计过后的数为;\n");
for(i=0;i<a;i++)//这个循环是保证跳过开头的字母,其实无所谓,最多就是头一个数字输出0
{
if(('0'<=str[i])&&(str[i]<='9'))
continue;
else
break;
}
for(i=0;i<a;i++)
{
if(('0'<=str[i])&&(str[i]<='9'))
sum=sum*10+str[i]-'0';
else
{
printf("%d ",sum);//留个空格,或者\n也行
sum=0;
}

}
}追问

中间的continue起到了什么作用?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-18
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main ()
{
char str[100];
int a,i,sum=0;
printf("请输入一串字符:\n");
gets(str);
a=strlen(str);
printf("统计过后的数为;\n");
for(i=0;i<a;i++)
{
if(('0'<=str[i])&&(str[i]<='9'))
{putchar(str[i]);
if(isalpha(str[i+1]))
putchar(' ');}
}
}本回答被提问者采纳
第2个回答  2014-04-18
用scanf吧..那个简单点
相似回答
大家正在搜