我的程式碼這樣寫哪裡出問題??
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n;
long long x,y;
char *a,*b,c[100],d[100];
while(scanf("%s%s",c,d)!=EOF)
{
if(c[0]==0&&d[0]==0) break;
a = c;
b = d;
while(a[0]=='0') a++;
while(b[0]=='0') b++;
if(strlen(a)>strlen(b)) printf("Unfair\n");
else if(strlen(a)==strlen(b))
{
n=0;
for(i=0;i<strlen(a);i++)
{
if(a[i]>b[i]){
n=1;
break;
}
else n=0;
}
if(n==1) printf("Unfair\n");
else printf("Fair\n");
}
else printf("Fair\n");
}
return 0;
}
每次測試都會出現
與正確輸出不相符(line:4)
您的答案為: Unfair
正確答案為: Fair
問題應該是在這裡:
for(i=0;i<strlen(a);i++)
{
if(a[i]>b[i]){
n=1;
break;
}
else n=0;
line:4的測資應該是這樣:
2568923261337487616 3998886088796204288
若a[0]<b[0](如上方,3>2)應該直接就可以判定b是大於a的,照您的程式會一直找到a[i]>b[i]才停下來,我想問題應該就出在這個段落吧。
問題應該是在這裡:
for(i=0;i<strlen(a);i++) { if(a[i]>b[i]){ n=1; break; } else n=0;
line:4的測資應該是這樣:
2568923261337487616 3998886088796204288
若a[0]<b[0](如上方,3>2)應該直接就可以判定b是大於a的,照您的程式會一直找到a[i]>b[i]才停下來,我想問題應該就出在這個段落吧。
我的程式不能被編譯= =,出現WA(line 2)
但是我用Dev-C++可以
#include <stdio.h>
int main() {
long n1,n2;
while(scanf("%d %d",&n1,&n2)!=EOF ) {
if((n1!=0)&&(n2!=0)){
if(n1<=n2){
printf("Fair\n");}
else{
printf("Unfair\n");
}
}
}
return 0;
}
我的程式不能被編譯= =,出現WA(line 2)
但是我用Dev-C++可以
#include <stdio.h>
int main() {
long n1,n2;
while(scanf("%d %d",&n1,&n2)!=EOF ) {
if((n1!=0)&&(n2!=0)){
if(n1<=n2){
printf("Fair\n");}
else{
printf("Unfair\n");
}
}
}
return 0;
}
WA不是不能編譯,是答案錯誤
首頁http://cat.nknush.kh.edu.tw/ZeroJudge/ 有說明
這題主要是練習字串...
如果你要直接使用長整數,讀取的時候要搭配相對應的格式化符號 scanf("%ld %ld",&n1,&n2);