第4章程序设计三种基本结构
c语言程序设计第五版习题答案

习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。
【解答】(1)语言简洁、紧凑,使用方便、灵活。
(2)数据类型丰富,表达能力强。
(3)运算符多样。
C语言中的运算符包含的范围非常广泛。
(4)具有结构化的控制语句。
如if…else语句、while语句、do while语句、switch 语句、for语句。
(5)允许直接访问物理地址。
C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。
(6)所生成的目标代码质量高,可移植性好。
2.构成C语言程序的基本单位是什么?它由哪几部分组成?【解答】函数是构成C语言程序的基本单位。
一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。
3.C语言程序的运行一般要经过哪几个步骤?【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。
二.运行程序写结果1.输入下面程序并运行。
main(){int a1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。
main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=200三.编程题1.参照本章例题,编写一个C程序,用于显示如下信息:*************************I love C programs!*************************【分析与提示】①要有文件包含语句#include <stdio.h>。
C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。
这些函数的说明都包括在stdio.h文件中。
②main是主函数的名称。
程序的三种基本结构

else
statement4
例 输入两数并判断其大小关系
/*ch4_4.c*/
#include <stdio.h>
main()
运行:Enter integer x,y:12,23
{ int x,y; printf("Enter integer x,y:");
scanf("%d,%d",&x,&y); if(x!=y)
main()
{ int x,y;
scanf(“%d,%d”,&x,&y); Compile Error! if(x>y)
x=y; y=x;
else
5.i1f.语2 句嵌套
一般形式: if (expr1)
if (expr2)
statement1
else if (estxapter1m)ent2
statement1
X<Y Enter integer x,y:12,6
X>Y Enter integer x,y:12,12
X==Y
if(x>y) printf("X>Y\n");
程序的三种基本结构
– 结构化程序设计
基本思想:任何程序都可以用三种基本结构表示,限 制使用无条件转移语句(goto)
结构化程序:由三种基本结构反复嵌套构成的程序叫 ~
优点:结构清晰,易读,提高程序设计质量和效率
– 三种基本结构
顺序结构
A
流程图
B
A B
N-S图
选择结构
真
假
P
二分支选择结构 A
[例5.2」输入三个数,按由小到大顺序输出。 •main( )
第四章三种基本结构程序设计

>0 初值<终值 =1 时,可省略 步长 <0 初值>终值 =0 死循环
4.2.3 循环结构实例
例: For I=2 To 13 Step 3 Print I , Next I Print “I=“, I
输出I的值分别为: 2 5 8 11 出了循环输出为: I=14
4.2.3 循环结构实例
2、 Do…Loop循环语句
4.2.2 选择结构实例
例 输入一学生成绩,评定其等级。方法是:90~100分为 “优秀”,80~89分为“良好”,70~79分为“中等”, 60~69分为“及格”,60分以为“不合格” 使用IF语句实现的程序段如下: If x>=90 then Print "优秀" ElseIf x>=80 Then Print "良好" ElseIf x>=70 Then Print "中等" ElseIf x>=60 Then Print "及格" Else Print "不及格" End If
不同分支中执行某一分支的相应操作(程序块),并且任何情 况下总有“无论条件多寡,必择其一;虽然条件众多,仅选其 一”的特性。
4.2.2 选择结构实例
1. If…Then语句(单分支结构)
If <表达式> Then
语句块 End If
或
If <表达式> Then <语句块>
例:已知两个数x和y,比较它们的大小,使得x大于y. If x<y Then t=x : x=y: y=t End If 或 If x<y Then t=x: x=y: y=t
程序设计的三种基本结构

程序设计的三种基本结构程序设计中的三种基本结构是顺序结构、选择结构和循环结构。
这些结构是用来控制程序执行顺序和逻辑流程的基础。
一、顺序结构:顺序结构是程序中最简单的结构,即按照顺序执行各个语句,一条接一条地执行,没有跳转和分支。
顺序结构利用语句的执行顺序来确定程序的执行流程。
例子如下:```int a, b, c;a=10;b=20;c=a+b;```在上面的例子中,按照顺序结构,首先给变量a赋值为10,然后给变量b赋值为20,最后将a和b的和赋值给变量c。
程序将按照这个顺序执行下去。
二、选择结构:选择结构用来根据一些条件的真假来决定程序的执行流程。
根据条件的结果,可能会选择执行一段代码或者另一段代码。
常见的选择结构有if语句、switch语句等。
例子如下:int x = 10;if (x > 0)//x大于0的情况下执行的代码printf("x is positive");} else//x小于等于0的情况下执行的代码printf("x is not positive");```在上面的例子中,根据if语句中的条件判断表达式x > 0的结果,如果为真,则执行if语句块内的代码;如果为假,则执行else语句块内的代码。
通过选择结构,程序可以根据不同的条件来执行不同的代码块。
三、循环结构:循环结构用来进行重复执行一段代码的操作。
通过判断循环条件的真假来控制循环的执行和退出。
常见的循环结构有for循环、while循环、do-while循环等。
例子如下:```int i;for (i = 0; i < 10; i++)printf("%d\n", i);在上面的例子中,利用for循环结构,通过初始化循环变量i并设置循环条件i < 10以及每次循环完执行的表达式i++来实现了循环打印数字0到9的功能。
循环结构使得程序可以重复执行同一段代码,以达到需要重复执行的任务。
第4章 C语言程序的基本控制结构

#include<stdio.h> main() { int c1,c2; scanf("%c",&c); c1=c-1;c2=c+1; printf("%c%4c%4c\n",c1,c,c2); printf("%d%4d%4d\n",c1,c,c2); }
4.2 顺序结构
运行结果:
4.3选择结构
入口
入口
A 语句1 B
真
表达 式
假
条件 语句2 循环体
出口
图4.1 顺序结构
出口 出口
图4.2 选择(分支)结构 图4.3 循环结构
上述三种基本控制结构的共同特定是具有单入口和单出口。 还有一种goto语句,又叫转向语句,在本章的4.4.5小节中将会讲解到。 我们在编写程序时,力求使用前三种基本结构语句。
4.3选择结构
例4.3 幼儿园里三个小朋友站队要求小个站在前面,高个站在后面。 分析:我们可以把个子最小的小朋友放在a位置上,较高的小朋友放在b位 置上,个子最高的小朋友放在c位置上。输入三个数,a,b,c,要求按由小到 大的顺序输出。先比较a和b,若a大于b,则a与b对换,再比较a和c,若a 大于c,则a与c对换,这时a的值是最小的,最后比较b和c,若b大于c,则b 与c对换。这样操作之后就使a<b<c的关系成立。然后顺序输出a,b,c既可。
! 逻辑非,单目运算符,自右至左结合。其运算规则是:当 运算量为0,运算结果为1;反之,当运算量为1,运算结果为0。 && 逻辑与,双目运算符,自左至右结合。其运算规则是: 只有当运算符两边的运算量都是非0时,运算结果才为1,否则为0。 || 逻辑或,双目运算符,自左至右结合。其运算规则是:只 要运算符两边的运算量有一个为为非0,运算结果就为1。只有两 个运算量都为0,结果才是0。 这三个运算符的优先级,逻辑非!最高,逻辑与&&次之,逻 辑或||最低。!(逻辑非)的优先级高于算术运算符和关系运算符, 而&&(逻辑与)和||(逻辑或)的优先级低于算术运算符和关系运算符。 由 此可见: a>b&&c>d 相当于 (a>b)&&(c>d) a= =0||b= =0 相当于 (a= =0)||(b= =0) !a&&b= =c 相当于 (!a)&&(b= =c)
程序设计3(3种基本结构)

流程图:
3.2.5 条件运算符(了解即可) 若if语句中,在表达式为“真”和“假”时,且都 只执行一个赋值语句给同一个变量赋值时,可以用 简单的条件运算符来处理。例如,若有以下if语句: if (a>b) max=a; else max=b; 可以用下面的条件运算符来处理: max=(a>b)?a∶b; 其中“(a>b)?a∶b”是一个“条件表达式”。它是 这样执行的:如果(a>b)条件为真,则条件表达式 取值a,否则取值b。
3.3.5 示例:
4பைடு நூலகம்
1
1 3 1 5 1 7
例:多项式如下:π/4 =1 - 1/3 + 1/5 - 1/7 + 1/9 ... 计算的项数n由键盘输入,求π。结果保留2位小数。 #include <iomanip> int main(){ int n, sign=1; double sum=0.0; cin>>n; for(int i=1; i<=n; i+=2) { sum = sum + sign*1.0/i; sign = -sign; } // 设置浮点数的小数个数2位 cout<<fixed<<setprecision(2)<<4*sum<<endl; return 0; }
3.3.3 for
for语句使用最为灵活,不仅可以用于循 环次数已经确定的情况,而且可以用于循环 次数不确定而只给出循环结束条件的情况, 它完全可以代替while语句。一般形式为: for(表达式1;表达式2;表达式3) 语句
它的执行过程如下: (1) 先求解表达式1。 (2) 求解表达式2,若其值为真, 则执行for语句中指定的内嵌语句, 然后执行下面第(3)步。若为假, 则结束循环。 (3) 求解表达式3。 (4) 转回上面第(2)步骤继续执 行。
C#结构化程序设计

4.3.1 条件语句
说明:在上例中,if条件表达式是判定x的取值是否小 于0,如果x小于0,则执行if语句的控制语句“y=-x”, 即将y赋值为x的绝对值;否则,不执行该控制语句, 而保持y为x的输入数。
20
C#程序设计实用教程
2. if…else语句 if…else语句是一种更为常用的选择语句。if…else语句 的语法如下: if(表达式) { 语句块1; }
27 C#程序设计实用教程
4.3.1 条件语句
if (InputScore >= 70) { if (InputScore >= 80) { if (InputScore >= 90) { OutputScore = "优秀"; //优秀 } else { OutputScore = "良好"; //良好 } } else { OutputScore = "中等"; //中等 }
7 C#程序设计实用教程
4.1.2 流程图
流程图(Flowchart),它是用一些几何框图、流向线和
文字说明来表示各种类型的操作。计算机算法可以用流 程图来表示,图4-1、图4-2、图4-3和图4-4是用流程图 表示了结构化程序设计的3种基本结构。
8
C#程序设计实用教程
4.2 顺序结构
顺序结构的流程图如图4-1所示,先执行A语句,再 执行B语句,两者是顺序执行的关系。A、B可以是 一个简单语句,也可以是一个基本结构,即顺序结 构、选择结构或者循环结构之一。 常用的简单语句包括空语句、复合语句、标签语句、 声明语句和表达式语句等。
4 C#程序设计实用教程
程序的三种基本结构(共24张PPT)

•scanf("%d,%d,%d",&a,&b,&c); •if(a>b) • {temp=a;a=b;b=temp;} •if(a>c) • {temp=a;a=c;c=temp;} •if(b>c) • {temp=b;b=c;c=temp;} •printf("%d,%d,%d",a,b,c);
实现if ~ else 正确配对方法
例: if (a==b)
if(b==c)
printf(“a==b==c〞);
else printf(“a!=b〞);
修改: if (a==b) { if(b==c) printf(“a==b==c〞); } else printf(“a!=b〞);
实现if ~ else 正确配对方法:加{ }
任给a,b,c三个数,按从小到大的顺序输出。
70~89
7,8
else…... else…...
#include <stdio.
else…... 分析: 设score为整型数,在score≥90 的范围内,score可能取100, 99,.
各个case的出现次序不影响执行结果。
{temp=a;a=c;c=temp;}
•
5.2 switch语句
• switch语句是多分支选择语句。if语句只有两个分 支可供选择,而实际问题中常常需要用到多分支的选 择。例如,学生成绩分类〔90分以为‘A’等,80~89分 为‘B’等,70~79分为‘c’ 等,……〕;人口统计分类〔 按年龄分为老、中、青、少、儿童〕;工资统计分类 ;银行存款分类;……等。当然这些都可以用嵌套的if 语句或多分支来处理,但如果分支较多,那么嵌套的if 语句层数多,程序冗长而且可读性降低。C语言提供 switch语句直接处理多分支选择,它的一
程序设计的三种基本结构

(循环语句)
(3) while( ) ~
(循环语句)
(4) do~while( )
(循环语句)
(5) continue
(结束本次循环语句)
(6) break
(终止执行switch或循环语句)
(7) switch
(多分支选择语句)
4.3.1 if语句 if语句是一种非常重要的程序流程控制语句,用来判定所给定的条件是否满足,根据判 定的结果(真或假)决定执行给出的两种操作之一的一种语句。 C语言提供了三种形式的if语句: 1. if (表达式) 语句 例如:
输出x1,x2
p= ,q= ,x1=p+q,x2=p-q
b
b2 4ac
图4.2
根据2a以上分析,2a 画出N-S流程图如图4.2所示。
据此编写源程序如下:
#include <math.h> #include <iostream.h> void main() {
float a,b,c,disc,x1,x2,p,q; cout<<"请输入a、b、c的值:"<<endl; cin>>a>>b>>c; disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q;x2=p-q; cout<<"x1="<<x1<<endl; cout<<"x2="<<x2<<endl; } 运行情况为: 请输入a、b、c的值:1 3 2↙ x1=-1
#include <iostream.h> void main() {
程序的三种基本结构

程序的三种基本结构荷兰学者Dijkstra提出了"结构化程序设计"的思想,它规定了一套方法,使程序具有合理的结构,以保证和验证程序的正确性.这种方法要求程序设计者不能随心所欲地编写程序,而要按照一定的结构形式来设计和编写程序.它的一个重要目的是使程序具有良好的结构,使程序易于设计,易于理解,易于调试修改,以提高设计和维护程序工作的效率.结构化程序规定了以下三种基本结构作为程序的基本单元:(1) 顺序结构. 见图1-1在这个结构中的各块是只能顺序执行的. (2) 判断选择结构.见图1-2根据给定的条件是否满足执行A块或B块.图1-1 图1-2 (3) 循环结构.见图1-3和图1-4.图1-3表示的结构称为"当型"循环.当给定的条件满足时执行A块,否则不执行A块而直接跳到下面部分执行.图1-4表示的结构称为"直到型"循环,它的含义是:执行A块直到满足给定的条件为止(满足了条件就不再执行A块).这两种循环的区别是:当型循环是先判断(条件)再执行,而直到型循环是先执行后判断.图1-3图1-4 以上三种基本结构可以派生出其它形式的结构.由这三种基本结构所构成的算法可以处理任何复杂的问题.所谓结构化程序就是由这三种基本结构所组成的程序.可以看到,三种基本结构都具有以下特点:① 有一个入口.② 有一个出口.③ 结构中每一部分都应当有被执行到的机会,也就是说,每一部分都应当有一条从入口到出口的路径通过它(至少通过一次).④ 没有死循环(无终止的循环).结构化程序要求每一基本结构具有单入口和单出口的性质是十分重要的,这是为了便于保证和验证程序的正确性.设计程序时一个结构一个结构地顺序写下来,整个程序结构如同一串珠子一样顺序清楚,层次分明.在需要修改程序时,可以将某一基本结构单独孤立出来进行修改,由于单入口单出口的性质,不致影响到其它的基本结构.。
第04章三种基本控制结构(上)--2012年12月

二、算法的表示方法
自然语言
(通俗易懂, 文字冗长, 容易有“歧义性”)
流程图
(灵活, 自由, 形象, 直观, 易理解, 占篇幅大)
N-S图
(新型流程图, 简洁)
伪代码
(介于自然语言和计算机语言之间, 中英文皆可,格式 自由, 易修改, 不直观, 不容易发现逻辑错误)
计算机语言
(用计算机实现算法, 可以执行出结果, 比如 C 语言)
1. d ( i ) 格式符:输出十进制有符号整数。
格式
功能
%d
按十进制整型数据格式和数据的实际长度输出
%ld
按长整型数据格式和数据的实际长度输出
%hd
按短整型数据格式和数据的实际长度输出
%(-)md m指定输出字段的宽度。如果十进制数据的位数 %(-)mld 小于m,则左端补空格(若m前面有负号,则右端 %(-)mhd 补空格);否则按实际长度输出
%(-)mu m指定输出字段的宽度。如果无符号数据的位数小 %(-)mlu 于m,则左端补空格(若m前面有负号,则右端补空 %(-)mhu 格);否则按实际长度输出
【例3.8】将整型变量按照指定无符号格式输出。
#include <stdio.h> int main( ) {
int a = -1; printf("<按无符号格式输出:%u>\n",a); printf("<按无符号格式输出:%-8lu>\n",a); printf("<按无符号格式输出:%8hu>\n",a);
程序=算法+数据结构+程序设计方法+语言
环境
灵 加工 结构化程序设计
程序的三种基本结构

内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
例 输入两数并判断其大小关系
/*ch4_4.c*/
#include <stdio.h>
main()
{ int x,y;
运行:Enter integer x,y:12,23
printf("Enter integer x,y:");
计分类(按年龄分为老、中、青、少、儿童);工资统计分类;银行存 款分类;……等。当然这些都可以用嵌套的if语句或多分支来处理,但
如果分支较多,则嵌套的if语句层数多,程序冗长而且可读性降低。C 语言提供switch语句直接处理多分支选择,它的一般形式如下:
• switch (表达式)
• { case 常量表达式1:语句1
}
}
返回
内嵌if
if (expr1) if (expr2) statement1
else statement3
内嵌if
if (expr1) statement1
else if(expr3) statement3 else statement4
内嵌if
if (expr1)
if (expr2) else
statement1 statement2
X<Y
scanf("%d,%d",&x,&y); if(x!=y)
Enter integer x,y:12,6 X>Y Enter integer x,y:12,12
if(x>y) printf("X>Y\n");
程序设计三种基本结构

程序设计三种基本结构在Visual Basic 程序设计语言中,提供了以下三种基本的控制结构:其对应的结流程图如下所示:顺序结构分支结构循环结构顺序顺序结构是按语句的先后次序依次执行的控制结构,其中“执行A”和“执行B”可以是一个语句也可以是一组语句。
在VB中录制的宏都是顺序结构的语句。
例如,以下程序段的控制结构就属于顺序结构:a=1b=a+1c=a+b例1:以下是一段Visual Basic宏程序,运行后变量x的值为x=2y=3y=y+1x=x+y-1选择分支结构又称为选择结构。
根据条件判断其是否成立,从而选择程序执行的方向,执行其中的一个分支。
分支结构的语法结构如下:语法1语法2If 条件 Then语句End If If 条件 Then语句1 Else语句2 End If例2:以下是一段Visual Basic宏程序,运行后变量a的值为a=10If a<10 Thena=a+1Elsea=a-1End If循环循环结构是根据条件判断是否成立,如果条件成立则重复执行循环结构中某语句序列功能,直到条件不成立为止,最后退出循环结构。
其中For…Next语句的语法定义如下:(详见书本第137页)For counter=start To end [Step step][statements]Next [counter]说明:counter必要参数,用作循环计数器的数值变量start必要参数,counter的初值end必要参数,counter的终值Step可选参数,counter的步长。
如果没有指定,step默认的值为1例3:以下是一段Visual Basic宏程序,运行后变量m的值为m=0For i=1 To 3m=m+2Next i。
C语言知识点:第4章 选择结构

7. 分支结构程序设计
作用:根据条件控制程序流向。 条件的组成:各种类型的常量、变量、表达式(常用:关系/逻辑表达式)
8. 单分支 if 语句
1、如果令狐冲的 C 语言考试成绩大于 90 分,师父就奖励他一本武功秘笈 使用 if 条件结构可以解决 if 条件结构是根据条件判断之后再做处理 基本的 if 条件结构 if ( 条件 ) { //语句 ~2~
C 语言程序设计知识点
主讲教师:杨剑
第 4 章:选择结构
1. 本章目标
熟练使用多重 if 结构 熟练使用嵌套 if 结构 熟练使用 switch 结构 理解条件运算符的用法
2. 结构化程序设计的核心思想
采用顺序、选择和循环三种基本结构作为程序设计的基本单元 只有一个入口; 只有一个出口; 采用“自顶向下、逐步求精”和模块化的方法进行结构化程序设计
C 语言程序设计知识点
主讲教师:杨剑
case 3: printf ("出任峨嵋掌门"); default: printf ("被逐出师门"); } 如果需要每个 case 执行完后跳出, 在每个 case 后不要忘记写 break; int mingCi = 1; switch (mingCi){ case 1: printf ("出任武林盟主"); case 2: printf ("出任武当掌门"); case 2: printf ("出任峨嵋掌门"); default: printf ("被逐出师门"); } case 后面的常量必须各不相同
C 语言程序设计知识点
主讲教师:杨剑
D. y=sqrt(x>=0?x:-x); 答案:B
小学信息技术教案-程序的三种基本结构;

程序的三种基本结构;
【学习者分析】
通过整章的学习,学生对程序设计有了一定的了解,对程序的结构、算法流程都有了一定的了解,本节通过实例加深学生对程序三种基本结构的理解。
【教材内容分析】
・本节的主要内容及在本章中的地位:
本节是对本章知识的小结、整理和提升。
本节总结归纳了程序的三种基本结构,分析三种基本结构的执行过程及特点,为学生进一步学习算法与程序设计打下基础。
・教学重点:
程序的三种基本结构的执行过程。
・教学难点:
程序的三种基本结构的执行过程。
・课时安排:1课时。
【教学目标】
・知识与技能:
了解程序的三种基本结构的执行过程,并能画出它们的流程图。
・过程与方法:
通过教学实例的分析,让学生体验利用程序的三种基本结构编写计算机程序,解决实际问题。
・情感态度价值观:
培养学生的逻辑思维能力。
【教学理念和方法】
通过教学实例的讲练,以教师为主导,学生主动,体验思考,讲练结合,以任务驱动等方式来完成教学内容。
【教学过程设计】
・教学内容的组织与呈现方式:
以实例分析深入展开,小结归纳,将程序的三种基本结构的执行过程和特点一一呈现,通过不同的练习,让学生从中慢慢理解并掌握程序的三种基本结构的执行过程,最后完成课堂自评。
・教学过程:
教学环节
教师教学
学生活动
设计意图
复习引入
我们学习了“求圆面积”的程序,请看程序段(演示),程序中语句的执行是如何的?。
程序的三种基本结构

switch ( i ) {case 1:printf(″A\n″); case 3:printf( ″C\n″); case 4:printf(″D\n″); default:printf(″E\n″); }
假设i=3时,则会从i=3时做起始语句。运行结果见右图。如果给每条语句加上break这样就只执行一条语句。
程序
if后面的表达式类型任意
如:if(a==b&&x==y) printf(“a=b,x=y”); if(3) printf(“OK”); if(‘a’) printf(“%d”,’a’);
语句可以是复合语句 if(x) if(x!=0) if(!x) if(x==0)
程序的三种基本结构
结构化程序设计 基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto) 结构化程序:由三种基本结构反复嵌套构成的程序叫~ 优点:结构清晰,易读,提高程序设计质量和效率 三种基本结构 顺序结构
A
B
A
B
流程图
N-S图
A
B
真
假
P
B
A
真
假
A1
A2
Ai
An
k=k2
k=k1
实现if ~ else 正确配对方法:加{ }
5.2 switch语句 switch语句是多分支选择语句。if语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。例如,学生成绩分类(90分以为‘A’等,80~89分为‘B’等,70~79分为‘c’ 等,……);人口统计分类(按年龄分为老、中、青、少、儿童);工资统计分类;银行存款分类;……等。当然这些都可以用嵌套的if语句或多分支来处理,但如果分支较多,则嵌套的if语句层数多,程序冗长而且可读性降低。C语言提供switch语句直接处理多分支选择,它的一般形式如下: switch (表达式) { case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式i:语句n default :语句n+1 }
C语言结构化程序设计的三种结构

4.2.3算法的伪代码表示
伪代码是对自然语言表示的改进,给自然语言加上了形式化的 框架,以一种简单、容易理解的方式描述算法的逻辑过程,用 伪代码表示的算法无二义性,易于理解。
使用伪代码表示算法无需遵守严格的语法规则,只要完整表达 了意思,书写清晰,容易阅读和读懂即可,举例来说:
用户输入 如果(用户输入的是字符Y) 执行B操作 否则 执行C操作 上述代码便采用了伪代码表示方式,完成了一种简单的分支选
4.2.6取三个数种的最小数
4.3顺序结构设计
A A
B
B
4.3.1顺序结构案例实践
从1加到5,分步顺序执行
int i=0; i+=1; i+=2; i+=3; i+=4; i+=5;
4.4.1分支结构
1
实现单分支选择的形式
2
实现双分支选择的形式
3
实现多分支选择的形式
4.4.2if语句之单分支选择结构
4.4.15 break语句
❖ 一般形式:
❖ 功能:
break;
终止switch语句的执行。为了执行完某个分支
后跳出switch结构,应在其后加上break语句。
4.4.16-break的怪事
把代码中的break都删除或注释掉后,编 译链接并不会出错,只是执行时,结果 不太一样。
我们亲自动手实践一下。 这就是说,如果不使用break语句,那么
4.5.3while 语句——“当型”循环结构
❖ 一般形式: while (表达式) 语句
❖ 说明: “表达式”为循环条件; “语句”为循环体。
❖ 特点: 先判断表达式,后执行语句。
34
=0
表达式
第4章c语言的三种基本结构

程序1: /*exp51.c*/ #include <stdio.h> main ( ) { int x, y;
scanf(“%d", &x); if (x<0)
y= -1; else if (x==0)
y=0; else
y=1; printf ("x=%d, y=%d\n", x, y); }
程序2:将程序1的if语句改为: /*exp52.c*/ #include <stdio.h> main ( ) { int x, y; scanf(“%d", &x); if (x>=0)
1. 顺序结构 先执行A, 再执行B.
A 表示 A B
B
2. 选择结构 存在某条件P, 若P为真,则执行A, 否则执行B。
TP F
A
B
表示为
TP F AB
另一种选择结构––多分支结构.
K
K=K1 K=K2
K=Kn
A1 A2 … Ai … An
3. 循环结构
有两种结构:当型和直到型 (1) 当型结构
例:计算10!并输出结果。
main()
main()
{
{
int i=1, sum=1;
int i=1; long sum=1;
loop: if (i<=10)
loop: if (i<=10)
{
{
sum=sum*i;
sum=sum*i;
i++;
i++;
goto loop;
goto loop;
}
}
printf(“10!=%d\n”,sum); printf(“10!=%ld\n”,sum
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章程序设计三种基本结构一、选择题:【例1】(2002年4月)下面的程序的输出结果是( )。
#includemain( ){int i=010,j=10;printf("%d,%d",++i,j--);}A. 11,10B. 9,10C. 010,9D. 10,9【答案】B (i的值是以八进制定义的)【例2】(2002年4月)以下的程序的输出结果是( )。
main( ){int a=5,b=4,c=6,d;printf(("d\n",d=a>b?)(a>c?a:c):(b));}A. 5B. 4C. 6D. 不确定【答案】C【例3】(2002年4月)以下程序的输出结果是( )。
{int a=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d);}A. 1B. 0C. 非0的数D. -1【答案】A【例4】(2002年4月)以下程序的输出结果是( )。
main( ){char x=040;printf("%o\n",x<<1);}A. 100B. 80C. 64D. 32【答案】A【例5】(2002年9月)已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2,k的值为3,以下选项中正确的输入语句是(C )。
A. scanf("---",&I,&j,&k);B. scanf("%d %d %d",&I,&j,&k);C. scanf("%d,%d,%d",&I,&j,&k);D. scanf("i=%d,j=%d,k=%d",&I,&j,&k);【例6】(2002年9月)若有以下程序main( ){int k=2,i=2,m;m=(k+=i*=k);printf(“%d,%d\n”,m,i);}执行后的结果是( )。
A. 8,6B. 8,3C. 6,4D. 7,4【答案】C【考点解析】根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,复合运算表达式是右结合性,先从右边开始计算i*=k得i= i*k=2*2=4,k+=i得k=k+i=2+4=6,所以m的值为6。
输出结果为m=6,i=4。
【例7】(2003年4月)若有以下程序段(n所赋的是八进制数)int m=32767, n=032767;printf(“%d,%o\n”,m,n);执行后输出结果是( )。
A. 32767,32767B. 32767,032767C. 32767,77777D. 32767,77777【答案】A【例8】(2003年4月)有以下程序段int m=0,n=0,char c='a';scanf("%d%c%d",&m,&c,&n);prinft("%d,%c,%d\n",m,c,n);若从键盘上输入:10A10<回车>,则输出结果是()。
A. 10,A,10B. 10,a,10C. 10,a,0D. 10,A,0【答案】A【例9】(2003年4月)有以下程序main( ){int i=10,j=1;printf("%d,%d\n ",i--,++j);}执行输出的结果是(B)。
A. 9,2B. 10,2C.9,1D. 10,1【答案】B【例10】(2003年9月)有以下程序main()int a ;char c=10;float f=100.0;double x;a=f/=c*=(x=6.5);printf("%d %d %3.1f %3.1f\n ",a,c,f,x);}程序运行后的输出结果是()。
A. 1 65 1 6.5B. 1 65 1.5 6.5C. 1 65 1.0 6.5D. 2 65 1.5 6.5【答案】B【例11】(2003年9月)有以下程序main(){int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=aprintf("%d,%d\n",k,m);}程序运行后的输出结果是()。
A. 0,0B. 0,1C. 1,0D. 1,1【答案】C【例12】(2003年9月)有定义语句:int x,y;若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是"A. 11 12<回车>B. 11, 12<回车>C. 11,12<回车>D. 11,<回车> 12<回车>【答案】A【例13】(2003年9月)设有以下程序段:int x=2002,y=2003;printf(“%d\n”,(x,y));则以下叙述中正确的是"A. 输出语句中格式说明符的个数少于输出项的个数,不能正确输出。
B. 运行时产生出错信息。
C. 输出值为2002。
D. 输出值为2003。
【答案】D【例14】(2003年9月)有以下程序main ( ){int x=3,y=2,z=1;printf("%d\n",x/y&~z);}程序运行后的输出结果是()。
A. 3 B. 2 C. 1 D. 0 【答案】D【例15】(2004年4月)有以下程序main(){int x=102,y=012;printf("-,-\n",x,y);}执行后输出结果是()。
A. 10,01B. 02,12C. 102,10D. 02,10【答案】C【例16】(2004年4月)有以下程序main(){unsigned char a,b;a=4|3;b=4&3;printf("%d%d\n",a,b);执行后输出结果是( )。
A. 70B. 07C. 11D. 430【答案】A【例17】(2004年9月)有以下程序main(){chara,b,c,d;scanf("%c,%c,%d,%d ",&a,&b,&c,&d);printf("%c,%c,%c,%c\n ",a,b,c,d);}若运行时从键盘上输入:6,5,65,66<回车>。
则输出结果是()。
A. 6,5,A,BB. 6,5,65,66C. 6,5,6,5D. 6,5,6,6【答案】A【考点解析】在C语言程序设计中,scanf函数的格式控制参数中“%d”表示输入整数,“%c”表示输入字符,也就是说,前两个输入的数是以字符形式输入的,后两个输入的数是以整数形式输入的,输出时,全部都以字符形式输出,而刚才的后两个整数应该用ASCII码转化为字符。
则输出的是6,5,A,B。
【例18】(2004年9月)有以下程序main ( )int m=3,n=4,x;x=-m++;x=x+8/++n;printf(“%d\n”,x);}程序运行后的输出结果是()。
A. 3B. 5C. -1D.-2【答案】D【考点解析】在本题中,根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,表达式x=-m++可以转换成x=-(m++),可得x的值为-3,而表达式x=x+8/++n可以转换成x=x+8/(++n),代入x的值得x=-3+8/5=-2,所以最后的输出结果是-2。
【例19】(2004年9月)有以下程序main ( ){char a=’a’,b;printf(“%c”,++a);printf(“%c\n”,b=a++);}程序运行后的输出结果是()。
A. b,bB. b,cC. a,bD. a,c【答案】A【例20】(2004年9月)有以下程序main ( ){int m=0256,n=256;printf("%o %o\n",m,n);}程序运行后的输出结果是()。
A. 0256 0400 B. 0256 256 C. 256 400 D. 400 400【答案】C【例21】(2004年9月)有以下程序main ( ){int a=666,b=888;printf(“%d\n”,a,b);}程序运行后的输出结果是()。
A. 错误信息B. 666C. 888D. 666,888【答案】B【例22】(2004年9月)有以下程序main ( ){unsignedint a;int b=-1;a=b;printf(“%u”,a);}程序运行后的输出结果是()。
A. -1B. 65535C. 32767D. -32768【答案】B【考点解析】在本题中,有一无符号变量和一整型变量,它们的值都是-1,在计算机整型的存储是以二进制存在,即是1000000000000001,输出函数的要求输出无符号a的值,即要把1000000000000001转化为十进制,得65535。
二、填空题:【例23】(2002年4月)以下程序的输出结果是_______。
main(){int a=177;printf("%o\n ",a);}【答案】261【考点解析】本题中先定义了一个十进制整数值为177的a,而printf()函数格式控制参数是o,也就是以八进制的整数形式输出,a的十进制数值是177转换为八进制数是261。
【例24】(2002年4月)以下程序的输出结果是_______。
main(){int a=0;a+=(a=8);printf(“%d\n”,a);}【答案】16【考点解析】在程序是用printf函数输出十进制的整数,表达式经过复合运算:a=a +a=8+8=16,则结果是16。
【例25】(2002年4月)以下程序的输出结果是_______。
main(){int a=5,b=4,c=3,d;d=(a>b>c);printf(“%d\n”,d);}【答案】0【考点解析】在C语言中规定了关系运算符”>”按左结合来运算的,所以在本题中先计算a>b,结果是真,即是1,再计算a>c,结果是假,所以最后结果是0。
【例26】(2003年4月)若有语句int i=-19,j=i%4;printf(“%d\n”,j);则输出结果是。