程序结构:

  1. 顺序结构
  2. 条件结构(分支结构)

if结构,if…else结构 ,多重if分支结构,switch结构

  1. 循环结构:做重复的事情

while循环,do..while循环和for循环。

写循环结构主要注意两点:循环条件(做多少遍)和循环体(重复做的事情)。

while结构语法:

while(条件){

//循环体;

}

特点:先判断,后执行,条件不满足一次都不执行。

注意:检查循环条件是否恒成立,如果循环条件恒成立将造成死循环。

示例1:

int i=1;

while(i<=5){

printf("第%d遍:我是最棒的!\n",i);

i++;//i=i+1;

}

示例2:

int num=1,result;

while(num<=10){

result = num*10;

printf("%d*10=%d\n",num,result);

num++;

}

示例3:

int realPrice=1600;

int price,i=1;

while(i<=5){

printf("第%d次,输入商品的价格",i);

scanf("%d",&price);

if(price<realPrice){

printf("低了\n");

}else if(price==realPrice){

printf("中了\n");

break;//跳出循环

//i=10;

}else{

printf("高了\n");

}

i++;

}

printf("您一共猜了%d次\n",i);

do…while循环结构:

语法:do{

循环体;

}while(条件);

特点:先执行,后判断, 至少执行1次

示例1:

//计算100以内所有3的倍数和个位或十位带3数字之和。

int i=0,sum=0,ge,shi;

do{

ge = i%10; //获取个位

shi = i/10%10;//获取十位

if(i%3==0||ge==3||shi==3){

sum+=i;

}

i++;

}while(i<=100);

printf("100以内所有3的倍数和带3数字之和为:%d",sum);

示例2:

//猜数游戏。要求猜一个介于1~10之间的数字,并统计用户所用的次数。

int number=8,guess;

int count=0;//用于统计用户猜的次数

do{

printf("请输入一个1~10之间的整数:\n");

scanf("%d",&guess);

if(guess>number){

printf("大了\n");

}else if(guess<number){

printf("小了\n");

}

count++;//更加次数

}while(guess!=number);

printf("您一共用了%d次猜到了答案%d\n",count,number);

循环嵌套: 一个循环结构中包含其他循环结构

循环嵌套的特点:只要当内层循环结束之后,才会执行下一趟外层循环。

while(条件){

while(条件){

}

}

示例1:打印矩形

//打印4行8列的矩形

int i=0,j;

//外层循环控制行数

while(i<4){

j=0;

while(j<8){ //内层循环控制每行打印星号的个数

printf("*");

j++;

}

printf("\n");//换行

i++;

}

示例2: 打印直角三角形

*

**

***

****

*****

int i=0,j;

while(i<5){//外层循环控制打印的行数

j=0;

while(j<=i){//内层循环控制打印星号的个数

printf("*");

j++;

}

printf("\n");

i++;

}

示例3: 倒直角三角形

*****

****

***

**

*

int i=0,j;

while(i<5){//外层循环控制行数

j=0;

while(j<5-i){//内层循环控制星号的个数

printf("*");

j++;

}

printf("\n");//换行

i++;

}

示例4: 打印平行四边形(倒直角三角形+矩形)

********

********

********

********

实现思路: 外层循环控制行数,内层循环控制星号或空格的个数

每一行有两部分:空格+星号

i=0,第一行:3个空格+8个星号

i=1,第二行:2个空格+8个星号

i=2,第三行:1个空格+8个星号

i=3,第四行:0个空格+8个星号

int i=0,j,k;

while(i<4){//外层循环控制行数

j=0;

k=0;

//控制空格的循环

while(j<3-i){

printf(" ");

j++;

}

//控制星号的循环

while(k<8){

printf("*");

k++;

}

printf("\n");

i++;

}

示例5: 使用do...while嵌套打印奇数班直角三角形

*

***

*****

*******

分析:

i=0,第一行:1个星号

i=1,第二行:3个星号

i=2,第三行:5个星号

i=3,第四行:7个星号

int i=0,j;

//外层循环控制打印的行数

do{

//内层循环控制打印星号的个数

j=0;

do{

printf("*");

j++;

}while(j<2*i+1);

printf("\n");//换行

i++;

}while(i<4);

示例6:打印倒直角三角形

*******

*****

***

*

i=0;打印7个星号

i=1;打印5个星号

i=2;打印3个星号

i=3;打印1个星号

int i=0,j;

do{

j=0;

do{

printf("*");

j++;

}while(j<7-2*i);

printf("\n");

i++;

}while(i<4);

示例7: 正等腰三角形:

*

***

*****

*******

分析:

外层循环控制行数:4行

内层循环控制每行打印的内容: 空格+星号

i=0,第一行: 3个空格+1个星号

i=1,第二行: 2个空格+3个星号

i=2,第三行: 1个空格+5个星号

i=3,第四行: 0个空格+7个星号

int i=0,j,k;

while(i<4){//外层循环控制行数

//空格部分

j=0;

while(j<3-i){

printf(" ");

j++;

}

//星号部分

k=0;

while(k<2*i+1){

printf("*");

k++;

}

printf("\n");

i++;

}

示例8: 倒等腰三角形

*****

***

*

分析:每行有空格和星号组成

i=0;第一行: 0个空格+5个星号

i=1;第二行: 1个空格+3个星号

i=2;第三行: 2个空格+1个星号

int i=0,j,k;

while(i<3){

//空格

j=0;

while(j<i){

printf("$");

j++;

}

k=0;

//星号

while(k<5-2*i){

printf("*");

k++;

}

printf("\n");

i++;

}

示例9: 打印菱形

*

***

*****

*******

*****

***

*

分析:正的等腰三角形+倒的等腰三角形

int i=0,j,k;

while(i<4){//外层循环控制行数

//空格部分

j=0;

while(j<3-i){

printf(" ");

j++;

}

//星号部分

k=0;

while(k<2*i+1){

printf("*");

k++;

}

printf("\n");

i++;

}

//倒等腰三角形

i=0;

while(i<3){

//空格

j=0;

while(j<=i){

printf(" ");

j++;

}

k=0;

//星号

while(k<5-2*i){

printf("*");

k++;

}

printf("\n");

i++;

}

for循环结构: 当明确知道循环次数时,for循环更加简洁。

语法:

for(表达式1;表达式2;表达式3){

//循环体;

}

执行顺序: 1.第一步执行表达式1,表达式1代表循环变量的初始化,只会执行1次.

2. 第二步执行表达式2, 表达式2代表循环条件.

3. 第三步:执行循环体

4. 第四步:执行表达式3,表达式3:更改循环变量。

注意:从语法上表达式1,表达式2和表达式3都可以缺少。但是如果缺少表达式2(条件)或表达式3(更改循环变量)经常会导致死循环发生。从语法上说for中的分号(;)不能缺少。

示例1:

int i;

for(i=0;i<10;i++){

printf("我是徐晓东,我冤枉!\n");

}

示例2: 计算阶乘: 5!=5*4*3*2*1

int i,number,fact=1;

printf("请输入一个正整数:\n");

scanf("%d",&number);

for(i=1;i<=number;i++){

fact=fact*i;

}

printf("%d的阶乘为%d",number,fact);

示例3: 输出所有水仙花数

分析:水仙花数是一个三位数: 个位^3+十位^3+百位^3=这个数

1.获取所有的三位数

2.从三位数中获取个位,十位,百位

3.判断这个数是否为水仙花数:个位^3+十位^3+百位^3==这个数

4.将水仙花数输出

int i,ge,shi,bai;

for(i=100;i<1000;i++){

ge = i%10;//个位

shi = i/10%10;//十位

bai = i/100;//百位

if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai){

printf("%d\t",i);

}

}

示例4: 打印99乘法表:

1*1=1

2*1=2 2*2=4

3*1=3 3*2=6 3*3=9

int i,j;

//外层循环控制行数

for(i=1;i<=9;i++){

//内层循环控制每行的列数

for(j=1;j<=i;j++){

printf("%d*%d=%d\t",i,j,i*j);

}

printf("\n");

}

示例5: 打印正等腰三角形

*

***

*****

*******

int i,j,k;

//外层循环控制行数

for(i=0;i<4;i++){

//空格

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

printf(" ");

}

//星号

for(k=0;k<2*i+1;k++){

printf("*");

}

printf("\n");

}

break和continue关键字:

break:

1.如果使用在switch结构中case语句中,跳出当前的case语句

2.如果使用循环结构中,跳出当前循环。

continue:如果使用在循环结构中,代表跳过本次循环,开始下一次循环

while(条件){

break;

….

}

while(条件){

continue;

….

}

示例1:

int i;

for(i=0;i<10;i++){

if(i%3==0){

//break;//跳出循环

continue;//跳过本次循环

}

printf("%d\t",i);

}

示例2:

//逢"3"过小游戏

int i;

for(i=1;i<=50;i++){

//i%3==0:3的倍数; i%10==3:个位带3; i/10==3:十位带3

if(i%3==0||i%10==3||i/10==3){

printf("过\t");

continue;

//break;

}

printf("%d\t",i);

}

示例3:输出100~200之间所有素数(只能被1和本身整除的数)

分析:1.获取100~200之间的数

2.将这个数从2开始除到(数值-1),如果中间除的过程中出现除尽情况,跳出

int i,j,flag;

for(i=100;i<=200;i++){

flag=0;//flag代表是否能除尽

for(j=2;j<i;j++){

if(i%j==0){

flag=1;//除了1和他本身之外有能除尽的数

//break;

}

}

if(flag==0){

printf("%d\t",i);

}

}

C语言之循环结构的更多相关文章

  1. 【C语言】-循环结构-for语句

    for语句: for (表达式1;表达式2;表达式3) { 循环语句 } 表达式1 给循环变量赋初值 表达式2 为循环条件 表达式3 用来修改循环变量的值,称为循环步长. for语句的执行流程: 例: ...

  2. C语言基础-循环结构

    循环结构while while循环-图例 while循环-格式 while ( 条件 ) { 语句1; 语句2; .... } 如果条件成立,就会执行循环体中的语句(“循环体”就是while后面大括号 ...

  3. 【C语言】-循环结构-while语句

    while语句: while循环可实现"当型"循环,即当条件成立时,执行循环体.适合无法确定循环执行次数的情况. while (表达式) { 循环语句 } 注意: 表达式为循环控制 ...

  4. 【学习笔记】【C语言】循环结构-for

    1.使用: for (语句1; 条件; 语句2) {     循环体 }   语句1:初始化语句 语句2:增量语句(执行完循环体后再执行的语句)   1.for一开始就会执行一次语句1(整个for循环 ...

  5. 【学习笔记】【C语言】循环结构-while

    1. 简单使用 while ( 条件 ) {     语句1;     语句2;     .... } 如果条件成立,就会执行循环体中的语句(“循环体”就是while后面大括号{}中的内容).然后再次 ...

  6. C语言之循环结构 for(二)

    一 for循环的嵌套使用 for循环的嵌套语法: for(int i =0;i<10;i++){ for(int j=0;j<5;j++){ } } 一般用来打印平面,或者控制平面,或者说 ...

  7. C语言之循环结构 for(一)

    一 for循环的介绍 语法: for(表达式1;表达式2;表达式3){ 循环体; } 循环步骤: A.执行表达式1,执行完毕跳转到B B.判断表达式2的结果是否为真,如果为真,跳转到C,否则跳转到E ...

  8. C语言--单层循环结构

    一.PTA实验作业 题目1:最佳情侣身高 1.实验代码 int N, i; float height; char sex; printf("输入用户个数:\n"); scanf(& ...

  9. 【学习笔记】【C语言】循环结构-do while

    用法: while (条件) {     } do {   } while(条件);   while和do-while的区别 1.很多情况下,while和do while可以互换   2.while特 ...

随机推荐

  1. 浏览器特性检测插件Feature.js

    <script src="js/feature.js"></script> if (feature.webGL) { console.log("你 ...

  2. STAR法则的感想

    STAR法则百度百科上被解释为,面试官用于收集面试者信息的工具,而我个人理解,它更像是一个表达技巧,叙述结构,我们先来看看什么是STAR法则: STAR法则,即为Situation Task Acti ...

  3. 记一次 Newtonsoft.Json 巧妙的用法(C#)

    数据添加的功能 有一个表格提交数据如下: 是否选择和文本值.分开保存到数据库太麻烦.取得时候也麻烦 想到了存成json数据.一个字段就可以了. html代码: <table class=&quo ...

  4. 使用Maven构建SSH

    本人自己进行的SSH整合,中间遇到不少问题,特此做些总结,仅供参考. 项目环境: struts-2.3.31 + spring-4.3.7 + hibernate-4.2.21 + maven-3.3 ...

  5. 一道CVTE前端二面笔试题

    题目:给你一个数组,输出数组中出现次数第n多的数字; 比如:[1,1,1,2,2,2,3,3,4,4,5,5,6,6,7]; 1---3次 2---3次 3---2次 4---2次 5---2次 6- ...

  6. 【理论篇】Percona XtraBackup 恢复单表

    小明在某次操作中,误操作导致误删除了某个表,需要立即进行数据恢复. 如果是数据量较小的实例,并且有备份,即便是全备,做一次全量恢复,然后单表导出导入,虽然麻烦一点,却也花不了多少时间:如果是数据量大的 ...

  7. CF #April Fools Day Contest 2016 E Out of Controls

    题目连接:http://codeforces.com/problemset/problem/656/E 愚人节专场的E,整个其实就是个Floyd算法,但是要求代码中不能包含 definedoforfo ...

  8. 你想要的都在这里,ASP.NET Core MVC四种枚举绑定方式

    前言 本节我们来讲讲在ASP.NET Core MVC又为我们提供了哪些方便,之前我们探讨过在ASP.NET MVC中下拉框绑定方式,这节我们来再来重点看看枚举绑定的方式,充分实现你所能想到的场景,满 ...

  9. Arraylist动态扩容详解

    ArrayList 概述 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长. ArrayList不是线程安全的,只能用在单线程环境下. 实现了Serializable接口,因此它支 ...

  10. 【原创】bootstrap框架的学习 第八课 -[bootstrap表单]

    Bootstrap 提供了下列类型的表单布局: 垂直表单(默认) 内联表单 水平表单 吹着表单或基本表单 向父 <form> 元素添加 role="form". 把标签 ...