这些天在看一本二级C的书,为了多看些就少写了不少。
今天有两个问题比较纠结 一是小数对大数取余,还有一个是break在各个情况下具体的计算。
一:小数对大数取余
比如:1%3==几;2%10==几;3%(-2)==几……
后来查了一下,
一是小数对大数取余 商零,余自己。具体逻辑值就要看本身是多少了。
二是余数符号和被除数相同。比如:
3%(-2)和3%2 结果是1
-3%2和-3%(-2) 结果是(-1)
二:break
书上源程序是这样:
- #include<stdio.h>
-
void main()
-
{
-
int i,j;
-
for(j=10;j<=11;j++)
-
{ for(i=9;i<j;i++)
-
if(!(j%i)) break;
-
if(i>j-1) printf("%d",j);
-
}
-
-
-
}
答案是显示:10 11
开始以为break和continue一样 有几种情况,后来看介绍只是跳出当次循环。
后来在Vc里改了一下程序 加了一个括号,就清晰多了
- for(i=9;i<j;i++)
-
{
-
if(!(j%i)) break;
-
}
-
if(i>j-1) printf("%d",j);
这样结果不变
这样想明白,是先
1.i=9 //j=10,初值
2.2<10 //逻辑值是1进入循环体
3.(!(j%i))==0 //逻辑值为0 跳过if后边语句,因后边无语句 返回for外层循环
4.i++ //i=10
5.(!(j%i))==1 //if判断为真 执行break
6.到显示语句输出
我觉得这题挺好,break又加上两个if和for的包含关系。
还有for在语句二不成立时 三语句何时执行,本来不太熟的东西都弄清楚了
阅读(4128) | 评论(0) | 转发(0) |