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门课成绩,并计算平均分。
参考代码:
char name[20];//姓名
int sum=0;//总成绩
int avg;//平均分
int m=5;//一共5门功课 printf("请输入姓名:");
scanf("%s",name);//name为数组,不需要使用取地址符号& for(int i=1;i<=m;i++){
int score;
printf("请输入第%d门课程成绩:",i);
scanf("%d",&score);
printf("score:%d\n",score);
sum+=score;//累加成绩
printf("sum:%d\n",sum);
}
avg=sum/m;//计算平均成绩
printf("%s同学的平均成绩为:%d\n",name,avg);
循环的嵌套
示例:输出乘法口诀表
参考代码:
for(int i=1;i<10;i++){//控制行 for(int j=1;j<=i;j++){//控制列
printf("%dx%d=%d ",j,i,j*i);
}
printf("\n");//换行
}
一维数组
数组是一个固定大小的相同类型元素的顺序集合。数组一般用来存储一系列相同类型的数据。
数组是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来代表一个个单独的变量。
数组中的特定元素可以通过索引访问。
所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。
数组的定义
定义一个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("\n"); 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("\n排序后的数组:"); for(int m=0;m<10;m++){ printf("%d ",nums[m]); } printf("\n\n"); return 0; }
运行结果:
控制台密码掩码形式输入
#include <stdio.h>
#include <stdlib.h> int main(int argc, char *argv[]) {
printf("请输入密码:");
char pass[20];
int i;
for(i=0;i<20;i++){
pass[i]=getch();
if(pass[i]=='\r')
break;
putch('*');
}
printf("\n密码是:%s",pass);
return 0;
}
C03 程序逻辑的更多相关文章
- JavaScript状态机程序逻辑编辑器
制作背景 之前做Win8 Metro动态加载内容框架的时候,由于采用了XAML+JavaScript的方法,程序复杂的执行逻辑是由JavaScript控制的,而页面一多,流程一复杂,制作起来就非常麻烦 ...
- CTF---Web入门第十二题 程序逻辑问题
程序逻辑问题分值:20 来源: 实验吧 难度:中 参与人数:6909人 Get Flag:1993人 答题人数:2070人 解题通过率:96% 绕过 解题链接: http://ctf5.shiyanb ...
- Java Web安全之程序逻辑缺陷
Java Web程序逻辑缺陷本质是由于程序设计和开发者设计的程序执行逻辑存在某种缺陷而导致的安全隐患.企业的代码审查和渗透测试通常主要针对的大多是诸如xss攻击和sql注入和跨站点脚本这些头条式漏洞, ...
- 【实验吧】guess next session&&FALSE&&NSCTF web200&&程序逻辑问题
guess next session源码: <?php session_start(); if (isset ($_GET['password'])) { if ($_GET['passwo ...
- 「MoreThanJava」Day 3:构建程序逻辑的方法
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 【windows开发实现记事本程序——逻辑篇1】
1. 主要内容 从本节开始介绍windows开发实现记事本程序的逻辑实现部分.本节的主要内容有以下3点: 1. 主窗口定义 -- 主要介绍记事本主界面窗口对应的窗口类及实现方案 2. RichEdi ...
- 用java理解程序逻辑小结
1.Java常见的注释有哪些,语法是怎样的? 1)单行注释用//表示,编译器看到//会忽略该行//后的所文本 2)多行注释/* */表示,编译器看到/*时会搜索接下来的*/,忽略掉/* */之间的文本 ...
- 黑客攻防技术宝典web实战篇:攻击应用程序逻辑习题
猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 何为强制浏览?可以通过它确定哪些漏洞? 强制浏览包括避开浏览器导航对应用程序功能访问顺序实 ...
- 微信小程序 逻辑层
1. 注册程序小程序APP在小程序的根目录下有一个app.js文件.有App(Object),App() 函数用来注册一个小程序.接受一个 Object 参数,其内便是小程序的生命周期.App() 必 ...
随机推荐
- 51nod 1068【简单博弈】
思路 手动打表, N 1 : A出1 A胜: 2 : A出2 A胜: 3 : A只能出2的整数幂&&这个数<=3,所以只能出1,2:A出1的时候,B就是2的情况,B胜:A出2的时 ...
- 文档通信(跨域-不跨域)、时时通信(websocket)、离线存储(applicationCache)、开启多线程(web worker)
一.文档间的通信 postMessage对象 //不跨域 1.iframe:obj.contentWindow [iframe中的window对象] iframe拿到父级页面的window: pare ...
- [Xcode 实际操作]九、实用进阶-(15)屏幕截屏:截取当前屏幕上的显示内容
目录:[Swift]Xcode实际操作 本文将演示如何截取屏幕画面,并将截取图片,存入系统相册. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UI ...
- element走过的坑
1.想要更改表头颜色,只要在el-table里引入 :header-cell-style="{background:'red'}" 2.el-form自定义表单验证 , 但是左边不 ...
- 01 | VIM基础攻略
启动 vim 后,vim 处于 normal 模式. Step One: "i" -> insert 模式, ESC -> normal 模式: "x&quo ...
- mysql状态查询
在监控中,都是去探测这些状态数据,然后换算到时间刻度上,像zabbix. show status like 'uptime'; --查看select语句的执行数 show [global] statu ...
- Flask (一) 简介
Flask简介 Flask是一个基于Python实现的Web开发‘微’框架 'MicroFramework' Django是一个重型框架 官方文档: http://flask.pocoo.org/do ...
- HackerRank Super Six Substrings dp
https://www.hackerrank.com/contests/hourrank-18/challenges/super-six-substrings 能被6整除的数有一个特点,就是能同时被3 ...
- Unity Shader入门精要学习笔记 - 第11章 让画面动起来
转自 冯乐乐的 <Unity Shader入门精要> Unity Shader 中的内置变量 动画效果往往都是把时间添加到一些变量的计算中,以便在时间变化时画面也可以随之变化.Unity ...
- JMeter--PerfMon Metrics Collector监控内存及CPU
1.需要准备的软件及插件 ServerAgent-2.2.1.zip JMeterPlugins-Standard-1.3.1.zip 2.jmeter上JMeterPlugins-Standard- ...