C03 程序逻辑
Posted rask
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C03 程序逻辑相关的知识,希望对你有一定的参考价值。
程序逻辑
- 运算符
- 顺序结构
- 选择结构
- 循环结构
运算符
赋值运算符:=
比较运算符:>、<、==、 >=、<=、!=
逻辑运算符:&&、||、!
顺序结构
在C语言中,赋值语句、字符数据的输入输出语句、格式输入输出语句这几种语句在执行的时候,程序不会发生流程控制的转移。
赋值语句
赋值符号:=,在C语言中是运算符,运算顺序是从右到左。
例如:赋值表达式 a=b+c+d;
字符输入输出语句
putchar()输出单个字符。例如putchar(‘a’)。
getchar()从终端输入一个字符。例如:char c; c=getchar();
示例代码:
格式输入输出语句
printf(格式控制,输出列表)
scanf(格式控制,地址列表)
常用的格式控制字符:d,c,s,f。
上机练习
需求:要求从键盘输入一个大写字母,改用小写字符输出?
备注:大写字母+32=小写字母。使用getchar()和printf()函数完成。
选择结构
单分支选择结构
流程图如图所示:
表达式:
if(表达式) 语句
示例:
该单分支选择结构在解决该问题时有何缺陷?
双分支选择结构
流程图:
表达式:
if(表达式) 语句1
else 语句2
示例:
上机练习
需求描述:张三C语言成绩大于98分,而且软件工程成绩大于80分,奖励Pad;或者C语言成绩等于100分,软件工程成绩大于70分,也可以奖励Pad。
提示:复杂条件下的if选择结构
多分支选择结构
流程图如图:
表达式:
if(表达式1) 语句1
else if(表达式2) 语句2
else if(表达式3) 语句3
…
else if(表达式n-1) 语句n-1
else 语句n
上机练习
需求描述:成绩的转换,控制台输入一成绩,要求输出:
90~100分输出A
80~90分输出B
70~80分输出C
60~70分输出D
50~60分输出E
switch选择结构
流程图:同多分支选择结构
表达式:
switch(表达式){
case 常量表达式1:语句1 ; break ;
case 常量表达式2:语句2; break ;
case 常量表达式3:语句3; break ;
… …
case 常量表达式n:语句n; break ;
default:语句n+1; ; break ;
}
示例:根据成绩等级,输出对应分数范围
上机练习
练习1:修改示例,使之正确输出。
练习2:每周一三五吃食堂,二四六吃法国大餐。
练习3:学生信息管理系统菜单的制作,使用switch选择结构。
循环结构
循环结构用来处理重复的操作。
循环结构特点:包括循环操作、循环条件,以及循环结构。
while循环结构
流程图:
特点:先判断,再循环
语法格式:
while ( 循环条件 ) {
循环操作
}
示例:
输入年龄,如果错误,重新进行输入。如果正确,则提示输入正确,退出程序。
上机练习
练习:修改学生信息管理系统菜单,使之可以实现菜单的循环操作,选择退出将退出学生信息管理系统。
提示:使用while循环三步骤
1、确定循环条件和循环操作
2、套用while循环格式写出代码
3、确定循环结束条件
程序调试
如果程序出错,我们可以进入调试模式:
调试步骤(Dev-Cpp):
- 设置断点
- 单步运行
- 观察变量(添加查看,输入变量名)
调试步骤(vc6.0):
- 选择代码行,alt+f9或者通过编辑菜单进入断点设置.
- 单步运行:使用F5或则Go图片单步运行。
3.观察变量(添加查看,输入变量名)
调试示例
do…while循环结构
流程图:
特点:先制定循环操作,在判断循环条件
语法格式:
do {
循环操作
} while ( 循环条件 );
示例:
问题:老师需要检查张三上机考试是否合格,如果不合格,则继续考试。否则提示考试通过。
上机练习
练习:使用do……while循环结构修改学生信息管理系统菜单。
for循环结构
语法格式和执行顺序:
示例:循环输入某同学S1结业考试的5门课成绩,并计算平均分。
循环的嵌套
示例:输出乘法口诀表
一维数组
数组的定义
定义一个10个整数的一维数组:
int nums[10]={11,14,-8,6,22,99,107,4,3,2,};
或者
int nums[]={11,14,-8,6,22,99,107,4,3,2,};
问题:如何输出数组中的所有元素?
参考代码:
#include <stdio.h> int main() { int nums[10]={11,14,-8,6,22,99,107,4,3,2,}; for(int i=0;i<10;i++){ printf("%d ",nums[i]); } printf(" "); return 0; }
上机练习
二重循环练习
需求:定义一个10个数字的数组,实现冒泡法排序。
提示:冒泡法排序说明
参考代码:
#include <stdio.h> int main() { int nums[10]={11,14,-8,6,22,99,107,4,3,2,}; printf("排序前的数组:"); for(int i=0;i<10;i++){ printf("%d ",nums[i]); } //冒泡排序 for(int j=0;j<10-1;j++){ for(int k=0;k<10-1-j;k++){ int temp=0; if(nums[k]>nums[k+1]){ temp=nums[k]; nums[k]=nums[k+1]; nums[k+1]=temp; } } } printf(" 排序后的数组:"); for(int m=0;m<10;m++){ printf("%d ",nums[m]); } printf(" "); return 0; }
运行结果:
以上是关于C03 程序逻辑的主要内容,如果未能解决你的问题,请参考以下文章