一道c语言题,求高手指点迷津……
将一个英文字符串(串长<80)中所有的十进制数找出来,计算它们的和并输出。例如:英文字符串apple25,pear125中共有两个十进制数25和125,所以输出结果为15...
将一个英文字符串(串长<80)中所有的十进制数找出来,计算它们的和并输出。
例如:英文字符串 apple 25,pear 125中共有两个十进制数25和125,所以输出结果为150
c code:
#include<stdio.h>
#include<string.h>
#include<math.h>
main()
{
char a[80];
int sum=0,i=0,k=0,temp=0,t=0,g=0,p=0,w=0;
gets(a);
memset(a,'\0',sizeof(a));
w=strlen(a);
while(!a[i]=='\0')
{
if('0'>=a[i] && a[i]<='9')
{
t=i;
for(p=1;p<=w-i;p++)
{
if('0'>=a[i] && a[i]<='9')
{
k++;
i++;
}
}
for(g=1;g<=k-1;g++)
{
temp+=(a[t]-'0')*0.1*pow(10,k);
temp+=(a[t+1]-'0')*0.1*pow(10,k-1);
}
}
sum+=temp;
t=0;
temp=0;
k=0;
i++;
}
printf("%d",sum);
getch();
}
我承认我的这个太啰嗦,望高手指点指点,帮忙改正,谢了!~! 展开
例如:英文字符串 apple 25,pear 125中共有两个十进制数25和125,所以输出结果为150
c code:
#include<stdio.h>
#include<string.h>
#include<math.h>
main()
{
char a[80];
int sum=0,i=0,k=0,temp=0,t=0,g=0,p=0,w=0;
gets(a);
memset(a,'\0',sizeof(a));
w=strlen(a);
while(!a[i]=='\0')
{
if('0'>=a[i] && a[i]<='9')
{
t=i;
for(p=1;p<=w-i;p++)
{
if('0'>=a[i] && a[i]<='9')
{
k++;
i++;
}
}
for(g=1;g<=k-1;g++)
{
temp+=(a[t]-'0')*0.1*pow(10,k);
temp+=(a[t+1]-'0')*0.1*pow(10,k-1);
}
}
sum+=temp;
t=0;
temp=0;
k=0;
i++;
}
printf("%d",sum);
getch();
}
我承认我的这个太啰嗦,望高手指点指点,帮忙改正,谢了!~! 展开
3个回答
展开全部
这段代码不长,位问题不少。下面是改过的,请看注释。供参考。
#include "stdio.h"//
#include "string.h"//
#include "math.h"//
#include "conio.h"//
void main(void){
char a[80];
int sum=0,i=0,k=0,temp=0,t=0,g=0,p=0,w=0;
memset(a,'\0',sizeof(a));//这两句前后调换,不然输入了字串又清0了且无必要
printf("请输入一个字符串!\nStr=");//加一行提示
gets(a);//与memset()位置对调
w=strlen(a);
//while(!a[i]=='\0'){取非了肯定是'\0'
while(a[i]){//
//if('0'>=a[i] && a[i]<='9'){表达式'0'>=a[i]&&a[i]<='9'错误
if(a[i]>='0' && a[i]<='9'){
t=i;
//for(p=1;p<=w-i;p++){=
for(p=t;a[p];p++){//p<w-t逻辑错误
if(a[p]>'9' || a[p]<'0') break;//不加这一句将会把多个数当一个长数处理
//if('0'>=a[i] && a[i]<='9'){下标变量错,逻辑表达式错
if(a[p]>='0' && a[p]<='9'){
//k++;
//i++;后面面还有i++,所以要少加1,两行结合用下一句
i+=k++;
}
}
//for(g=1;g<=k-1;g++){//逻辑有错
for(g=0;g<k;g++){
//temp+=(a[t]-'0')*0.1*pow(10,k);//逻辑有错
temp+=(a[t+g]-'0')*(int)pow(10,k-g-1); //printf("%d ",temp);
//temp+=(a[t+1]-'0')*0.1*pow(10,k-1);//多余了
}
}
sum+=temp;
//t=0;无必要,前面有赋值的语句
temp=0;
k=0;
i++;
}
printf("数字之和是: %d",sum);//加提示改善一下输出
getch();
}
#include "stdio.h"//
#include "string.h"//
#include "math.h"//
#include "conio.h"//
void main(void){
char a[80];
int sum=0,i=0,k=0,temp=0,t=0,g=0,p=0,w=0;
memset(a,'\0',sizeof(a));//这两句前后调换,不然输入了字串又清0了且无必要
printf("请输入一个字符串!\nStr=");//加一行提示
gets(a);//与memset()位置对调
w=strlen(a);
//while(!a[i]=='\0'){取非了肯定是'\0'
while(a[i]){//
//if('0'>=a[i] && a[i]<='9'){表达式'0'>=a[i]&&a[i]<='9'错误
if(a[i]>='0' && a[i]<='9'){
t=i;
//for(p=1;p<=w-i;p++){=
for(p=t;a[p];p++){//p<w-t逻辑错误
if(a[p]>'9' || a[p]<'0') break;//不加这一句将会把多个数当一个长数处理
//if('0'>=a[i] && a[i]<='9'){下标变量错,逻辑表达式错
if(a[p]>='0' && a[p]<='9'){
//k++;
//i++;后面面还有i++,所以要少加1,两行结合用下一句
i+=k++;
}
}
//for(g=1;g<=k-1;g++){//逻辑有错
for(g=0;g<k;g++){
//temp+=(a[t]-'0')*0.1*pow(10,k);//逻辑有错
temp+=(a[t+g]-'0')*(int)pow(10,k-g-1); //printf("%d ",temp);
//temp+=(a[t+1]-'0')*0.1*pow(10,k-1);//多余了
}
}
sum+=temp;
//t=0;无必要,前面有赋值的语句
temp=0;
k=0;
i++;
}
printf("数字之和是: %d",sum);//加提示改善一下输出
getch();
}
展开全部
int temp,result=0;
while(!a[i]=='\0')
{
while(a[i]<'0' || a[i]>'9');
temp=0;
while(a[i]>='0' && a[i]<='9')
{//找出十进制数
temp=temp*10;
temp+=a[i]-'0';
}
result=result+remp;//十进制数相加
}
希望这段代码对你有帮助!
while(!a[i]=='\0')
{
while(a[i]<'0' || a[i]>'9');
temp=0;
while(a[i]>='0' && a[i]<='9')
{//找出十进制数
temp=temp*10;
temp+=a[i]-'0';
}
result=result+remp;//十进制数相加
}
希望这段代码对你有帮助!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-01-09
展开全部
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
void main()
{
int sum=0,k=0;
char ch,str[10];
printf("please input some characters:\n");
while((ch=getchar())!='\n')
{
if(ch>='0'&&ch<='9')
str[k++]=ch;
else
{
if(k>0)
{
str[k]=0;
sum+=atoi(str);
}
k=0;
}
}
if(k>0)
{
str[k]=0;
sum+=atoi(str);
}
printf("%d",sum);
getchar();
}
#include"string.h"
#include"stdlib.h"
void main()
{
int sum=0,k=0;
char ch,str[10];
printf("please input some characters:\n");
while((ch=getchar())!='\n')
{
if(ch>='0'&&ch<='9')
str[k++]=ch;
else
{
if(k>0)
{
str[k]=0;
sum+=atoi(str);
}
k=0;
}
}
if(k>0)
{
str[k]=0;
sum+=atoi(str);
}
printf("%d",sum);
getchar();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询