A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hejianchun 中级黑马   /  2015-9-21 13:07  /  1183 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这篇我就介绍一下我所学到的do...while 与 for循环体的应用,而在介绍之前,先来了解一下当中会用到的,自增自减运算符.
     自增自减运算符就是在程序设计中,经常遇到“i=i+1”和“i=i-1”这两种极为常用的操作。 C语言为这种操作?供了两个更为简洁的运算符,即++和--,分别叫做自增运算符和自减运算 符。

自增自减运算符的求职过程:

x++ 相当于 先用x执行某些操作 再 x = x+1; ---> x++ :先用 再加加 同理;

--x 相当于 x = x-1; 再用x执行某些操作。 ---> --x : 先减减 再用;
x-- 相当于 先用x执行某些操作 ,再 x = x-1; ---> x-- :先用 再减减 ;

举例说明:

如:++(a+b), 与5++, const int N=0; N++; 等都是错误的。 而(i++)+(j++)、++i+(++j)、++a+b++等,这些都是合法的.

接下来就开始正式了解 do...while 与 for循环体的应用.

1、while循环的基本格式和执行过程 一般格式:

while(表达式A){ 语句块1;

};  控制条件: 表达式A 循环体: 语句块1 ;如果表达式A为 真 则 执行语句块1 ,执行完语句块1 再去判断表达式A的值,如果为真则继续 执行语句块1,执行完语句块1之后再去判断表达式A,如此反复,直到表达式A的结果变为假, 则跳出循环。

而 do...while 是基于while 循环之上的一种表达式:

1、do ... while循环的基本格式 :  

do {

语句1; 语句2; ....

} while ( 条件 ); 直到型循环:先执行循环体,然后判断条件,直到条件为假就结束 .

2、do...while语句用法:

1)do...while语句的语义是:

当执行到do-while循环时,首先会执行一遍循环体中的语句。接着判断while中的条件,如果条 件成立,就执行循环体中的语句。然后再次判断条件,重复上述过程,直到条件不成立就结束 while循环

2)do-while循环的特点:

不管while中的条件是否成立,循环体中的语句至少会被执行一遍

int i=0; do{

        i++;
    } while(i<10);
接下来就直接代码体现:
int sum = 0; //这个事是描述求到的和
int i = 1;    // 描述每次变动的量
while (i<101){  //while 内则是进行循环,进行1加到100的运算结果;
sum = sum + i;
i++;
}
printf("sum = %d",sum);
下面再演示do...while 的表达式:
int sum = 0;

    int i =0;

    do {  //唯一的区别在于,在while中,会选择判断语句是否满足条件,如果满足条件才会,继续执行下一条语句,而do..while中,在执行到do这里时,不管语句对错,先执行,之后再进行判断:

        sum  = sum + i;

        i++;

    } while (i<101 );

  printf("sum = %d\n",sum);
上面简单介绍了一下do...while 与 while的应用,接下来便是for循环的应用了.
1、for循环的其他形式
1)表达式省略(三个表达式都可以省略)
如:for(; ;) 语句相当于while(1) 语句,即不设初值,不判断条件(认为表达式2为真值),循环变量不增
值。无终止地执行循环体。

2)多个非控制表达式类型
表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式。如:
for(sum=0,i=1;i<=100;i++) {

sum=sum+i;
}或

for(i=0,j=100;i<=j;i++,j--) {

k=i+j;}

2、for循环的嵌套

for循环可以嵌套 而且常用

嵌套格式

for(inti =0;i<5;i++){
printf("i = %d \n",i);
for (int j = 0; j < 3; j++) {

printf(" j = %d \n",j);
}

}在实际开发中 很少用到三层循环 。

接下来用一个最直接的表达式来做了详细的了解:打印水仙花(水仙花意思就是一个百位数的三位数字分别各自相乘三次,然后再相加,得到的数等于这个百位数).

//这是打印从100到999之间的水仙花数.

for (int i=100;i<=999;i++){

//获取百位数;

int b = i/100;  

//获取十位数字;

int s = i%100/10;

//获取个位数字

int g = i%10;

int  num = a*a*a+b*b*b+c*c*c;

if (num == i){

printf("%d\t",i)

}

}

最后这个程序在Xcode中打印出的结果便是 水仙花数.
以上就是我所简单介绍的一些内容,纯属我个人学习到的一些,很多不足之处,希望更多交流.

2 个回复

倒序浏览
学习了。挺不错的,我一直不明白为什么这个算法要叫水仙花数?这个概念,一牵扯弯弯绕的数学,就头晕
回复 使用道具 举报
貌似是套公式 DO WHILE  看了一下才刚明白 记得之前写个判断语句额时候 找不到办法 原来竟然是用DO WHILE
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马