4 4关于#c语言#的问题:验证命题:如果一个三位整数是37的倍数,则这个整数循环左移后得到的另两个3位数也是37的倍数

验证命题:如果一个三位整数是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求商和余数,然后组成新的数。
需要先判断命题是否成立,然后再输出所有符合条件的数。

img

代码如下:

#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;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632