标题:[求助]Hard to Believe, but True!
只看楼主
tekkie
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-2-7
 问题点数:0 回复次数:7 
[求助]Hard to Believe, but True!
http://www.informatik.uni-ulm.de/acm/Locals/2001/html/hard.html
上面是题目
下面是我的解答可是输出的总是False
请帮忙看看错在哪?
#include <stdio.h>
#include <string.h>
main()
{
char a[7],b[7],c[7];
int n1[7],n2[7],n3[7],i,j,m,t,x;
while (scanf("%s+%s=%s",a,b,c))
{
for (i=0;i<strlen(a);i++)
n1[i]=a[i]-'0';
for (j=0;j<strlen(b);j++)
n2[j]=a[j]-'0';
t=0;
for (m=0;m<strlen(c);m++)
{
x=n1[m]+n2[m]+t;
if (x%10!=(c[m]-'0'))
{
printf("False\n");break;
}
else if (m==strlen(c)-1) {printf("True\n");break;}
if (x>9) t=1;
else t=0;
}
}
return 0;
}
搜索更多相关主题的帖子: Believe Hard True 
2006-02-07 22:27
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 

while (scanf("%s+%s=%s",a,b,c))

Look at this sentence, I don't agree with you.

I think, you can do it like this:

#include <stdio.h>
#include <stdlib.h>

/*Maky Number By String*/
long mnbs(char *string)
{
int i;
long result=0;
for(i=0;i<strlen(string);i++)
result+=string[i]-'0';
return result;
}

/*Make Number By Long*/
long mnbl(long number)
{
char string[8];
ltoa(number,string,10);
return mnbs(string);
}

/*Run*/
int main(void)
{
char string[30],*a,*b,*c;
int i,left,right;
/*Get the a,b,c from the string format*/
a=string;
while(1)
{
gets(string);
i=0;
while(string+i++)
{
if(string[i]=='+')
{
string[i]='\0';
b=&string[i+1];
}
if(string[i]=='=')
{
string[i]='\0';
c=&string[i+1];
}
}
/*judge the left==rught and output the result*/
left = mnbl(mnbs(a)+mnbs(b));
right= mnbs(c);
if(left==0 && right==0)
break;
else if(left==right)
printf("True\n");
else
printf("Flase\n");
}
printf("ByeBye!\n");
getch();
return 0;
}


淘宝杜琨
2006-02-08 01:28
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 
input:
19+20=3
output:
True

input:
0+0=0
output:
ByeBye

淘宝杜琨
2006-02-08 01:29
tekkie
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-2-7
得分:0 
thx ^_^
2006-02-08 13:10
stdio
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2006-1-22
得分:0 

/*Make Number By Long*/
long mnbl(long number)
{
char string[8];
ltoa(number,string,10);
return mnbs(string);
}

请问这一段是什么意思呀?

2006-02-10 20:33
超级新手
Rank: 2
等 级:论坛游民
帖 子:185
专家分:59
注 册:2006-2-9
得分:0 

long int -->>string
12345变成"12345"的意思

你可以查下ltoa()


快快来我的群:13485998
学学C,玩玩算法,搞搞加密,比比谁更菜?
ARM恨死你。
2006-02-10 21:04
cyuyan
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-2-10
得分:0 
/*
written by cyuyan
*/
#include<stdio.h>
#include<string.h>
#define N 7
/*求反串*/
void reverse(char* str,char *re_str)
{
int i,j;
for(i=strlen(str)-1,j=0;i>=0;i--,j++)
re_str[j]=str[i];
re_str[j]='\0';
}
/*从等式中提取a,b,c*/
void change_to_int(char *str,int *a,int *b,int *c)
{
char stra[N],re_stra[N],strb[N],re_strb[N],strc[N],re_strc[N];
int j,k;
for(j=0,k=0;str[j]!='+';j++,k++)
stra[k]=str[j];
stra[k]='\0';
for(j=j+1,k=0;str[j]!='=';j++,k++)
strb[k]=str[j];
strb[k]='\0';
for(j=j+1,k=0;str[j]!='\0';j++,k++)
strc[k]=str[j];
strc[k]='\0';

reverse(stra,re_stra);
sscanf(re_stra,"%d",a);
reverse(strb,re_strb);
sscanf(re_strb,"%d",b);
reverse(strc,re_strc);
sscanf(re_strc,"%d",c);
}
void main()
{
char buf[30];
int a[N],b[N],c[N],i;
for(i=0;i<N;i++)/*输入*/
{
gets(buf);
change_to_int(buf,&a[i],&b[i],&c[i]);
}
for(i=0;i<N;i++)/*判定并输出*/
{
if(a[i]+b[i]==c[i]) printf("True\n");
else printf("False\n");
}
}
==================================================
在win xp和vc++6.0下调试通过
2006-02-11 10:10
daisyzhou45
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-2-10
得分:0 

2006-02-11 13:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-44730-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036067 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved