C语言 求分析

一个正整数与3的和是5的倍数,与3的差是6的倍数,编写一个程序求符合条件的最小数。

下面是综合别人答案我弄的程序。有几个地方不是太懂。
#include <stdio.h>
main()
{ int a=0,min=32767;
for(a=3; ;a++)
if((a+3)%5==0&&(a-3)%6==0)
{
if(a<min) min=a;
printf("%d\n",a);break;
}
}

一、 min为什么定义32767
二、为什么后面要加个BREAK
我知道自己的问题比较白痴。。。还是希望大家多指点,大家都是在错误中成长起来的嘛~!~!

一、
因为32767是2字节int型的最大值了(但是现在很多机器上int是4字节)。这样min保证初始化为最大值,会被真实数据重写。

二、
当找到第一个时,就是最小的那个了。此时break就退出循环,没必要再找比它大的数了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-06
int型的数是由2个字节来表示,2个字节16位 ,第一位表示符号 ,0为正数1为负,
0 111111111111111 后边15位换成10进制就是32767,
#include <stdio.h>
main()
{ int a=0,min=32767;
for(a=3; ;a++)
if((a+3)%5==0&&(a-3)%6==0)
{
if(a <= min) min=a; /*如果a的值小于32767,就找到了满足条件的数*/
printf("%d\n",a);break; /*break作用跳出循环体 找到了满足条件的数后就不需要再循环所以得跳出循环*/
}
}
第2个回答  2011-12-06
32767是2字节int型的最大值,保证初始化为最大值
break退出循环,不要再找比它大的数,节约时间
第3个回答  2011-12-06
因为这个是循环,如果不加 break 会一直输出满足条件的数

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网