验证命题:如果一个三位整数是37的倍数,则这个整数循环左移后得到的另两个3位数也是37的倍数。例如,148是37的倍数,481和814也是37的倍数。若1.命题正确2.输出所有符合命题的3位整数,否则输出“wrong”。
循环3位数,判断当前数是否是37的倍数,如果是,再对这个数进行分解,得到对应的百、十、个位,并且进一步判断移位后是否是37的倍数。
#include<stdio.h>
int main(){
int a,b,c,count=0;
for (int i = 100; i <1000; i++)
{
if(i % 37 == 0){
a = i / 100;
b = i / 10 % 10;
c = i % 10;
if (((b * 100 + c * 10 + a) % 37 == 0) && ((c * 100 + a * 10 + b) % 37 == 0)){
printf("%d ", i);
count++;
}
}
}
if(count==0)
printf("wrong");
return 0;
}
左移操作除以10求商和余数,然后组成新的数。
需要先判断命题是否成立,然后再输出所有符合条件的数。
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n=100, t;
//先判断命题是否正确
for (; n <= 999; n++)
{
t = n % 10 * 100 + n / 10;
if (n % 37 == 0 && t % 37 != 0)
{
printf("wrong");
return 0;
}
}
//输出所有符合条件的
for (n=100; n <= 999; n++)
{
t = n % 10 * 100 + n / 10;
if (n % 37 == 0 && t % 37 == 0)
printf("%d ", n);
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!