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() 必 ...
随机推荐
- Lightoj 1067【逆元模板(求C(N,M))】
#include <bits/stdc++.h> using namespace std; typedef long long LL; typedef unsigned long long ...
- C#异步调用的应用实践浅谈
C#异步调用的应用实践最经公司工作需要调用一个外部的webservice,同时要将传出的数据进行保存,以自己以前的习惯,就打算逐步操作,失败啊,完全没考虑过用户体验效果,在同事指点下,意识到使用C#异 ...
- Codevs 3409 搬运礼物
3409 搬运礼物 CodeVS原创 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 青铜 Bronze 题解 题目描述 Description 小浣熊松松特别喜欢交 ...
- [Xcode 实际操作]九、实用进阶-(32)项目的打包上传和提交审核以及下架处理
目录:[Swift]Xcode实际操作 本文将演示如何将一个应用程序进行打包上传,并提交审核以及下架处理. 点击项目[DemoApp]->[Build Settings]编译设置->[Pr ...
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 经典面试题
1.描述Cookie的作用 Cookie是网站保存在浏览器客户端的信息,也就是说保存在访客的机器里的变量,一般随着HTTP头发送到客户端.在Cookie生效之后及失效之前,客户每次发出页面请求的时候, ...
- Tomcat 连接池调优
性能较好的Tomcat 配置文件内容 <Context> <Resource name="jdbc/pgsql" type="javax.sql.Dat ...
- ZooKeeper应用案例
我们通过学习借鉴,哪些项目或应用都使用了ZooKeeper,可以了解我们的应用使用ZooKeeper是否能真正地带来价值,当然,有些项目可能也未必非常适合使用ZooKeeper,我们要批判地学习.借鉴 ...
- PostgreSQL - 模糊查询
前言 like.not like在SQL中用于模糊查询,%表示任意个字符,_表示单个任意字符,如果需要在模糊查询中查询这两个通配符,需要用ESCAPE进行转义,如下: select * from ta ...
- ie img 3px bug
ie img 3px bug 日期:2008-11-22 分类:CSS ie img 有 3px 的缝隙也是 ie 的经典 bug 之一,相信已经不陌生了,但还是先看看效果吧(也许你并没有见过): 效 ...
- [题解](次短路)luogu_P2865路障(未)
好像是个不需要vis数组的次短路,跑到收敛,然而给我脑袋弄炸了......到现在还没懂.......究竟次短路应该怎么求a...... 抄题解: #include<bits/stdc++.h&g ...