请问大神,C语言题,编程功能实现:输入一个字符串,输出字符串中的数字部分组成的数及这些数字组成的数

请问大神,C语言题,编程功能实现:输入一个字符串,输出字符串中的数字部分组成的数及这些数字组成的数的两倍,如输入字符串“sfgc0g45dhg4”则输出“454 908”。。

void main()
{
char str[50];
int i=0; //i是数组下标. 
gets(str); //输入字符串.
int s=0;
while(str[i]) //当数组元素不是字符串结束符时.执行while

    if(str[i]>='0'&&str[i]<='9') //如果数组元素是数字. 就输出这个元素.
    {
        s=s*10+int(str[i])-int('0');
    }
    else
    {
        if(str[i-1]>='0'&&str[i-1]<='9') //否则判断前一个元素是不是数字.是的话输出一个空格.
        printf("%d%d", s, s*2);
        printf(" "); 
    }
    i++;
}
printf("\n");
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-18
#include<stdio.h>
#include<string.h>

int main()
{
char s[60];//长度可以自己定义
int a[60];//长度可以自己定义
printf("请输入字符串\n");
scanf("%s",s);
int s_long=strlen(s);
int i =0,count=0,j=0,k=0,num;
for (i=0;i++;i<s_long)
{
if(s[i]>=0&&s[i]<=9)
{
a[j]=s[i];
j++;
count++;
}
}
num=a[0];
for (k=1;k++;k<count)
{
num=num*10+a[k];
}
printf("%d %d ",num, num*2)
}
第2个回答  2015-06-18
#include <stdio.h>
int main()
{
int r = 0;
int i;

while(1)
{
i = getchar();
if(i == '\n' || i == EOF) break;
if(i<='9' && i >= '0')
{
r *= 10;
r += i - '0';
}
}
printf("%d %d\n", r, r*2);

return 0;
}

运行下试试 是不是你想要的。

第3个回答  推荐于2018-02-27
#include <stdio.h> 
int main()
{
char str[100];
int i,num=0;
printf("input str: ");
gets(str);
for( i=0;str[i];i++ )
{
if ( str[i] >='0' && str[i]<='9' )
num=num*10+str[i]-'0' ;
}
printf("%d %d\n", num, num*2 );
return 0;
}

追问

那个“ -'0' ”是什么意思,还有(i=0;str(i);i++)中的str(i)什么意思,为什么这样用?

本回答被提问者和网友采纳
第4个回答  2015-06-18
#include<stdio.h>
#include<string.h>
void main()
{
char a[100];
int b[100];
int i=0,j=0;
gets(a);
for(i=0;i<strlen(a);i++)
{
if(a[i]>=48&&a[i]<=57)
{
b[j]=a[i];
j++;
}
}
for(j=0;j<strlen(b);j++)
printf("%d%d\n",b[j],2*b[j]);
}追答

理解错题意了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网