判斷輸入的數字是不是11的倍數,最多到1000位
[心得]
1.位數太多所以使用string來記錄,配合11倍數檢查法 (奇偶位數和之差為11的倍數或0)
2.利用atoi()來判斷讀進來的數字是不是0
3.atoi()沒辦法只轉一位,所以相加時數字之值用 ASCII CODE-48 來表示
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char N[1001];
int len,i,odd,even,sub;
while(gets(N)!=NULL)
{
if(!atoi(N))
break;
len=strlen(N);
odd=0; even=0;
for(i=0;i<len;i++)
{
if(i%2) odd+=N[i]-48;
else even+=N[i]-48;
}
sub=abs(odd-even);
if(!sub||!(sub%11))
printf("%s is a multiple of 11.\n",N);
else
printf("%s is not a multiple of 11.\n",N);
}
return 0;
}
留言列表