判斷輸入的數字是不是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;
}

創作者介紹
創作者 RingsACM 的頭像
RingsACM

Ring's ACM

RingsACM 發表在 痞客邦 留言(0) 人氣()