c语言一串字符串中提取数字并相加的问题

如果给出字符串htr475ftu8kafda23dg56将4758与2356相加用函数、数组的话是这样:#include<stdio.h>intparse(char*a)... 如果给出字符串 htr475ftu8k
afda23dg56
将4758与2356相加
用函数、数组的话是这样:
#include <stdio.h>
int parse(char* a)
{
int n = 0;
while(*a)
{
if(*a >= '0' && *a <= '9')
n = n * 10 + *a - '0';
++a;
}

return n;
}
int main()
{
char a[123], b[123];
int x, y;
gets(a);
gets(b);
x = parse(a);
y = parse(b);
printf("%d+%d=%d\n", x, y, x + y);
}
但如果不用函数数组应该怎么做呢?用循环等基础语句~求教~
不要保存 直接输出就行了
。。。这个是作业
展开
 我来答
lendylongli
推荐于2017-12-16 · TA获得超过781个赞
知道小有建树答主
回答量:153
采纳率:100%
帮助的人:139万
展开全部
#include<stdio.h>
main()
{
char x;
char input1='\0';
char input2='\0';
int number1=0;
int number2=0;
printf("请输入字符串1:(输入?结束)");//输入?作为字符串1的结束符
while(x!='?')
{
x=getchar();
if(x=='?')
break;
input1=x;
if(input1>='0'&&input1<='9')//每检查到一个数字就要乘10,进一位
number1=number1*10+input1-'0';//比如字符'9'-'0'之后的数是数字9

}
x='\0';//将字符x重置值,因为原来是等于?的
printf("请输入字符串2:(输入?结束)");
while(x!='?')
{
x=getchar();
if(x=='?')
break;
input2=x;
if(input2>='0'&&input2<='9')
number2=number2*10+input2-'0';

}
printf("两串数之和为%d",number1+number2);
getch();

}//没有用到数组和指针,也没有调用函数,真不明作业这么多要求。。。
//希望能帮到你
pan402945786
2010-05-19 · TA获得超过637个赞
知道答主
回答量:15
采纳率:0%
帮助的人:15.4万
展开全部
#include <stdio.h>
void main()
{
char p[123], q[123],*a,*b;
int x, y,m=0,n=0;
a=gets(p);
b=gets(q);
while(*a)
{
if(*a >= '0' && *a <= '9')
m = m * 10 + *a - '0';
++a;
}
x=m;
while(*b)
{
if(*b >= '0' && *b <= '9')
n = n * 10 + *b - '0';
++b;
}
y=n;
printf("%d+%d=%d\n", x, y, x + y);
}
刚才试了一下,可以得出结果,祝你好运!O(∩_∩)O
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
闵秀老清晖
2019-04-16 · TA获得超过3857个赞
知道大有可为答主
回答量:3191
采纳率:31%
帮助的人:237万
展开全部
"#include<stdio.h>
main()
{
char
x;
char
input1='\0';
char
input2='\0';
int
number1=0;
int
number2=0;
printf("请输入字符串1:(输入?结束)");//输入?作为字符串1的结束符
while(x!='?')
{
x=getchar();
if(x=='?')
break;
input1=x;
if(input1>='0'&&input1<='9')//每检查到1个数字就要乘10,进一位
number1=number1*10+input1-'0';//例如字符'9'-'0'之后的数是数字9
}
x='\0';//将字符x重置值,由于原来是等于?的
printf("请输入字符串2:(输入?结束)");
while(x!='?')
{
x=getchar();
if(x=='?')
break;
input2=x;
if(input2>='0'&&input2<='9')
number2=number2*10+input2-'0';
}
printf("两串数之和为%d",number1+number2);
getch();
}//木有用到数组和指针,也木有调出使用函数,真不明作业这么多要求。。。
//期望能帮到你"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
美丽生灵
2010-05-19 · TA获得超过455个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:171万
展开全部
既然是字符串,那要么用数组保存,要么用指针来操作,所以这个避免不了的,不用函数的话那你就直接把函数中的功能写到main函数中就好了,只是这样同样的功能代码你要写两遍,真不知道你为什么会要这样的要求
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伏向白胤
2019-06-30 · TA获得超过3539个赞
知道大有可为答主
回答量:3124
采纳率:34%
帮助的人:401万
展开全部
#include
<stdio.h>
#include
"windows.h"
#define
MAX
1024
main()
{

char
*str1,*str2,*p;

int
i=0,k=0;

str1=(char
*)malloc(1024*sizeof(char));

str2=(char
*)malloc(1024*sizeof(char));

fflush(stdin);

gets(str1);

fflush(stdin);

gets(str2);

p=str1;

while(*p!='\0')

{

if(isdigit(*p))
i=i*10+*p-'0';

p++;

}

p=str2;

while(*p!='\0')

{

if(isdigit(*p))
k=k*10+*p-'0';

p++;

}

printf("%d\n",i+k);

free(str1);

free(str2);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式