1.真值的问题:

//C语言对真值的约束很少,这可能带来一些问题
#include <stdio.h>int main(void) {long num,sum=0L;int status;printf("enter an integer to be summed(q to quit):");status=scanf("%ld",&num);while (status=1) {sum+=num;printf("enter next integer(q to quit):");status=scanf("%ld",&num);}printf("result is %ld\n",sum);return 0;
}
//结果:
//enter an integer to be summed(q to quit):20
//enter next integer(q to quit):12
//enter next integer(q to quit):q
//enter next integer(q to quit):enter next integer(q to quit):...
//(将不断输出"enter next integer(q to quit):")//说明:
每次判定条件时,status=1会将status赋值为1,故表达式的值也为1,于是永远为true
输入q后读取失败,q会被保留在stdin中,因此下1次读取时不会要求输入,并且也会读取失败
实际上,本程序中的status=1应被修改为status==1进行比较时,如果1方是常量,将常量放在左侧有助于编译器捕获错误,如:
5=canoes;//语法错误
5==canoes;//判定canoes是否等于5
因为C语言不允许给常量赋值,而:
cnoes=5;
是允许的,但可能是1个逻辑错误

2._Bool类型:

表示真/假的变量称为"布尔变量"(Boolean Variable),_Bool就是C语言中布尔变量的类型名
C99中增加了该数据类型,之前C语言一直使用int类型来表示真/假值
_Bool类型变量只能存储0(假)/1(真),如果把其他非0值赋给_Bool类型变量,该变量会被设为1C99提供了stdbool.h,该头文件让bool成为_Bool的别名,并把true/false定义为值为1/0的常量
include该头文件后,写出的代码可与C++完全兼容,因为C++把bool/true/false定义为关键字//实例:
#include <stdio.h>int main(void) {long num,sum=0L;_Bool qon;printf("enter an integer to be summed(q to quit):");qon=scanf("%ld",&num);while (qon) {sum+=num;printf("enter next integer(q to quit):");qon=scanf("%ld",&num);}printf("result is %ld\n",sum);return 0;
}
//结果:
//enter an integer to be summed(q to quit):12
//enter next integer(q to quit):33
//enter next integer(q to quit):q
//result is 45

3.不确定循环(Indefinite Loop)和计数循环(Counting Loop):

//不确定循环是指预先不知道要执行多少次的循环:
int n=10,a=0;
while (a<n) {scanf("%d",&a);printf("%d\n",a);
}//计数循环是指预先就知道要执行多少次的循环:
const int n=12;
int c=1;
while (count<n) {printf("%d\n",c);c++;
}

4.for循环的其他用法:

//使用字符计数(假定该系统使用ASCII码):
char ch;
for (ch='a';ch<='z';ch++) {printf("%c is %d\n",ch,ch);
}
//结果:
//a is 97
//b is 98
//  ...(此处省略)
//y is 121
//z is 122////可以省略某些表达式(但分号不能省略):
int ans=2,n;
for (n=3;ans<=25;) {ans*=ans;printf("%d\n",ans*ans);
}
//结果:
//4
//16
//256////初始化语句不一定是赋值:
int a=0;
for (printf("start\n");a<5;a++) {printf("now is %d\n",a);
}
//结果:
//start
//now is 0
//now is 1
//now is 2
//now is 3
//now is 4////可以使用逗号运算符:
const int fo=46,no=20;//邮费:第1盎司为46美分,之后每盎司为20美分
int o,c;//重量(单位为盎司),总费用
for(o=1,c=fo;o<=16;o++,c+=no) {printf("%-5d   $%4.2f\n",o,c/100.0);
}
//结果:
//1       $0.46
//     ...(此处省略)
//16      $3.46

5.如何选择循环/分支:

入口推荐循环用得比出口推荐循环多,因为:
①一般原则是在执行循环前测试条件比较好
②测试放在循环开头,这样可读性比较高
③在许多应用中要求如果一开始就不满足条件,则直接跳过循环for循环和while循环完全等价,可以依据个人喜好来选择
一般而言,涉及初始化/更新变量(如索引计数)时,使用for循环,否则使用while循环//如果根据普通变量进行选择,只能使用if...else...语句
如果根据变量是否在某范围内决定程序流的去向,使用if...else...语句更方便不过switch语句的运行效率更高,生成的代码更少

6.switch语句中的枚举:

1个switch语句中不能使用多个枚举中的值#include <stdio.h>enum WeekDay {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
};
enum Boolean {YES,NO
};int main(void) {enum WeekDay day=Sunday;enum Boolean b=NO;switch (b) {case Monday:printf("Monday\n");break;case Tuesday:printf("Tuesday\n");break;case Wednesday:printf("Wednesday\n");break;case Thursday:printf("Thursday\n");break;case Friday:printf("Friday\n");break;case Saturday:printf("Saturday\n");break;case Sunday:printf("Sunday\n");break;case YES:printf("YES\n");break;case NO:printf("NO\n");break;}return 0;
}
//报错:
//[Error] duplicate case value
//[Error] previously used here
//[Error] duplicate case value
//[Error] previously used here

7.switch语句的多重标签:

switch(<表达式>) {case <值11>:case <值12>:...:<语句1>;break;...default:<语句n+1>;break;
}
//如果表达式是值11或值12...,都执行语句1//实例:
int num=13;
switch (num) {case 12:case 13:printf("AAA\n");break;//结果:AAAcase 15:case 17:printf("BBB\n");break;
}

8.switch语句中的多条命令:

switch(<表达式>) {case <值1>:...:<语句11>;<语句12>;...break;//break也是1条语句...default:<语句(n+1)1>;<语句(n+1)2>;...break;
}

C语言细节 流程控制相关推荐

  1. c语言程序流程控制(下)

    c语言程序流程控制 嵌套 switch分支结构 语法 例题 switch细节 练习 switch与if语句的比较 循环控制 for循环 练习题 while循环控制 do while 循环 多重循环控制 ...

  2. PHP语言之流程控制 educoder答案

    PHP语言之流程控制 educoder答案 第1关:条件语句 - 学生测评 期末考试结束了,老师需要统计学生的成绩并根据成绩对学生本学期的表现作出一个评价,老师的评价规则是: 90100分:优秀809 ...

  3. python流程控制语句-python语言的流程控制

    流程控制 1.python语句的分类 2.流程控制相关的分类 3.顺序结构 4.分支结构 5.循环结构 6.其他流程控制语句 1.python语句的分类 1.单行代码 一行的python代码 2.代码 ...

  4. JAVA语言中流程控制(顺序结构、判断语句、循环语句)

    流程控制: 程序在执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的,所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现想要的功能.java中流程控制有:顺 ...

  5. c 语言程序流程控制应用实验报告,程序流程控制实验报告.doc

    .net程序设计实验报告 2011年 11 月 19日 学 号1008114082姓 名左雪敬时 间下午7-8节专 业计算机科学与技术班 级10级2班实验题目: 程序流程控制实验目的: 1:掌握常量和 ...

  6. MySQL学习(三) 数据类型约束、TCL语言、流程控制

    数据类型和约束(ddl) 数据类型 一.数值型 1.整型 tinyint.smallint.mediumint.int/integer.bigint 1 2 3 4 8 特点: ①都可以设置无符号和有 ...

  7. c语言 if 多个判断条件执行顺序_C语言之流程控制选择语句

    2020.08.02 C语言分享 ● ● ● #01#前言

  8. c 语言程序流程控制应用实验报告,PLC可编程序控制器及应用课程实验报告

    可编程序控制器及应用课程实验报告 可编程序控制器及应用课程实验报告 <可编程序控制器及应用>实验报告一 实验名称:PLC基本指令实验 1.实验目的与要求 开关量信号的边沿检测. 用PLS ...

  9. C语言中流程图的主要作用是,C语言 三大流程控制

    1>顺序流程图 2>悬着流程图 在计算机中,如果指定逻辑值,结果为0才为假,反之则为真,非0则1 (1) if(条件) { 语句体 } (2)if(条件) { 语句体 } else { 语 ...

最新文章

  1. linux free 命令 显示内存使用情况
  2. spring2.5+struts2+hibernate+mysql
  3. hadoop lambda_Delta架构:统一Lambda架构并利用Hadoop / REST中的Storm
  4. mysql数据库表名大小写敏感_Mysql数据库名和表名的大小写敏感性问题
  5. 2017.6.5 YY的GCD 失败总结
  6. MySQL学习(一)—初识MySQL
  7. PHP 编写接口并在header中进行简单的校验
  8. 犀牛脚本插件-python-vb-编辑使用方式-rhino脚本插件
  9. android 人脸 动画表情包,巧笑表情包怎么制作 Android好玩的emoji人脸表情软件推荐...
  10. 转 我奋斗了18年,不是为了和你一起喝咖啡!
  11. 计算机用word做贺卡,利用word制作贺卡
  12. 用户评分系统设计与实现(风控方向)
  13. 路由器,你身边的“地雷”?
  14. Unity 鼠标拖动UI
  15. C#,骑士游历问题(Knight‘s Tour Problem)的恩斯多夫(Warnsdorff‘s Algorithm)算法与源代码
  16. 研究生计算机专业的方向有哪些?
  17. 决策树的生成与剪枝CART
  18. 7-FreeRTOS软件定时器
  19. 美团拼多多挑起社区团购新战事,谁能“见血封喉”?
  20. 使用vscode查看Hex或UTF-8编码

热门文章

  1. C# 实现多张图片合成一张gif(录屏可能会用到)
  2. [联邦学习TFF]构建自己的联邦学习模型
  3. 使用python中的tkinter模块制作一个学习打卡小软件
  4. 加密货币开年第一波行情,看看谁涨得最猛
  5. 套料软件XSuperNEST更新换代至V2.0
  6. python3.8.8 :pygame实现角色动画
  7. 中兴新支点操作系统_国产操作系统中兴新支点,U盘安装方法教程
  8. HDU 6445 Search for Answer(最小费用最大流-mcmf)
  9. Cura 3D切片软件如何设置成中文
  10. 《半条命2》最新64位版本游戏快速评测报告