iOS基础(c)—程序结构的分类
来源:互联网 发布:淘宝卖家折扣出错 编辑:程序博客网 时间:2024/06/04 23:23
------ 知之博客 期待与您交流! -------
一 程序结构的分类
程序结构分为三类:
1)顺序结构
顺序结构是最简单的程序结构,它是由若干个一次执行的处理步骤组成的。
按照顺序依次执行A、B程序块。如图:
顺序结构
2)分支结构
根据给定的条件进行判断,由判断的结果决定执行两个分支中的一个分支。如图:当P为真时执行A程序块,否则执行B程序块。无论条件P是否成立,A和B程序块只能有一个被执行到,执行之后就离开了该选择结构。当B为空时,条件P为假时不执行任何操作。
分支结构
3)循环结构
又称为重复结构,给定条件成立时反复执行某一程序段。
C语言中主要的循环语句由三个:
(1) while循环语句
(2) do-while循环语句
(3) for循环语句
流程图如下:
循环结构
二 分支结构
1. if语句实现分支控制
一般形式(第一种形式):表达如果表达式为真,执行语句块1,否则不执行。
If(表达式) { 语句块1; } 后续语句;
原理:
先计算小括号中的表达式的值
真(1)
会执行大括号中的语句
假(0)
不会执行大括号中的语句
例一:猜数字游戏,输入一个数字,判断是不是5?如果是5打印“恭喜你”,如果不是5打印“很可惜”。
代码如下:
#include <stdio.h><pre name="code" class="cpp"> int main(int argc, const char * argv[]) { //先定义变量 int num=0; //提示用户输入一个数 printf("请输入一个数字:\n"); //接收用户输入的数 scanf("%d",&num); //判断这个数是否等于5 if (num == 5) { printf("恭喜你!\n"); } //如果等于5 提示 恭喜你 printf("num =%d\n",num); //如果不等于 5 提示很可惜 if (num != 5) { printf("很可惜!\n"); } return 0; }
2. if…else…语句及嵌套
格式一(无嵌套):
if ... else .... 的分支结构 if(表达式){ 语句块1; //如果表达式为真,会执行此处的代码 }else{ //如果表达式为假了,会执行此处的代码 语句块2; }
格式二(嵌套):
if ... else .... 的分支结构 if(表达式){ 语句块1; //如果表达式为真,会执行此处的代码 }else{ //如果表达式为假了,会执行此处的代码 语句块2; }
例一的改进:
void test(){ int num=0; //先定义变量 printf("请输入一个数字:\n"); //提示用户输入一个数 scanf("%d",&num); //接收用户输入的数 //判断这个数是否等于5 // num == 5 为假可能是大于5,也可能是小于5 if (num == 5) { printf("恭喜你!\n"); //如果等于了5,提示恭喜你 }else{ printf("很可惜!\n"); //否则提示很可惜 } } int main(int argc, const char * argv[]) { //先定义变量 int num=0; //提示用户输入一个数 printf("请输入一个数字:\n"); //接收用户输入的数 scanf("%d",&num); //判断这个数是否等于5 // num == 5 为假可能是大于5,也可能是小于5 if (num == 5) { printf("恭喜你\n"); }else{ //再判断,如果这个数大于5 提示大于5 if (num > 5) { printf("大于5了\n"); }else{ //否则提示 小于5 printf("小于5了\n"); } } return 0; }
例二:输入一个属于0-100的成绩,按0-59(E),60-69(D),70-79(C),80-89(B),90-100(A) 分成几等。
条件:
分数>=0&&分数<=59 E
分数>=60&&分数<=69 D
分数>=70&&分数<=79 C
分数>=80&&分数<=89 B
分数>=90&&分数<=100 A
分数<0||分数>100 不合法
代码如下:
#include <stdio.h> int main(int argc, const char * argv[]) { //定义变量,保存用户输入的分数 int score=0; //提示用户输入一个分数 printf("请输入一个分数:\n"); //接收分数 scanf("%d",&score); //校验分数是否合法(score<0||score>100) if (score<0 || score > 100) { printf("分数不合法!\n"); }else{ //当分数合法以后,再判断等级 if (score<=59) { //0-59 想反 60-100 printf("E\n"); }elseif(score<=69){ //60-69 70-100 printf("D\n"); }else if (score<=79){//70-79 80-100 //C printf("C\n"); }else if(score<=89){//80-89 90-100 //B printf("B\n"); }else{ //90-100 printf("A\n"); } } return 0; }
3. Switch语句
格式:
switch(表达式){ case 常量表达式1: 语句1; case 常量表达式2: 语句2; case 常量表达式3: 语句3; case 常量表达式4: 语句4; case 常量表达式5: 语句5; case 常量表达式6: 语句6; default: printf("其他"); }
例三:接受用户输入,控制台打印菜名
代码如下:
#include <stdio.h> int main(int argc, const char * argv[]) { //提示用户点菜,1-7 printf("本店开张,请点菜,请输入序号1-7\n"); //定义变量,接收用户输入的内容 int no; //接收用户输入的内容 scanf("%d",&no); if (no<1 || no > 7) { printf("本店厨师还在写代码,还没时间更新菜谱\n"); return 0; } //判断(switch) // 1 2 3 4 5 switch(no){ case 1: printf("玉米炒葡萄\n"); case 2: printf("月饼炒辣椒\n"); case 3: printf("爆炒妙脆角\n"); case 4: printf("番茄炒卤蛋\n"); case 5: printf("南瓜炒猪肝\n"); case 6: printf("苹果炒西瓜\n"); case 7: printf("天地无极\n"); } return 0; }
当输入结果4的时候,结果如下:
本店开张,请点菜,请输入序号1-7 4 番茄炒卤蛋 南瓜炒猪肝 苹果炒西瓜 天地无极
很明显不是我们想要的结果,那么问题出在哪里呢?首先我们了解一个概念:case穿透
某个case语句执行完成后,并没有结束,而直接向下执行其他的case语句这种现象就称之为case穿透
如何防止case穿透?
我们需要在每一个case语句结束之后,加上一句话:break; break 作用是结束switch语句。
例四:switch语句与if语句混合使用案例:实现简单的计算器
代码如下:
#include <stdio.h> int main(int argc, const char * argv[]) { //定义变量保存用户输入的两个值 运算结果 输入的符号 int num1,num2,op; float result=0.0f; //提示用户输入一个数 printf("请输入第一个数:\n"); //接收用户输入的第一个数 scanf("%d",&num1); //提示输入运算符,然后在接收 printf("请选择运算符:0.+ 1.- 2.* 3./\n"); //提示输入运算符,然后在接收 scanf("%d",&op); if (op<0 || op >3) { printf("运算符不合法\n"); return 0; } //提示输入另外一个数,然后再接收 printf("请输入另外一个数:\n"); //接收用户输入的第一个数 scanf("%d",&num2); //开始计算 //判断符号,进行计算 switch (op) { case 0: result = num1+num2; break; case 1: result = num1-num2; break; case 2: result = num1*num2; break; case 3: result =num1/(float)num2; } printf("%d 和 %d运算的结果%.2f\n",num1,num2,result); return 0; }
三 循环结构
循环结构是程序中一种很重要的结构,其特点是,在给定条件成立是,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序称为循环体。循环结构简单来说就是:循环一次又一次的执行相同的代码块。
1. While循环
格式:
while(表达式) { 语句块; }
例五 计算1+2+3+.....+100 的和
代码如下:
void test2(){ //计算1+2+3+.....+100 的和 //定义一个变量,存储当期执行的次数 int i=1,sum=0; int n=0; //假设从键盘上输入一个数,计算1+2+3+....+n 的和 printf("请输入一个数字:\n"); //从键盘上接受一个数 scanf("%d",&n); while (i<=n) { //用sum的值+i的值 sum = sum+i; //i = 1 sum = 1 //0+1, (0+1)+2 //让循环条件为假的控制 // i=i+1; i++; } printf("1+2+3+....+%d=%d\n",n,sum); } int main(int argc, const char * argv[]) { test2(); return 0; }
使用循环的过程中一定要注意防止死循环的出现。
2. do-while循环
语法格式:
do{ //循环体 }while(条件);
注意点: do-while语句之后要有分号结束
例六 //1+2+3+....+100
代码如下:
#include <stdio.h> int main(int argc, const char * argv[]) { int i=1,sum=0; do{ //累加: 在上一次结果之上再加上某一个值 sum+=i; i++; }while (i<=100); printf("sum =%d\n",sum); return 0; }
关于while和do while对比
1)当循环控制条件第一次判断不为假的时候while和 dowhile循环体执行的次数相同;
2)当循环控制条件第一次判断为假的时候while循环的循环体执行 0次,do while执行1次;
3. For循环
for循环使用的频率是比较高的,接下来我们就用一个实际例子来对for循环做详细介绍。
用for循环实现打印 1000次我爱你
构成循环有三个条件
1)控制条件 i<1000
2)循环体 printf("第%d次说:我爱你!\n",i+1);
3) 能够让控制条件为假的操作 i++
注意:
1、初始化语句只会被执行1次
2、当条件不满足的时候,循环就结束
代码如下:
for(int i=0;i<1000;i++){ printf("第%d次说:我爱你!\n",i+1); }
如果控制条件没有定义的话,就有可能构成死循环,部分代码块如下:
//for语句的死循环
for(;;){ printf("班长喜欢凤姐!\n"); } printf("\n");
例七 for循环的嵌套使用。打印以下图形
*
***
*****
*******
*********
***********
代码如下:
#include <stdio.h> int main(int argc, const char *argv[]) { //控制行数 for (int i=1; i<=6; i++) { //控制空白 for (int j=0; j<=6-i; j++) { printf(" "); } //控制 * for (int k=0; k<2*i-1; k++) { printf("*"); } //打印回车 printf("\n"); } return 0; }
4. break和continue的区别
首先来看一个例子,根据这个例子找出break和continue的区别所在。
例八 把100~200之间的不能被3整除的数输出
#include <stdio.h> int main(int argc, constchar * argv[]) { //把100~200之间的不能被3整除的数输出 // i%3!=0 // i%3==0 continue; for (int i=100; i<=200; i++) { if (i%3==0) continue; printf("%d\t",i); } printf("\n"); return 0; }
运行结果为:
100101103104106107109110112113 115116118119121122124125127128 130131133134136137139140142143 145146148149151152154155157158 160161163164166167169170172173 175176178179181182184185187188 190191193194196197199200
如果将例题中的continue换成break,那么运行结果为:
100101
由此可见break和continue的区别是:break用于跳出当前的循环(结束当前的循环),continue 作用,结束本次循环的剩余的语句,继续下一次循环。
- iOS基础(c)—程序结构的分类
- 黑马程序员——ios开发基础之C语言程序结构分类与函数
- 黑马程序员--iOS--C基础(程序结构)
- 预备知识(2)——Objective-C的程序结构
- 浅谈c语言基础程序结构
- C语言的程序结构
- C语言的程序结构
- C#——程序结构
- c语言基础,程序结构,位运算
- C语言2(程序结构)
- 《C语言程序设计》读书笔记(四)——函数与程序结构
- C 程序结构
- C 程序结构
- C 程序结构
- 【C#】程序结构
- 学习笔记---C程序结构、C语言基础语句总结
- Objective-C(七、分类和延展)——iOS开发基础
- Objective-C,ios,iphone开发基础:分类(category,又称类别)
- qt2.2.0 X86版本和arm版本的编译和运行
- Swift之泛型类型与泛型参数
- CSS选择器总结
- java三大框架实现仿京东分页效果
- SQLServer 无法打开物理文件 "path\XX.mdf"。操作系统错误 5:"5(拒绝访问。)"
- iOS基础(c)—程序结构的分类
- iOS 本地化遇到的问题
- Java程序猿的逆袭
- VS2012发布网站详细步骤
- 网络虚拟化城域网创新实践
- [LeetCode][Java] Merge k Sorted Lists
- 进程和线程之关系
- SQlite命令行工具的使用
- 线程函数中的某段代码,总是抛出异常,不解?