Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1270755
  • 博文数量: 160
  • 博客积分: 4132
  • 博客等级: 中校
  • 技术积分: 2086
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-06 21:56
文章分类

全部博文(160)

文章存档

2012年(25)

2011年(120)

2010年(15)

分类: C/C++

2011-03-05 19:02:49

这些天在看一本二级C的书,为了多看些就少写了不少。
今天有两个问题比较纠结 一是小数对大数取余,还有一个是break在各个情况下具体的计算。

一:小数对大数取余
比如:1%3==几;2%10==几;3%(-2)==几……
后来查了一下,
一是小数对大数取余 商零,余自己。具体逻辑值就要看本身是多少了。
二是余数符号和被除数相同。比如:
                          3%(-2)和3%2   结果是1
                          -3%2和-3%(-2) 结果是(-1)


二:break
书上源程序是这样:
  1. #include<stdio.h>
  2. void main()
  3. {
  4.     int i,j;
  5.     for(j=10;j<=11;j++)
  6.     {    for(i=9;i<j;i++)
  7.             if(!(j%i)) break;
  8.             if(i>j-1) printf("%d",j);
  9.     }


  10. }
答案是显示:10 11


开始以为break和continue一样 有几种情况,后来看介绍只是跳出当次循环。

后来在Vc里改了一下程序 加了一个括号,就清晰多了

  1. for(i=9;i<j;i++)
  2.         {
  3.             if(!(j%i)) break;
  4.         }
  5.             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) |
给主人留下些什么吧!~~