プロが教えるわが家の防犯対策術!

/*Prog32.cキーボードから整数型変数aへデータを入力し、aの値が4の倍数のときは“4の倍数です”と表示し、そうでないときは、“4の倍数ではありません”と表示する。ただし、整数データのビット数はわからないものとし、計算にはビットごとの論理演算のみを用いる。*/

#include <stdio.h>
int main(void)

{

int a;
printf("整数を入力して下さい! "); scanf("%d", &a);
(a % 4 ) ? printf("4の倍数ではありません。\n", a)
:printf("4の倍数です。\n", a);

return(0);

}

4の倍数を論理演算で表す方法がわかりません。。
自分では上記のように算術を使うやりかたしかわかりませんでした。
よろしくお願いします!

A 回答 (3件)

#include <stdio.h>


int main(void)
{

int a;
printf("整数を入力して下さい! ");
scanf("%d", &a);
if(a%4==0){
printf("%dは4の倍数です。\n", a);
}
else{
printf("%dは4の倍数ではないです。\n", a);
}
return(0);
}
のまちがいか。
    • good
    • 2

4の倍数は、2進数で表すと、下位2ビットが0です。



ですから、if文の条件式を
if ((!(a & 3))
4の倍数;
else
4の倍数ではない;

とすればいいと思います。
    • good
    • 1

#include <stdio.h>


int main(void)
{

int a;
printf("整数を入力して下さい! ");
scanf("%d", &a);
if(a%==0){
printf("%dは4の倍数です。\n", a);
}
else{
printf("%dは4の倍数ではないです。\n", a);
}
return(0);

}
でいいんじゃないの?このままこぴぺしても全角の空白がどっかにはいっているからそのまま通らないかも。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!