第章C语言程序的流程控制

合集下载

C语言实验四

C语言实验四
9.打印数字金字塔。
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
·…·
·…·
·…·
1 2 3…8 9 8…3 2 1
对应答案:实验4程序流程控制
1.参考程序
#define PI 3.14159
main()
{
float r,c,s1,s2,v;
printf("Enter r:");
scanf("%f",&r);
exit(0);
}
do
{
printf("%d",x%10);
i++;
x=x/10;
}while(x!=0);
printf("\ni=%d\n",i);
}
5.参考答案
(1)2 2 3 3 4 4 5 5 5 6 6 7 7 7 7
(2)Chi(注意:回车符“↙”也作为一个字符)
(3)x=13
6.分析
方法一:借助最大公约数。两个数的最小公倍数等于这两个数的积除以其最大公约数,这样,可以先利用辗转相除法求出最大公约数,进而求出最小公倍数。
3.先分析下面程序的功能,然后输入一个3位整数进行调试,看一看分析的结果是否正确。
main()
{
int n,x1,x2,x3,y;
printf("Enter n:");
scanf("%3d",&n);
x1=n/100;
x2=n/10%10;
x3=n/100;
y=x3*100+x2*10+x1;
printf("y=%d",y);

C语言程序设计第一章(何钦铭版)

C语言程序设计第一章(何钦铭版)

1.2.1 程序与指令

(1) 输入3个数A, B和C,求A+C和B +C的 结果
Input A; 输入第1个数据到存储单元A中 Input B; 输入第2个数据到存储单元B中 Input C; 输入第3个数据到存储单元C中 Add A C D; 将A、C相加并将结果存在D中 Add B C E; 将B、C相加并将结果存在E中 Output D E; 输出D,E的内容

关于程序与指令,下面举1道例题
例1-2 编写程序,分别求和与乘积 先介绍:虚拟的计算机指令系统(共7条指令 )



指令1:Input X 将当前输入数据存储到内存的X单元 指令2:Output X 将内存X单元的数据输出。 指令3:Add X Y Z 将内存X单元的数据与Y单元的数据相加并将 结果存储到Z单元。 指令4:Sub X Y Z 将内存X单元的数据与Y单元的数据相减并将结 果存储到Z单元。 指令5:BranchEq X Y P 比较X与Y,若相等则程序跳转到P处执 行,否则继续执行下一条指令。 指令6:Jump P 程序跳转到P处执行。 指令7:Set X Y 将内存Y单元的值设为X。 对以上7条指令进行不同组合就可以实现多项功能,具体请看下面的 例题:
C语言程序设计
C语言程序设计

教学要求
知识:掌握程序设计语言的基本知识 素质:常用算法
能力:初步的程序设计能力

学习方法
自主学习 重视上机实践 学生要按时上课和上机、课后要看书、认真独立完成
作业

成绩评定方式:平时成绩占40%(包括平时考勤、上机
作业情况、期中考试);期末成绩占60%
以下是不合法的标识符:

C语言流程控制

C语言流程控制

C语言流程控制
C语言是一种面向过程的编程语言,它提供了多种流程控制结构来
控制程序的执行流程。

流程控制可以让程序根据条件进行分支执行,
或者进行循环执行,以实现不同的逻辑功能。

本文将介绍C语言中常
用的流程控制语句以及它们的用法和应用场景。

条件语句
条件语句用于根据条件判断是否执行某个代码块。

C语言中的条件
语句有两种形式:if语句和switch语句。

if语句
if语句用于在满足某个条件时执行某段代码。

其根本语法如下所示:if (condition) {
// code to be executed if condition is true
}
如果条件为真,那么执行花括号中的代码块;如果条件为假,那么跳过代码块,继续执行后续语句。

可以通过多个if语句的嵌套来实现多个条件判断。

下面是一个简单的例如:
```c #include <stdio.h>
int main() { int num = 10;
if (num > 0) {
printf(\。

C语言高教版第3版第三章三种基本控制结构上课件

C语言高教版第3版第三章三种基本控制结构上课件

„a‟<‘b‟ <‘c‟
关系表达式的值是一个逻辑值,即 【例2.18】判断以下关系表达式的值。 • “真”或“假”。 当 a = 3, b = 2, c = 1,请判断表达式的值 C语言没有逻辑型数据,以1代表“真”, 1. a > b 以“0”代表“假”。 1
2. (a > b) == c
只在a为假时,才判别b的值; 只在a、b都为假时,才判别 c的值
例 a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d)
结果m=0,n=1
【例】逻辑表达式的短路特性。例
复杂逻辑条件的表述
• 判断某一年year是否为闰年 1. 闰年 (year%4==0 && year%100!=0)||(year%400==0)
! 优先级:第2级 结合方向:自右向左
&&
||
优先级:第11级 结合方向:自左向右
优先级:第12级 结合方向:自左向右 /* 等价于(a<=x) && (x<=b)*/ /* 等价于(a>b)&&(x>y) */ /* 等价于 (a==b)||(x==y) */ /* 等价于(!a)||(a>b) */
有一个或多个输出
二、算法的描述工具
自然语言
(通俗易懂, 文字冗长, 容易有“歧义性”)
流程图
(灵活, 自由, 形象, 直观, 易理解, 占篇幅大)
N-S图
(新型流程图, 简洁)
伪代码
(介于自然语言和计算机语言之间, 中英文皆可,格式 自由, 易修改, 不直观, 不容易发现逻辑错误)
计算机语言
(用计算机实现算法, 可以执行出结果, 比如 C 语言)

C语言03.1 流程控制(1 输入输出函数)

C语言03.1 流程控制(1 输入输出函数)
scanf("%d%c%f",&a,&b,&c) 输入: 25P12I.35
注意
在输入字符型数据时,若格式控制串中没有 非格式字符,则认为所有输入的字符均为有 效字符。
如: scanf("%c%c%c",&a,&b,&c);
只有当输入为:def 时(即:不能有间隔),才能 把‘d’赋于a,‘e’赋予b,'f'赋予c
字符输入输出函数
例:
#include <stdio.h> void main() { char c; c=getchar(); ++c; putchar(c); putchar('\n'); return; }
作业
参照课堂举例,编写程序,练习 printf()和scanf()函数的各种格式符, 显示并观察运算结果
格式字符
d,i o x,X u f e,E g,G c s
意义 以带符号的十进制形式输出整数(正数不输出符号) 以八进制形式输出无符号整数(不输出前缀0) 以十六进制无符号形式输出整数(不输出前缀Ox) 以无符号十进制形式输出整数 以小数形式输出单、双精度实数,隐含输出6位小数 以指数形式输出单、双精度实数 以%f或%e中较短的输出宽度输出单、双精度实数 输出单个字符 输出字符串
如:scanf(“%f”, a); ×
scanf("%f", &a); √
不能用格式控制来规定输入数据的精度
如: scanf("%7.2f",&a);
×
scanf("%f", &a);

C语言常见几种流程控制语句

C语言常见几种流程控制语句

C语言常见几种流程控制语句
1.顺序结构:程序按照代码的先后顺序依次执行,没有特殊的控制语句。

2.选择结构:根据条件的真假选择是否执行段代码,常见的选择结构有:
- if语句:根据条件判断是否执行段代码。

- switch语句:根据不同的取值执行不同的代码。

3.循环结构:根据条件的真假重复执行段代码
- for语句:根据循环条件重复执行段代码,一般用于已知循环次数的情况。

- while语句:根据循环条件重复执行段代码,一般用于不知道具体循环次数的情况。

- do-while语句:先执行一次代码,再根据循环条件重复执行段代码,一般用于至少需要执行一次的情况。

除了以上常见的流程控制语句,C语言还提供了一些其他的流程控制语句,如break语句用于结束当前循环,continue语句用于跳过本次循环的剩余代码等。

程序流程控制

程序流程控制

去执行该条件下的操作,其余部分被跳过;若无条件为真,就执
行最后一个else所指定的操作。
5.else与if的配对规则
请观察以下程序段和流程图,完成问题。 流程图:

x>7
程序段: if(x>7) if(x<13) printf(“left!\n”); else printf(“right!\n”);
输出“一种形式)
(1)请观察下面的流程图:
x>0
(3)归纳if语句的流程图:
表达式
x=x+1
语句 该图用if语句表示为:if(x>0) x=x+1;
(2)试写出if语句的一般形式:
if(表达式) 语句
知识盘点:
对“表达式”进行判断,如果计算结果为“真” ,那么执行“语句” ,
6.if语句的嵌套
(1)按else与if的配对规则划分下列关系。 if(条件1) if(条件2) 语句1 else 语句2 else if(条件3) 语句3 else 语句4
(2)题目:有一个函数:
-1(x<0) 编程,输入一个x值, y= 0(x=0) 1(x>0)
输出y值。
请判断下列哪些写法是正确的?为什么?
写法1: main() { int x,y; scanf(“%d”,&x); if(x<0) y=-1; else if(x>0) y=1; else y=0; printf(“x=%d,y=%d\n”,x,y); } 原因:
正确。
写法2: if(x>=0) if(x>0) else else y=-1; y=1; y=0;
原因:
正确。
写法3: y=-1; if(x!=0) if(x>0) else y=1; y=0;

C语言程序设计教程(第二版第1章

C语言程序设计教程(第二版第1章

下一页 返回
1.3 C程序的上机步骤




在编好一个C源程序后,该怎样上机运行呢?在纸上写好一 个程序后,要经过以下几个步骤: ①上机输入与编辑源程序。 ②对源程序进行编译。 ③与库函数连接。 ④运行目标程序。 以上过程如图1-1所示。其中实线表示操作流程,虚线表示 文件的输入输出。例如,编辑后得到一个源程序文件f.c,然 后在进行编译时再将源程序文件f.c输入,经过编译得到目标 程序文件f.obj,再将目标程序文件f.obj输入内存,与系统 提供的库函数等连接,得到可执行的目标程序文件f.exe, 最后把f.exe调入内存并使其运行。
上一页 下一页 返回
1.2 简单的C程序介绍

④scanf功能是调用系统提供的标准库函数读入变量 integer1和integer2的值。 ⑤printf功能是调用系统提供的标准库函数输出计算结果 sum的值。 例1-2 阅读并分析下面的程序。 main( ) /*主函数*/ { int a,b,c; /*声明部分,定义变量*/ scanf(″%d,%d″,&a,&b);/*输入变量a和b的值*/ c=max(a,b);/*调用max函数,将得到的值赋给c*/ printf(″max=%d″,c); /*输出c的值*/ }
上一页 下一页 返回
1.2 简单的C程序介绍


下面来分析一下本程序的程序结构: ①本程序包括两个函数:主函数main和被调用的函数max。 max函数的作用是将x和y中较大者的值赋给变量z。 return语句将z的值返回给主调函数main。返回值是通过 函数名max带回到main函数的调用处。main函数中的 scanf是“输入函数”的名字(scanf和printf都是C系统 提供的标准输入输出函数)。程序中scanf函数的作用是输 入a和b的值。&a和&b中的“&”的含义是“取地址”,此 scanf函数的作用是将两个数值分别输入到变量a和b的地址 所标志的单元中,也就是输入给变量a和b。这种形式是与其 他语言不同的。它相当于BASIC语言中的INPUT a,b或 PASCAL语言中的Read(a,b)。&a和&b前面的 “%d,%d”的含义与前相同,只是现在用于“输入”。它 指定输入的两个数据按十进制整数形式输入。

c4-2012

c4-2012
第 4 章 程序流程控制
程序设计是计算机科学的一个核心问题,主要还是靠 人完成。结构化程序设计方法是面向过程程序设计的基本 方法,C语言是一种结构化的程序设计语言,它提供了完
善的结构化程序设计的各种控制结构。
结构化程序设计三原则
1. 使用三种基本控制结构(顺序、选择、循环)
2. 采用自顶向下、逐步求精的模块化程序设计方法
②若输入字母“x”,输出?
2. break语句
break与switch联用,强迫控制立即退出switch。
① 防止从一个case下落到另一个case中;
② 防止因case和default位置的改变而影响程序的运行结果。
计算表达式e e=c1 语句1 e=c2 语句2
e=cn
语句n
default 语句n+1
【例】猜数游戏:若用户猜对了,
屏幕显示“**Right**”,然后结束 程序运行。
#include <stdio.h>
void main() { int magic=123; int guess;
测试表达 式
=0
printf("Enter your guess:"); scanf("%d",&guess); if (guess==magic) printf("**Right**\n"); }
将提示用户是猜大了,还是猜小了。 #include <stdio.h>
void main()
{ int magic=123,guess; printf("Enter your guess:");
scanf("%d",&guess);

第1章 C语言与程序设计

第1章 C语言与程序设计
C语言程序设计
学习C语言的理由
• C语言可以作为学习计算机程序设计语言的入 门语言 • C语言是编写操作系统的首选语言,与计算机 硬件打交道灵巧且高效 • C语言具有现在高级程序设计语言的基本语法 特征 • 常用的面向对象程序设计语言如C++和Java,其 基本语法来源于C语言 • 许多用C语言编写的系统需要维护
1.4 算法及其表示
【例1-2】某体育比赛中,有10个裁判为参赛选手打分,参赛 选手最后得分的计算方法是:去掉一个最高分和一个最低分 后其它分数的平均值。求参赛选手的最后得分。 ⑴数据描述 问题中的原始数据有10个,解题过程中求最高分、最低分和 最后得分。在程序中可定义1个数组s存储10个分数、3个实型 变量max,min,score分别存储最高分、最低分和最后得分,另 外还需要若干辅助变量。 ⑵处理步骤描述 第1步:输入10个任意数,存储在数组s中; 第2步:求10个数的最高分、最低分以及它们的和,并存储在 变量max、min和sum中; 第3步:从sum中减去max和min并且除以(10-2)(值为8)求得 最后得分,并将其存储在变量score中; 第4步:输出变量score的值,则得到问题所要求的结果。
C语言程序设计是一门实践性很强的课程。在学习过程 中,不仅要掌握基本概念、语法和语义等内容,还需要注 重实验环节,通过自己动手编写程序,在完成C语言程序的 编辑、编译、调试和运行的过程中,加深对C语言的理解 。
本课程学习目标
• 计算机语言—C语言的词法、语法和语义 • 程序设计
第1章 C语言与程序设计
1.1 C语言发展历史
图1-1 C语言的发展历程
1.2 C语言的特点
•C语言简洁、紧凑、灵活可移植 •表达方式简练、实用灵活 •具有丰富的数据类型 •具有低级语言的特点 •是一种结构化语言,适合于大型程序的模块化设计

C语言程序设计教程CJ_期中总结_潭浩强第3版

C语言程序设计教程CJ_期中总结_潭浩强第3版
本人版权所有,复制必究。 本人版权所有,复制必究。
辽宁师范大学 计算机与信息技术学院 蔡静
目 录
C语言概述 ↸ 程序的灵魂 程序的灵魂——算法 算法 数据类型、 数据类型、运算符与表达式 C程序设计 数组 ↸ 函数 预处理命令 指针 结构体和共用体 ↸ 位运算 文件 测试及综合应用
2
第一章 C语言概述 语言概述
有穷性 确定性 有0个或多个输入 个或多个输入 有1个或多个输出 个或多个输出 有效性
Page 7
辽宁师范大学
蔡静
4 算法的描述工具
流程图 N-S 图 伪代码
Page 8
辽宁师范大学
蔡静
(1)用流程图描述的三种流程基本结构 ) 流程图描述的三种流程基本结构
这三种基本结构有一个明显的特征——单入口和 单入口和 这三种基本结构有一个明显的特征 单出口。从整体上看都相当于一个处理框。 单出口。从整体上看都相当于一个处理框。
++ --
前缀形式: ++i , --i 先加/减1,再使用i 后缀形式: i++ , i-- 先使用i,再加/减1
只能用于变量,不能用于常量和表达式。
避免歧义,准确为先! 避免歧义,准确为先!
4、正负号运算符
Page 21
辽宁师范大学
蔡静
5、赋值运算符
(1)、赋值操作 赋值操作:从运算器向变量所在的存贮单元传送数 赋值操作 据的操作称为赋值操作。 ( ) 格式: 变量名 = 表达式 说明: “=”是赋值符号,“==”是等于符号; 赋值运算方向是从右向左:先算右边表 达式的值,再向左边变量赋值。
Page 35
辽宁师范大学
蔡静
第三章 C程序的流程控制 程序的流程控制

c语言程序设计双色版答案

c语言程序设计双色版答案

c语言程序设计双色版答案C语言程序设计是计算机科学与技术专业的基础课程之一,通过学习该课程,学生可以掌握C语言的基本语法和编程技巧。

本文将针对C语言程序设计的双色版答案进行详细的讲解。

以下是各章节的答案内容:第一章:C语言概述与开发环境1. C语言是一种通用的高级程序设计语言,具有良好的可移植性和高效性。

2. 开发环境包括编译器、集成开发环境(IDE)等,可以根据个人习惯选择适合自己的开发环境。

第二章:C语言基本语法和数据类型1. C语言的基本语法包括标识符、关键字、运算符、表达式、语句和注释等。

2. 数据类型分为基本数据类型(整型、浮点型、字符型)和派生数据类型(数组、结构体、枚举、指针)。

第三章:C语言运算符和表达式1. 运算符包括算术运算符、关系运算符、逻辑运算符、赋值运算符等。

2. 表达式是由运算符、操作数和运算符优先级组合而成的。

第四章:C语言流程控制1. 流程控制分为顺序结构、选择结构和循环结构。

2. 选择结构包括if语句、switch语句,循环结构包括while循环、do-while循环和for循环。

第五章:C语言函数1. 函数是一段完成特定任务的独立代码块,可以重复使用。

2. 函数的定义包括函数名、参数、返回值类型和函数体。

第六章:C语言数组1. 数组是一组相同类型的元素集合,可以通过下标访问元素。

2. 数组可以是一维数组或多维数组,使用二维数组可以表示矩阵等数据结构。

第七章:C语言指针1. 指针是保存内存地址的变量,可以用于操作内存中的数据。

2. 指针的操作包括取地址操作、指针运算、指针与数组的关系等。

第八章:C语言字符和字符串处理1. 字符是编程语言中的基本单元,可以用于表示文本和符号等。

2. 字符串是字符的数组,可以用于表示文本、姓名等较长的数据。

第九章:C语言结构体与共用体1. 结构体是将不同类型的数据组合在一起形成一个新的数据类型。

2. 共用体是一种特殊的数据类型,不同成员共享同一块内存地址。

c语言第3章

c语言第3章

3.2.2 例题与分析
例题3.3 根据输入的加或减运算符,输出任意两个
分析本题的含义是根据用户从键盘输入的加运算符 或减运算符,在屏幕上输出相应的运算结果。首先 对题目进行分析和分解,然后再进行代码设计。问 题分析如图3.1
整型变量iop1, iop2 整型变量result 字符型变量operator
1 (x 0) y 0 (x 0)
1 (x 0)
为了避免此种情况,采用办法与情况1相似。改变 if...else的匹配关系,将情况2的代码修改如下,即 可正确表示符号函数。
if(x < 0) y = -1;
else if (x!=0) y = 1;
else y = 0;
例题3.6 求一元二次方程ax2+bx+ c = 0 分析由代数知识可知,方程的解有3种不同的情况,
/* 获得运算符 */
printf("please enter tow numbers:");/* 获得操作数 */
scanf("%d%d", &iop1, &iop2); if(operator == '+')/*由运算符决定不同运算*/
result = iop1 + iop2;
else
result = iop1 - iop2; printf("\n%d %c %d = %d\n", iop1, operator, iop2, result); /* 输出结果 */ }
方法1 main() {
int x, y; printf("please input a integer:"); scanf("%d", &x); if (x > 0) y = 1; else if (x == 0)

c语言程序流程控制的三个常用结构

c语言程序流程控制的三个常用结构

c语言程序流程控制的三个常用结构下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!1. 顺序结构。

c语言中的顺序结构是程序自上而下按照代码顺序依次执行的结构。

第3章 基本的程序流程控制结构

第3章 基本的程序流程控制结构
3.3.5 选择结构程序举例
计算机程序设计基础(C语言) 3.3 选择结构的流程控制
3.3.1 条件判断
在顺序结构中,各语句是按排列的先后次序顺序执行的, 是无条件的,不必事先作任何平判断。但在实际中,常常 有这样的情况:要根据某个条件是否成立决定是否执行指 定的任务。例如: 如果你在家,我去拜访你; (需要判断你是否在家) 如果考试不及格,要补考; (需要判断是否及格) 周末我们去郊游; (需要判断是否是周末) 如果x>y,输出x,否则输入y。 (需要判断x是否大于y) 判断的结果应该是一个逻辑值:“是”或“否”,在计算 机语言中用“真”和“假”表示。例如,当x>y时,满足 “x>y”条件,就称条件“x>y”为真,如果x≤y,不满足 “x>y”条件,就称条件“x>y”为假。
}
计算机程序设计基础(C语言)
例3.3 求4个数中的最大值。
算法分析:程序的功能是输入4个数给a,b, c,d。把a先赋予变量max,再用语句判别 max和b的大小,如max小于b,则把b赋予 max。同理,max继续跟c和d比较即可使 得max中总是大数,最后输出max的值就 是4个数中的最大值。


计算机程序设计基础(C语言)
在判定两个浮点数是否相等时,由于计算机存储上 出现的误差,会出现错误的结果。例如: 1.0/3.0*3.0==1.0 在数学上显然应该是一个恒等式,但由于1.0/3.0得 到的值的有效位数是有限的,并不等于,因此上 面关系表达式的值为0(假),而不为1(真)。 所以应避免对两个实数表达式作“相等”或“不 相等”的判定。上式可以改写为: fabs(1.0/3.0*3.0-1.0)<1e-5
计算机程序设计基础(C语言) 3.3 选择结构的流程控制

C语言程序设计课件:C 程序基本结构

C语言程序设计课件:C 程序基本结构
符ASCII 值加6 后变成其他字符的ASCII
值,然后利用printf()进行输出。
# include <stdio.h>
int main()
{
/* 定义字符型变量,并给它们赋初值 */
char c1, c2, c3, c4, c5, c6, c7;
c1 = 'C';
c2 = 'h';
c3 = 'i';
入和输出函数,
函数scanf()和printf()来完成数据的格式输
入和输出操作,其作用是向默认的输入设备
(键盘)和输出设备(终端或显示器)输入
或输出若干个任意类型的数据。
1.printf()函数的功能
printf()函数称为格式输出函数,最末一个字母
f 即为“格式”(format)之意,格式输出函
控制语句、复合语句、空语句与类.
介绍这些基本语句及其在顺序结构中的应用,
可以使读者对C 程序有一个初步的认识,为
以后的学习打下基础
(1)表达式语句:表达式语句由表达式加上分号“;”组成,运
行结果可以得到表达式的值。其一般形式为:
表达式;
例如:x=y+z; 赋值语句;
i++; 自增1 语句,i 值增1
/* 输出原码 */
printf("原码是:%c%c%c \n", c1, c2, c3);
/* 对字符进行译码运算 */
c1 = c1 + 6;
c2 = c2 + 6;
c3 = c3 + 6;
/* 输出译码结果 */
printf("密码是:%c%c%c \n", c1, c2, c3);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章C语言程序的流程控制利用计算机进行程序设计时,不仅仅只处理一些简单的数据,在大部分的程序设计里处理的问题还是相当复杂的。

对于那些复杂的程序设计,读者不可能直接就能写出程序的源代码,而是要通过一些具体的设计方法(如用程序流程图)把程序设计思想先写出来,然后根据程序流程图编写代码。

本章将具体介绍进行程序设计时使用的基本方法和C程序的流程控制。

3.1程序设计的基本知识3.1.1程序流程图在描述一个程序的基本结构思想时有很多种方法,其中程序流程图是最常用也是最基本的方法。

1. 传统程序流程图传统流程图表示法的特点是用一些图框表示各种类型的操作,用线表示这些操作的执行顺序。

美国国家标准化协会ANSI规定了一些常用的流程图符号,现已为世界各国普遍采用。

我国也有自己的国家标准GB 1526-89与该标准基本相同,本书就参照ANSI标准做具体介绍。

标准中各种图示如图3.1所示。

起止框输入输出框判断框处理框或流程线连接点注释框图 3.1 传统流程图表示法下面对其中一些主要符号作简要说明:(1)起止框是用来标识程序的开始和结束位置的。

规定流程图以起止框开始,以起止框结束。

(2)输入输出框也叫数据框,其中可以注明数据名称、来源、用途或其它的文字说明。

(3)菱形框的作用是对一个给定的条件进行判断,根据给定的条件是否成立来决定如何执行其后的操作。

(4)处理框用矩形表示各种处理功能。

例如,执行一个或一组特定的操作,从而使信息的值、信息的形式或所在位置发生变化。

另外在矩形框内可注明特定处理名称或其简要功能。

(5)流程线用带箭头的直线表示程序的执行顺序。

当流程自左向右或自上向下时流程线可以不带箭头,其它情况应加箭头表示流程。

(6)连接点用小圆圈表示将画在不同地方的流程线连接起来。

下图中有两个以①为标志的连接点,它表示这两个点是互联在一起的,实际它们是同一个点。

这种连接通常用在图形画不下而需要分开画时。

(7)注释框不是流程图的必要部分,其不反映流程操作,只是为了流程图中某些操作做解释补充的,以帮助阅读流程图的人更好的理解流程图的作用。

2. N-S流程图灵活的流程线在程序设计中有它自己的优点,但也隐藏着许多导致错误的祸根。

因为它允许用流程线使流程任意转移,这对程序设计是一个隐患,它使程序流程看起来很乱,使程序难以理解和维护。

针对这一弊病,1973年美国学者I . Nassi和 B . Shneiderman提出了一种无流程线的流程图,称为N-S图。

它的基本表示方法是用一个矩形框,把整个程序算法像堆积木一样组成。

其基本结构如图 3.3、3.4、3.5、3.6所示。

3.1.2程序的三种基本结构结构化的程序设计方法是面向过程的程序设计的基本方法。

1996年意大利Bobra和Jacopini提出了三种基本程序结构。

已经证明,这三种算法可以解决任何复杂的问题。

1. 顺序结构(传统流程图表示) (N-S 流程图表示)图3.3 顺序结构流程图2. 选择结构(传统流程图表示) (N-S 流程图表示)图3.4 选择结构流程图3. 循环结构(1)while 循环结构当条件P 成立语句组( 传统流程图表示) (N-S 流程图表示)图3.5 当型循环结构流程图(2)do …while 循环结构( 传统流程图表示) (N-S 流程图表示)图3.6 直到型流程图例3.1 画出求s=1+2+3+ … +100的传统流程图和N-S 流程图。

3.2 C语言的基本语句3.2.1表达式语句C语言是一种表达式语言,所有的操作运算都是通过表达式来实现的。

由表达式组成的语句称为表达式语句,它是由一个表达式后接一个分号组成。

这里要特别强调,没有分号的不是语句。

1. 赋值语句赋值语句由赋值表达式加一个分号组成。

例如:i = 1 ;2. 函数调用语句函数调用语句由函数调用表达式后跟一个分号组成。

例如:strcpy( s1, "student", 4 );printf("good afternoon\n " );3. 空语句空语句是只有一个分号而没有其他表达式的语句。

例如:;它不产生任何操作运算,只作为形式上的语句,被填充在控制结构之中。

3.2.2复合语句C语言还允许把一组语句放在一对花括号之中,称为复合语句。

要特别强调一点,一个复合语句的后花括号之后不应再写分号。

例如:{c = getchar();b = b +c ;putchar();}3.2.3流程控制语句选择型结构语句循环控制结构语句流程转向语句……3.3选择结构程序设计在C语言中实现选择结构的语句有两大类:if语句和switch语句。

3.3.1if语句(1)简单if语句格式:if(表达式)语句;功能:如果表达式的值为真,则执行其后的语句,否则不执行该语句。

其N-S流程图如图3.9表示。

图3.9 简单if语句流程图(2)基本if … else语句格式:if(表达式)语句1; else 语句2;功能:如果表达式值为真,则执行语句1,否则执行语句2。

其执行过程如图3.10所示。

图3.10 基本if … else语句流程图例3.3 从键盘输入任意一整数,求其绝对值并输出。

# include<stdio.h>{int x;printf(" please enter a number: "); scanf("%d",&x);if(x<0)x=-x;elsex=x;printf("number abs is d%",x);}(3)if语句的嵌套当if语句中执行的语句又是if语句时,那么就构成了if语句的嵌套。

其一般形式可以表示如下:if(表达式)if 语句1;else 语句2;elseif 语句3;else 语句4;在if语句的三种形式中,如果所要执行的语句超过一条必须用花括号括起来,构成一条复合语句,才能被完全执行。

例如:if(a>b){ a++;b++; }else{ a=10;b=100;}3.3.2 switch语句一种用于多分支选择的语句——switch语句,用该语句编写的程序简洁、易懂。

而且,其执行效率要比同样功能的阶梯式 if …else if …else语句要高的多。

1. switch语句的一般形式switch语句的一般形式如下:switch(表达式){case 常量表达式1:语句组1;case 常量表达式2:语句组2;···case 常量表达式n:语句组n;default :语句组n+1;}2. switch语句的执行过程系统首先计算“表达式”的值,并逐个与其后的“常量表达式”的值相比较,当“表达式”的值与某个“常量表达式”的值相等时,就以此作为程序执行的入口,执行switch结构中后面的各语句。

如果没有任何一个case后面的“常量表达式”的值与“表达式”的值匹配,则执行 default后面的语句(组)。

例 3.6 用switch语句实现例3.4的功能。

# include<stdio.h>main(){int score;printf("please input score(0-100):");scanf(" %d ",&score); /*从键盘输入学生成绩*/switch(score/10);{case 10:case 9:printf("excellent\n");break;case 8:printf("good\n"); break;case 7:printf("medium\n"); break;case 6:printf("pass\n"); break;default:printf("fail\n");}}3.4循环结构程序设计C语言提供了循环控制的三种语句:while语句、do…while循环语句和for循环语句。

3.4.1 while语句while语句是一种条件循环结构,其控制结构如下:while(条件表达式)循环体例3.7 计算并输出从1加到100的和:s = 1+2+3+┅100。

# include<stdio.h>main(){int sum = 0 , i = 1; /*设置和与循环变量*/ while(i<=100){ sum = sum+i;i++;}printf(" Sum=%d ", sum);}程序执行结果如下:The sum of 1 to 100 equals is:50503.4.2 do…while循环语句do…while结构在C语言中用于实现“直到型”循环。

其一般形式为:do循环体while(条件表达式);例3.9 用do…while语句求1+2+3+…+100的和。

# include<stdio.h>main(){int i =1 , sum=0;do{ sum = sum+i;i++;}while(i<=100);printf("sum= %d",sum);}3.4.3for循环语句for语句的使用最为灵活,既可以用于循环次数确定的情况,也可以用于循环次数未知的情况。

for语句的一般形式如下:for(表达式1;表达式2;表达式3)循环体如图3.13所示,for语句的执行流程是:例子。

求一个整数n的所有因子可以采用穷举法,对1~ n的全部整数进行判断,凡是能够整除n的都是n的因子。

由分析可知,这是一个已知循环次数的循环,因此可以使用for语句。

# include<stdio.h>main(){int n, k;printf("Please input a positive integer:");scanf(" %d ",&n);printf(" Number %d Factors:",n);for(k=1;k<=n;k++)if(n%k= =0)printf(" %d",k);printf("\n");}程序某次的运行结果如下:Please input a positive integer:36↙Number 36 Factors:1 2 3 4 6 9 12 18 363.4.4循环嵌套一个循环体内又可以包含另外一个完整的循环结构,从而构成多重循环结构,这就是循环的嵌套。

3.4.5 continue和break语句1. continue语句continue语句可以出现在循环体中,其作用是结束本次循环,但不退出循环结构。

相关文档
最新文档