C语言编程问题,高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/05 02:25:10
2 写一个程序实现如下功能:能从键盘输入的字符串中将所有的数字字符串与非数字字符串分成两部分,将数字字符串转换成相应的数值并以2倍的乘积形式输出,将非数字字符串原样输出。输入的字符串以回车符作结束标记,假设输入的字符串中数字式字符最多4个。如:输入“ab45cda45”<enter>,则输出结果格式为:new string:“abcda” , number:9090

#include <stdio.h>
#include <string.h>
main()
{char a[81];
int c,i;
gets(a);
printf("new string:");
for(i=0;a[i]!='\0';i++)
{ if (a[i]<'0'||a[i]>'9')
printf("%c",a[i]);
}
printf(",number:");
for(i=0;a[i]!='\0';i++)
{if (a[i]>='0'&&a[i]<='9')
{ if (a[i+1]>='0'&&a[i+1]<='9')

else c=(a[i]-'0')*2;

printf("%d",c);
};
}

}

实在不晓得该怎么把数字输出来怎么考虑几个数连起来的情况?

把程序修改了,在VC++6.0下测试通过。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void main()
{
char a[81],temp[81]={'0'};
int i,j,sign=1;
gets(a);
printf("new string:");
for(i=0;a[i]!='\0';i++)
{
if (a[i]<'0'||a[i]>'9')
printf("%c",a[i]);
}
printf(",number:");
for(i=0,j=0;a[i]!='\0';i++)
{
if(a[i]>='0'&&a[i]<='9')
{
temp[j++]=a[i];
sign=0;
if(a[i+1]=='\0')
printf("%d",atoi(temp)*2);
}

else if(sign==0)
{
printf("%d",atoi(temp)*2);
j=0;
sign=1;
}

}
}

你可以再申请一个数组来存放数字,并利用函数atoi来转换数字,说明一下的是atoi要用到头文件 #include <stdlib.h>,这样你只要用一次循环就可以了:
#include <stdlib.h>
#include <stdio.h>
#include <str