韩信点兵()

本文通过多种C语言程序实现方式解决了经典的韩信点兵问题,即寻找最小的正整数,该数除以5余1,除以6余5,除以7余4,除以11余10。通过for循环、while循环、do-while循环及不同的退出机制展示了不同的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1-5报数最末报1,1-6最末报5,1-7最末报4,1-11最末报10。

韩信至少有多少兵。

1.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    
    int n;
    for(n=1;;n++)
    {
        if(n%5==1&&n%6==5&&n%7==4&&n%11==10)
        {
            printf("x=%d\n",n);
            break;
        }

    }
    return 0;
}

2.

用goto 

#include <stdio.h>
#include <stdlib.h>

int main()
{
    
    int n;
    for(n=1;;n++)
    {
        if(n%5==1&&n%6==5&&n%7==4&&n%11==10)
        {
            printf("x=%d\n",n);
            goto END;
        }
    }
    END:;
    return 0;
}

3.用exit(0)

#include <stdio.h>
#include <stdlib.h>

int main()
{
    
    int n;
    for(n=1;;n++)
    {
        if(n%5==1&&n%6==5&&n%7==4&&n%11==10)
        {
            printf("x=%d\n",n);
            exit(0);//stdlib.h
        }
    }

    return 0;
}

 4.标志变量*

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    int find=0;
    //for(n=1;!find;n++)
    for(n=1;find==0;n++)
    {
        if(n%5==1&&n%6==5&&n%7==4&&n%11==10)
        {
            printf("x=%d\n",n);
            find=1;
        }
    }

    return 0;
}

5.while

#include <stdio.h>
#include <stdlib.h>

int main()
{

    int n=1;
    int find=0;
    while(find==0)
    {
        if(n%5==1&&n%6==5&&n%7==4&&n%11==10)
        {
            printf("x=%d\n",n);
            find=1;
        }
        n++;//*
    }
    return 0;
}

6.do-while

6.1

#include <stdio.h>
#include <stdlib.h>

int main()
{

    int n=1;
    int find=0;
    do{
        if(n%5==1&&n%6==5&&n%7==4&&n%11==10)
           {
               printf("x=%d",n);
               find=1;
           }
        n++;
    }while(!find);
    return 0;
}

6.2

#include <stdio.h>
#include <stdlib.h>

int main()
{

    int n=1;
    int find=0;
    do{
        n++;
        find=(n%5==1&&n%6==5&&n%7==4&&n%11==10);
    }while(!find);
    printf("x=%d\n",n);
    return 0;
}

6.3*

#include <stdio.h>
#include <stdlib.h>

int main()
{

    int n=0;
    int find=0;
    do{
        n++;
    }while(!(n%5==1&&n%6==5&&n%7==4&&n%11==10));
    printf("x=%d\n",n);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值