简介:流程控制语句

1.分支语句(条件语句)

if/else(重点)

switch/case

2.循环语句

for(重点)

while

do while

分支语句

1> if/else

按照一定的条件执行不同的代码,可以使用分支语句。

if(逻辑表达式条件1){   //如果 必须出现1次

满足条件1时执行的语句;

}

else if(逻辑表达式条件2){  //或者  出现0-n次

满足条件2时执行的语句;

}

else{  //否则   出现0-1次

以上条件都不满足时执行的语句

}

练习:输入一个整数,判断 是正数、负数、零。

int a;

if(a>0){

printf("%d是正数\n",a);

}else if(a==0){

printf("%d是零\n",a);

}else{

printf("%d是负数\n",a);

}

注:

a> if/else 只会执行一个分支,因此,如果第一个分支满足条件了,不再执行后面的分支。-> 如果执行到了第n个分支,前面n-1个分支一定不成立。

b> 有else的分支语句必选其一执行,没有else的分支语句可选其一执行。

c> 如果分支内部只有一条语句,{}可以省略。一般执行:break/continue/return 语句时,{}通常省略。

d> 流程控制语句 需要 注意临界点的处理。

e> 经常 用于 处理 业务的需求。#include

/*

使用if语句来判断输入输入 某年某月 有几天

*/

int main()

{

printf("请输入年月\n");

int y,m,maxDay=31;

scanf("%d%d",&y,&m);

if(m<1 || m>12){

printf("输入非法\n");

return -1;

}

if(m==4||m==6||m==9||m==11){

maxDay = 30;

}

else if(m==2){

maxDay=28+

(y%4==0 && y%100!=0 || y%400==0);

/*if((y%4==0 && y%100!=0)||y%400==0)

maxDay = 29;

else

maxDay = 28;*/

}

printf("%d\n",maxDay);

return 0;

}

注:

a> if/else 只会执行一个分支,因此,如果第一个分支满足条件了,不再执行后面的分支。-> 如果执行到了第n个分支,前面n-1个分支一定不成立。

b> 有else的分支语句必选其一执行,没有else的分支语句可选其一执行。

c> 如果分支内部只有一条语句,{}可以省略。一般执行:break/continue/return 语句时,{}通常省略。

d> 流程控制语句 需要 注意临界点的处理。

e> 经常 用于 处理 业务的需求。

#include

/*

使用if语句来判断输入输入 某年某月 有几天

*/

int main()

{

printf("请输入年月\n");

int y,m,maxDay=31;

scanf("%d%d",&y,&m);

if(m<1 || m>12){

printf("输入非法\n");

return -1;

}

if(m==4||m==6||m==9||m==11){

maxDay = 30;

}

else if(m==2){

maxDay=28+

(y%4==0 && y%100!=0 || y%400==0);

/*if((y%4==0 && y%100!=0)||y%400==0)

maxDay = 29;

else

maxDay = 28;*/

}

printf("%d\n",maxDay);

return 0;

}

2> switch/case

格式:

switch(控制表达式){

case 常量表达式 :语句; break;

default: 语句;

}

控制表达式被当做整数处理,可以是字符,不能是浮点数或字符串

常量表达式必须是常量,如: 3   ‘A’   2+5

语句 可以是 零到多条

不允许重复分支(值不能相同)

default不一定在最后(但一般都在最后)

switch的执行机制,语句只有遇到break或者结束才能退出,否则会一直向下执行下去。

switch(a){

case 1:

printf("1\n");

break;

case 2:

printf("2\n");

break;

case 3:

printf("3\n");

break;

default:

printf("d\n");

}

2. 循环语句

1> for循环

循环语句 用于 反复执行某段代码,直到满足某些条件(退出条件而非循环条件)后退出。

for 循环的语法结构:

for(循环变量的初始化1;循环条件2;步进语句3){

需要反复执行的代码段 //循环体4

}

int i;

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

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

}

如果退出条件永远不能满足,叫 死循环(无限循环),ctrl+c可以退出死循环。

无限循环最简单写法: for(;;){  }

在C99中,支持:for(int i=0;i<10;i++){ },但是编译时要使用std=c99

#include

/*

练习:计算某班学生的总分、平均分和最高分。

分数需要输入,无需保存分数。

人数的问题:

1 先输入人数,在输入分数。(用这个)

2 可以用 -1 做退出的条件。

*/

int main()

{

int sum=0,max=0x80000000;//表示最小的int型整数1000...0000

double avg;

int i,num=0;

/*printf("请输入人数\n");

scanf("%d",&num);

if(num<1){

printf("非法人数\n");

return -1;

}

for(i=0;i

int temp;

scanf("%d",&temp);

sum = sum+temp;

if(max

}*///次数在循环前确定

for(;;){//循环次数不能确定,输入-1表示输入结束

int temp;

scanf("%d",&temp);

if(temp == -1) break;//退出循环

sum = sum+temp;

if(max

num++;

}

printf("sum=%d,avg=%lf,max=%d\n",

sum,1.0*sum/num,max);

return 0;

}

break 可以退出 循环/switch,退出函数用return。

循环可以分为:次数确定、次数不确定、无限循环。

次数确定的: int i; for(i=0;i

次数不确定:  for(;;){...if(条件) break; ...}

无限循环:   for(;;){...}

循环中经常嵌套另外的循环,叫多重循环,最常用的是二重循环

二重循环的难点在于内层循环次数的控制,具体公式如下:

i如果递增1,那么

j< m*i + n ;j++

m 是 内层循环递增的次数,如果递减取负数

n 是 内层循环第一次循环的次数

前提:i和j的初始值保持一致,最好都为0。

#include

/*

使用双重for循环打印

*

***

*****

*******

*********

*/

int main()

{

int i,j;//i控制行,j控制列

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

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

printf("*");

}

printf("\n");

}

return 0;

}

#include

/*

使用双重for循环

打印9*9乘法表

j*i

1*1=1

1*2=2 2*2=4

......

*/

int main()

{

int i,j;

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

for(j=1;j

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

}

printf("\n");

}

return 0;

}

2> while循环

while循环和for循环 除了语法不同,其他都可以互通。

语法:

循环变量的声明和初始化;

while(条件){

循环体;

步进语句;

}

#include

int main()

{

int sum=0;

while(1){

int temp;

printf("请输入数字(0退出)\n");

scanf("%d",&temp);

if(temp == 0) break;

sum += temp;

}

printf("sum = %d\n",sum);

return 0;

}

int i=0;

while(i<10){

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

i++;

}

while(1){} // 死循环

3> do-while循环

do while循环

语法:

循环变量的声明和初始化;

do{

循环体;

步进语句;

}while(条件);

do-while 循环 先do 后判断条件,所以 至少执行一次。

int i=10,j=10;

do{

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

i++;

}while(i<10);

while(j<10){

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

j++;

}

// 当i,j 初始 不满足条件时,do循环打印i,while不打印j。

// 当i,j 初始 满足条件时,无区别。

// 很多情况下,do循环和while(1){ ...if() break; }可以互通。

#include

/*

使用do-while来计算输入数字的位数

注意:do-while();分号结束

*/

int main()

{

int num,count=0;

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

scanf("%d",&num);

do{

num = num/10;

count++;

if(num==0) break;

}while(1/*num!=0*/);

printf("%d\n",count);

return 0;

}

注:

break和continue

continue用于循环内部,结束本次循环,继续下一次循环,如果下一次循环条件不成立,也会退出。

break 用于循环内部,中断所有循环,结束整个循环(如果是嵌套循环,break只是退出本层循环)。

c语言程序的流程控制语句,三 C语言流程控制语句相关推荐

  1. 经典C语言程序100例之八三

    经典C语言程序100例之八三 如题 话不多说了,直接上代码 如题 [程序83] 题目:求0-7所能组成的奇数个数. 1.程序分析: 话不多说了,直接上代码 2.程序源代码: void main() { ...

  2. 经典C语言程序100例之七三

    经典C语言程序100例之七三 如题 话不多说了,直接上代码 如题 [程序73] 题目:反向输出一个链表. 话不多说了,直接上代码 程序源代码: /reverse output a list/ #inc ...

  3. 经典C语言程序100例之六三

    经典C语言程序100例之六三 如题 话不多说了,直接上代码 如题 [程序63] 题目:画椭圆ellipse 1.程序分析: 话不多说了,直接上代码 2.程序源代码: #include "st ...

  4. 经典C语言程序100例之五三

    经典C语言程序100例之五三 如题 话不多说了,直接上代码 如题 [程序53] 题目:学习使用按位异或 ^ . 1.程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0 话不多说了,直接上代 ...

  5. 经典C语言程序100例之四三

    经典C语言程序100例之四三 如题 话不多说了,直接上代码 如题 [程序43] 题目:学习使用static的另一用法. 1.程序分析: 话不多说了,直接上代码 2.程序源代码: #include &q ...

  6. 统计字符 c语言程序,统计字符个数的C语言程序.doc

    统计字符个数的C语言程序.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文 ...

  7. c语言程序第一章编程,c语言程序的设计第一章 C语言编程入门.ppt

    c语言程序的设计第一章 C语言编程入门 第1章 C语言编程入门 本章是本书的入门篇,专为初学者熟悉编程过程.掌握程序结构而准备的. 本章学习目标 ? 1)? 能够通过模仿与改变来构造带有测试函数的C语 ...

  8. c语言程序 库 函数 tg,《C语言程序设计》——第三章PPT课件

    .,1,第三章数据类型.运算符和表达式Types,Operators,andExpressions,.,2,,,第三章数据类型.运算符和表达式,第一节C的数据类型第二节常量第三节变量第四节算术运算符和 ...

  9. 重庆理工大学c语言程序实验报告,重庆理工大学-C语言程序实验报告.doc

    重庆理工大学-C语言程序实验报告 程序设计基础C实验报告 PAGE 47 <程序设计基础C> 实 验 报 告 教学班级: 学号: 姓名: 课程教师: 实验辅导教师: 重庆理工大学计算机学院 ...

  10. c语言程序24转换12时间,C语言将24小时制转换为12小时制的方法

    C语言将24小时制转换为12小时制的方法 本文实例讲述了C语言将24小时制转换为12小时制的方法.分享给大家供大家参考.具体实现方法如下: /* * 24小时制转换为12小时制 */ #include ...

最新文章

  1. ubuntu su进入root权限
  2. 电脑已经连上网却显示没网图标小地球,导致国际游戏暴雪等软件无法运行(已解决)
  3. Asp.Net中用javascript实现弹出窗口永远居中
  4. mybatis学习(2):基本设置和核心配置
  5. 有问有答 | Storm技术内幕与实践精华问答
  6. 知乎高赞:Serverless 能取代微服务吗?
  7. 蓝军HVV实用工具和网站总结
  8. Hadoop学习---Zookeeper+Hbase配置学习
  9. ajax中json响应
  10. Java数据类型,Hibernate数据类型,标准sql数据类型之间的对应表
  11. linux 提示libaio.so.1,解决Mysql报错缺少libaio.so.1
  12. PS基础,灰度色彩模式
  13. ewebeditor 2.8.0目录遍历漏洞——漏洞复现
  14. php 生成条码插件,php 条形码生成插件Composer组件|php条形码code128实现方法-爱测速网...
  15. flutter填坑之旅(环境搭建篇--mac系统)
  16. 前端体系必备的软技能和知识点
  17. 哈工大计算机系名单,哈工大计算机学部公布拟录取名单,计算机科学与技术仅录29人!...
  18. Java检测IP地址输入是否正确
  19. 短租民宿多平台房态同步管理系统
  20. Linux笔记 No.17---(磁盘分区fdisk,gdisk,parted、格式化mkfs,mke2fs、挂载mount、卸载umount、df、du、lsof命令)

热门文章

  1. 警告!从ISO映像创建的U盘可能无法完全启动!Unknown引导扇区不支持NTFS文件系统
  2. Maya 2013 下载以及破解教程
  3. 掩码、反掩码和通配符
  4. DELPHI 颜色表
  5. 冰箱中的爱马仕没跑了,用COLMO来开启你的美好新春吧
  6. oracle 存储过程语法例子
  7. 35页智慧安防小区管控系统 解决方案
  8. 胡喜:从 BASIC 到 basic ,蚂蚁金服技术要解决两个基本的计算问题
  9. URP——后期处理特效
  10. 丢手帕问题(约瑟夫问题-数组实现)