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

被折叠的 条评论
为什么被折叠?



