#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char n[20000];
int i=0;
int sum=0;
while(gets(n))
{
for(i=0;i<strlen(n);i++)
{
n[i]=n[i]-48;
sum=sum+n[i];
}
if(sum%3==0)
printf("yes\n");
else
printf("no\n");
sum=0;
for(i=0;i<strlen(n);i++)
n[i]=0;
}
}
各位好
以上是我的程式碼
系統說與正確輸出不相符(line:10)
您的答案為: no
正確答案為: yes
有大大可以幫我解答嗎
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char n[20000];
int i=0,length;
int sum=0;
while(gets(n))
{
length=strlen(n);
for(i=0;i<length;i++)
{
n[i]=n[i]-48;
sum=sum+n[i];
}
if(sum%3==0)
printf("yes\n");
else
printf("no\n");
sum=0;
for(i=0;i<length;i++)
n[i]=0;
}
}
至於原因我不清楚
#include
#include
#include
int main()
{
char n[20000];
int i=0,length;
int sum=0;
while(gets(n))
{
length=strlen(n);
for(i=0;i
{
n[i]=n[i]-48;
sum=sum+n[i];
}
if(sum%3==0)
printf("yes\n");
else
printf("no\n");
sum=0;
for(i=0;i
n[i]=0;
}
}
至於原因我不清楚
strlen是讀字串中第一個'\0'的位置
也就是ASCII 值為0的那個
所以n[i]=n[i]-48會導致strlen判斷錯而提早結束字串分析
#include
#include
#include
int main()
{
char n[20000];
int i=0,length;
int sum=0;
while(gets(n))
{
length=strlen(n);
for(i=0;i
{
n[i]=n[i]-48;
sum=sum+n[i];
}
if(sum%3==0)
printf("yes\n");
else
printf("no\n");
sum=0;
for(i=0;i
n[i]=0;
}
}
至於原因我不清楚
strlen是讀字串中第一個'\0'的位置
也就是ASCII 值為0的那個
所以n[i]=n[i]-48會導致strlen判斷錯而提早結束字串分析
我懂了
謝謝各位的回答