第四章 C语言程序的基本控制结构

合集下载

第四章 最简单程序设计--顺序程序设计

第四章 最简单程序设计--顺序程序设计
,求三角形面积。 假设:三个边长a,b,c能构 成三角形。 已知面积公式: area= s(s a)(s b)(s c) s=(a+b+c)*0.5
开始
输入三边长 计算s 计算面积 结束
13
C语言程序设计
北京工业大学实验学院 陈洪丽
顺序结构程序设计举例
#include<stdio.h> #include<math.h> 数学函数库 void main( ) 因为要用到 {float a,b,c,s,area; 其中的sqrt scanf(″%f,%f,%f″,&a,&b,&c); 函数 s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); 运行情况: printf(″a=%7.2f, b=%7.2f, c=%7.2f, 3 ,4,6 n″,a,b,c,s); s=%7.2f\ a= 3.00, b= 4.00, c= 6.00, s= 6.50 printf(″area=%7.2f\n″,area);}
C语言程序设计
第四章 最简单程序设计 --顺序程序设计
北京工业大学实验学院 陈洪丽
C语言程序设计
北京工业大学实验学院 陈洪丽
本章主要内容

C语句概述


赋值语句
算法的基本控制结构

顺序结构程序设计举例
2
C语言程序设计
北京工业大学实验学院 陈洪丽
C语句概述
C程序
源程序文件1
源程序文件2
源程序文件n
5
分支 循环
辅助控制
C语言程序设计
北京工业大学实验学院 陈洪丽

C语言程序设计第4章

C语言程序设计第4章
16
4.2.2 逻辑表达式
例:设a=3,b=4,x=0,y=0,求值: 结果:0 1、a < b && x > y 结果:1 2、a = = b || x = = y 3、! a || a > b 结果:0 4、! a && b || x > y 结果:0 5、int a=-1,b=1,c=2,d=3,m=5,n=2,k; k=(m=a+b)&&(n=c+d) k为0 ,m为0, n为2
当尝试对该程序进行编译时,C语言编译器会报告 "illegal else without matching if"的语法错误。 28
4.3.4使用if语句应注意的问题
void main() { int x; x=1; if(x==1) printf("x等于1\n"); else ; /*这里多加了个分号*/ printf("x不等于1\n"); }
if(表达式) 语句1 else 语句2
真 表达式 语句1 语句2 假

如果括号内的表达式为真,则执行括号后面的 语句1。如果表达式值为假,则执行else后面的 语句2;语句1和语句2只能有一个被执行。
21
4.3.2 else子句
【例4-2】输入两个整数,将较大者输出。 /*程序4-2*/ #include<stdio.h> void main () { int a, b, max; printf("Please input the data a and b:"); scanf("%d, %d",&a, &b); if(a>=b) max=a; else max=b; printf("The max is %d\n", max); }

C语言C程序的基本控制结构PPT课件

C语言C程序的基本控制结构PPT课件

关于 scanf( ) 函数使用的几点说明:
1 输入数据的分隔符:空格、制表符或回车键
例如, scanf(“%d%d%d”,&i,&j,&k);
输入形式可以是: ① 3 4 5<CR> ② 3 4 5<CR> ③ 3<CR> 4<CR> 5<CR>
输出结果: ***************************
好好学习,天天向上
***************************
第24页/共96页
例3-3:使用printf函数输出如下信息: 姓名 外语 数学 王丽 60 70
程序: #include <stdio.h> void main() {
第15页/共96页
例如, printf(“%10f,%10.2f,%.2f\n”,123.456,123.456,123.4);
输出结果为 123.456000, 123.46,123.40
(3) %m.ne 其中:m 规定输出最小宽度;(n-1)为尾数部分的小数位数。 例如,
printf(“%10e,%10.4e,%.3e\n”,123.456,123.456,123.4); 输出结果为
三种基本结构的共同特点
1. 只有一个入口; 2. 只有一个出口; 3. 结构内的每一部分都有可能被执行到; 4. 结构内不存在“死循环”。
第5页/共96页
3.1.1 C程序的语句
C语言的语句可分为以下四类:
1.表达式语句 2.函数调用语句 3.控制语句 4.复合语句 5.空语句
简单语句
第6页/共96页
#include<stdio.h>

C语言程序设计教程课件:程序控制结构

C语言程序设计教程课件:程序控制结构
分析:设顾客的购物款为x,打折后的货款为y,优惠公 式为:
程序控制结构
程序控制结构
因为case后面的常量表达式不能写成一个表示范围的逻 辑表达式,因此可以将switch表达式设为(int)x/1000,结果 正好是一个整数;当x在3000≤x<5000范围内时,表达式 (int)x/1000的值可能为3,也可能为4,这时两个case子句可 以共用同一个语句组。
3.1.2 空语句 空语句是一个只由分号组成的语句。其形式为: ; 空语句什么都不做,当程序中某个位置在语法上需要一
条语句,但在语义上又不要求执行任何操作时,可在此处使 用一条空语句。空语句常用于循环语句中的循环体,表示循 环体什么都不做。如:
for(i=1;i<=1000;i++); /*表示循环空转1000次,可用来 延时*/
程序控制结构
图3-9 for语句流程图
程序控制结构
【例3-12】 求n!,即计算1*2*3*…*n的值。 分析:求多个数累积与累加和的算法思想类似,只是要 注意存放累积数的变量初值应该为1。
程序控制结构
程序控制结构
【例3-13】 输出所有的水仙花数。水仙花数是指一个 三位数,其各位数字的立方和等于该数本身,如153是一个 水仙花数,153=13+53+33。
for(表达式1;表达式2;表达式3) 循环体语句
程序控制结构
for语句的执行流程是: (1) 先计算“表达式1”的值。 (2) 再计算“表达式2”的值,并判断其是否为真,若为 真(非0),则执行循环体语句;若为假(0),则跳出循环,执 行for语句的后续语句。 (3) 循环体语句执行后,计算“表达式3”的值,然后转 到步骤(2)重复执行。 其流程图如图3-9所示。

c语言程序控制结构

c语言程序控制结构
第3章
3.1
程序控制结构
(4学时)
3.2
3.3 3.4 3.5
2013年9月19日
C语言的语句 顺序结构 分支结构 循环结构 goto语句与标号
1
C语言的语句
表达式语句
复合语Байду номын сангаас 控制语句
2
1. 2. 3.
2013年9月19日
1.表达式语句

格式:
表达式;

各种表达式后面加上分号组成表达式语句。 函数调用后面加上分号也构成表达式语句,也称 为函数调用语句。 没有表达式,只有分号的语句称为空语句。不执 行任何操作。
switch(表达式) { case 常量表达式1: 语句组1 [break;] case 常量表达式2: 语句组2 [break;] … case 常量表达式n: 语句组n [break;] [default: 语句组n+1] }
2013年9月19日
18
switch结构
case 1 否 是 是 是 语句组1 否 是 break? 否 „ 是 是 语句组N break? 否 break?

任何C语言程序都是由七种控制结构(顺序结构、三种 选择结构和三种循环结构)构成的。
2013年9月19日 5
控制语句

1. 2.
9种控制语句
if ~ else switch for while do ~ while continue 从头循环 break goto return 条件语句 多分支选择开关语句 循环语句 循环语句 循环语句 结束执行循环中下面的语句,判断是否 终止执行循环或语句 转向语句 函数返回语句
default – 不是c1~cn的情况 (位置不一定在最后)。

C语言程序控制结构

C语言程序控制结构

C语言程序控制结构C语言是一种面向过程的编程语言,具有丰富的程序控制结构,可以控制程序的执行流程和逻辑。

本文将介绍C语言的常见控制结构,包括顺序结构、选择结构和循环结构,并提供示例代码进行说明。

1.顺序结构:顺序结构是程序中最简单的结构,按照代码的编写顺序一行接一行地执行。

每个语句都会顺序执行,直到程序结束。

例如:```c#include <stdio.h>int maiprintf("Hello, World!\n"); // 打印输出int x = 10; // 定义一个变量 x,并赋值为 10int y = 20; // 定义一个变量 y,并赋值为 20int sum = x + y; // 将 x 和 y 相加,保存到 sum 变量中printf("Sum: %d\n", sum); // 打印输出 sum 的值return 0;```2.选择结构:选择结构根据条件的真假选择不同的执行路径。

常见的选择结构有if 语句和 switch 语句。

2.1 if 语句:if 语句根据条件执行或跳过一段代码。

如果条件为真,则执行 if 代码块中的语句;如果条件为假,则跳过 if 代码块。

例如:```c#include <stdio.h>int maiint x = 10;if (x > 0) { // 如果 x 大于 0printf("x is positive\n"); // 打印输出} else { // 否则printf("x is non-positive\n"); // 打印输出}return 0;```2.2 switch 语句:switch 语句根据表达式的值选择不同的执行路径。

通常使用 switch 语句来处理多个条件的情况。

例如:```c#include <stdio.h>int maiint day = 3;switch (day)case 1:printf("Monday\n");break;case 2:printf("Tuesday\n");break;case 3:printf("Wednesday\n");break;default:printf("Other day\n");break;}return 0;```3.循环结构:循环结构用于重复执行一段代码,直到满足特定条件。

轻松学C语言之程序控制结构

轻松学C语言之程序控制结构

.. .. ..

嵌套if是指if语句中包含一个或多个if语句。嵌套if 语句的格式以及对应的程序流程图如图4.21所示。
要 , 清 范 规 会很 语 要 去 if 格式 写 的 if书 看上 最近 套 样 它 嵌 这 与 , 是 进 缩 lse总 有 e 。 if(表达式a) 。 晰 套 配 句

for语句是C中最常见的、功能最强的循环语句。它 既可用于循环次数确定的情况,也可用于循环次数 不确定而只给出循环结束条件的情况,其for语句的 一般形式及执行流程如图4.29所示。
一般形式 流程图 计算表达式1
对循环控制变量进行初始化
循环条件
对循环控制变量进行初始化 表达式2是否成立

for(<表达式1>;<表达式2>;<表达式3>) 三个表达式都可以缺 省,但分号不能省略 循环体 <语句> 单条语句或语句块 计算表达式3 是

循环结构中如果用到了continue语句,一旦执行 continue语句,程序就会结束本次循环而执行循环 体的下一次循环。

在4.3.5节中,我们在学习switch结构时已经接触过 break语句。switch结构中,在case子句执行完后, 通过break语句控制跳出switch结构。在循环结构中, 我们也可以使用break语句结束循环体。
a
b
!a
!b
a&&b
a||b
真(1)
真(1)
假(0)
假(0)
真(1)
真(1)
真(1)
假(0)
假(0)
真(1)
假(0)
真(1)
假(0)
真(1)

第4章 C语言程序的基本控制结构

第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)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("Enter the value of c:"); scanf("%c",&c); printf("%c:%d\n",c,c); } 运行情况如下: Enter the value of c:a↙ a:97
4.3 顺序结构的程序设计
4.4】交换两个变量的值. 【例4.4】交换两个变量的值. 设变量a 设变量a,b均为整 型变量, 型变量,编写一个 程序,输入a 程序,输入a,b的 并显示, 值,并显示,然后 交换a 的值, 交换a,b的值,再 次显示. 次显示.
零(不成立) 不成立)
显示b 显示b
建议: 为使结构清楚不易错,语句使用花括号扩起 (即使是一条语句).
分支结构(选择结构) 4.4 分支结构(选择结构)
【例4.8】判断某一年是否是闰年, 4.8】判断某一年是否是闰年, 是则输出year 是则输出year xxxx is a leap year. 否则输出year 否则输出year xxxx is not a leap year. if((y%4==0&&y%100!=0)||(y%400==0)) year.\n",y); printf("year %d is a leap year.\n",y); else year.\n",y); printf("year %d is not a leap year.\n",y);
4.3 顺序结构的程序设计
4.3】编写程序求出任一输入字符的ascii ascii码 【例4.3】编写程序求出任一输入字符的ascii码. #include <stdio.h> 字符在内存存放的是它的ascii码(字符型和整型可以 main() 混合运算或者字符型可按整型输出),所以将它按整数 {char c; 输出即可.
第四章 C语言程序的 基本控制结构
第四章 C语言程序的基本控制结构
C程序构成:文件→函数→语句序列. 程序构成: 语句: 语句:C语言中描述计算过程的最基本单位.由分号;结束. 结构化程序设计方法: 结构化程序设计方法:程序语句序列由三种基本结构(顺序,
分支,循环)构成,结构清晰,可读性强.
4.1 程序的三种基本结构
分支结构(选择结构) 4.4 分支结构(选择结构)
一,if语句 if语句 三种条件转移语句: 三种条件转移语句: if语句的一般形式 语句的一般形式: if语句的一般形式: if语句 1,if语句 if(表达式 表达式) if(表达式) else语句 2,if ~语句; 语句 else 语句; switch语句 3,switch语句 表达式通常 通常为条件表达式 表达式通常为条件表达式 或逻辑表达式. 或逻辑表达式. if语句中的语句只能是一 语句中的语句 if语句中的语句只能是一 条语句, 条语句,如果需要多条语 句则使用复合语句. 句则使用复合语句. 编写程序时使用缩进使结 构清晰. 构清晰.
而公式里的p:
调用求平方根函数,结果赋给一个变量, 调用求平方根函数,结果赋给一个变量, 实参使用表达式
4.3 顺序结构的程序设计
<stdio. #include <stdio.h> <math. #include <math.h> main() a,b,c,p,s; {float a,b,c,p,s; a=3.0; a=3 b=4.0; b=4 c=5.0; c=5 p=a+b+c; p/=2 p=a+b+c; p/=2; s=sqrt(p*(p-a)*(p-b)*(p-c)); s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("s= s=% f",s); printf( s=%7.2f",s); } 运行结果如下: s=□□□ □□□6 运行结果如下: s=□□□6.00
分支结构(选择结构) 4.4 分支结构(选择结构)
三,条件分支的嵌套 在分支的语句部分还可以出现分支语句, 在分支的语句部分还可以出现分支语句,这样就形成了分支的嵌 多分支结构),构成复杂的逻辑结构. ),构成复杂的逻辑结构 套(多分支结构),构成复杂的逻辑结构.
if(表达式1){ if(表达式1){ 表达式 if(表达式 表达式2){ if(表达式2){ 非零(成立) 不成立) 非零(成立) 零(不成立) 语句1 语句1; 表达式1 表达式1 } else { 语句2; 非零(成立) 语句2 零(不成立) 非零(成立) 不成立) 非零(成立) 零(不成立) 非零(成立) } 表达式3 表达式3 表达式2 表达式2 } else{ if(表达式 表达式3){ if(表达式3){ 语句3 语句4 语句3 语句4 语句1 语句2 语句1 语句2 语句3; 语句3 } else{ 语句4 语句4; } }
分支结构(选择结构) 4.4 分支结构(选择结构)
if (表达式1) 语句1; 表达式1 语句1 表达式2 语句2 else if (表达式2) 语句2; 表达式3 语句3 else if (表达式3) 语句3; … 表达式n) 语句n else if (表达式n) 语句n; 语句n+ n+1 else 语句n+1; 例如: 例如: (score>=90 90) grade='A'; if (score>=90) grade='A'; (score>=80 80) grade='B'; else if (score>=80) grade='B'; (score>=70 70) grade='C'; else if (score>=70) grade='C'; (score>=60 60) grade='D'; else if (score>=60) grade='D'; grade='E'; else grade='E';
分支结构(选择结构) 4.4 分支结构(选择结构)
4.6】输入一个字符,若是大写字母,则输出其ascii ascii码 【例4.6】输入一个字符,若是大写字母,则输出其ascii码. #include <stdio.h> main() {char ch; ch=getchar(); if(ch>='A'&&ch<='Z') printf("ch=%d\ printf("ch=%d\n",ch); }
百位=X/100 百位=X/100 十位=X/10 百位* =X/10十位=X/10-百位*10 个位=X 十位*10-百位* =X个位=X-十位*10-百位*100 需三个变量) (需三个变量)
顺序输出个位,十位, 顺序输出个位,十位,百位
4.3 顺序结构的程序设计
<stdio. #include <stdio.h> main() a,i,j,k; {int a,i,j,k; n"); printf("Enter a:\n"); scanf("%3d",&a); scanf("% d",&a); i=a/100 100; i=a/100; j=a/10 10*i 10- *i; j=a/10-10*i; k=a-10*j 100*i *j*i; k=a-10*j-100*i; printf("% n",k,j,i); printf("%d%d%d\n",k,j,i); } 运行情况如下: 运行情况如下: Enter a: 127↙ 127↙ 721 /*i为百位数*/ /*i为百位数* /*j为十位数 为十位数* /*j为十位数*/ /*k为个位数 为个位数* /*k为个位数*/
y
n
4.2 复合语句
复合语句:多个语句用花括号扩起来组成的语句.
目的是将这多个语句看成是一条语句. 复合语句的一般形式: 例: { { int i,j; [说明部分] i=s; <语句部分> j=i++; } } 注意:内部各条语句还是以分号结尾,结尾的右花括号后不加分号. 注意:内部各条语句还是以分号结尾,结尾的右花括号后不加分号.
ch>='A && ch<='Z ch>= A'&& ch<= Z'
1(成立) 成立) 0(不成立) 不成立)
printf("ch=%d\ ,ch) printf( ch=%d\n",ch) ch=%d
分支结构(选择结构) 4.4 分支结构(选择结构)
二,if~else语句 if~else语句
if~else语句的一般形式: if~else语句的一般形式: 语句的一般形式
算法分析: 算法分析:
输 入 两 个 变 量 a和 b,并 输 出 显 示
a
2
b
t
交 换 a和 b,并 输 出 显 示
3
1 1 1 1
4.3 顺序结构的程序设计
main() {int a,b,t; printf("\nEnter the value of a and b\n"); printf("a,b="); scanf("%d,%d",&a,&b); 运行情况如下: printf("a=%d,b=%d\n",a,b); Enter the value of a and b t=a; a,b=2,7↙ a=b; b=t; 输出: a=2,b=7 printf("changed......\n"); changed…… printf("a=%d,b=%d",a,b); a=7,b=2 }
相关文档
最新文档