第3讲C语言顺序结构
- 格式:ppt
- 大小:293.00 KB
- 文档页数:20
c语言3大基本结构C语言是一种广泛应用的编程语言,其简洁高效的特点使其成为了许多程序员的首选语言。
在学习C语言时,了解它的基本结构是非常重要的。
C语言中有三个基本结构,分别是顺序结构、选择结构和循环结构。
下面将详细介绍这三种基本结构。
一、顺序结构顺序结构是指程序按照代码书写顺序依次执行的过程。
在C语言中,每一行代码都会按照书写顺序被执行。
例如:```#include <stdio.h>int main(){printf("Hello, World!\n");printf("This is my first C program.\n");return 0;}```以上代码就是一个典型的顺序结构程序。
程序从第一行开始执行,按照代码书写顺序依次执行每一行代码,直到程序结束。
二、选择结构选择结构是指根据条件判断来决定程序执行哪些代码段。
在C语言中,选择结构主要有if语句和switch语句两种形式。
1. if语句if语句可以根据条件判断来决定是否执行某段代码。
其基本形式如下:```if (condition){// 如果condition为真,则执行这里的代码}else{// 如果condition为假,则执行这里的代码}```例如:```#include <stdio.h>int main(){int a = 10;if (a > 0){printf("a是正数\n");}else{printf("a是负数或零\n");}return 0;}```以上代码中,if语句根据变量a的值判断是否为正数,如果是则输出"a是正数",否则输出"a是负数或零"。
2. switch语句switch语句也可以根据条件判断来决定执行哪些代码段。
其基本形式如下:```switch (expression){case value1:// 如果expression等于value1,则执行这里的代码break;case value2:// 如果expression等于value2,则执行这里的代码break;default:// 如果expression不等于任何一个case中的值,则执行这里的代码break;}```例如:```#include <stdio.h>int main(){int score = 85;switch (score / 10) {case 10:case 9:printf("优秀\n"); break;case 8:printf("良好\n"); break;case 7:printf("中等\n");break;case 6:printf("及格\n");break;default:printf("不及格\n");break;}return 0;}```以上代码中,switch语句根据变量score的值判断成绩等级,根据不同的分数段输出不同的信息。
06c语言程序设计教案程序的控制结构—顺序结构int a=-1;printf(“%d,%o”,a,a);输出结果为:-1,177777这是因为-1在内存中以补码形式存放(见图3-2)。
八进制数为从低位开始,以三位一组划分为一个八进制数。
3)x格式符。
以十六进制数无符号形式输出整数。
例如:int a=-1;printf(“%x,%o,%d”,a,a,a);输出结果为:ffff,177777,-1十六进制数为从低位开始,见图3-2,以四位一组划分为一个数。
4)u格式符。
以十进制数无符号形式输出整数。
一个有符号的(int)型数据能够用%d格式输出,也能够用%u格式输出。
要注意两类数据的取值范畴大小。
例如:无符号数据的输出。
main(){unsigned int x=65535;int y=-1;printf(“x=%d,%o,%x,%u\n”,x,x,x,x);printf(“y=%d,%o,%x,%u\n”,y,y,y,y);}运行结果为:x=-1,177777,ffff,65535y=-1,177777,ffff,65535即-1的二进制形式以无符号形式输出时为整数65535。
5)c格式符。
用来输出一个字符。
例如:char x=’A’;printf(“%c,%d\n”,x,x);运行结果为:A,65能够看出,一个范畴在0~255的整数,既能够用%d格式输出,也能够用%c格式输出。
输出该整数或者整数对应ASCII的字符。
6)s格式符。
用来输出一个字符串,该格式有以下用法:①%s例如:printf(“%s”,”HELLO”);运行结果为:HELLO②%±ms,假如%ms字符串的实际宽度小于m,右对齐,左端补空格,%-ms,字符串左对齐,右端补空格;否则,不受m限制,输出实际宽度。
③%±m.ns,若%m.ns取字符串左端n个字符,输出在m列的右端,左端补空格;%-m.ns,取字符串左端n个字符,输出在m列的左侧,右侧补空格;若m<n,则m自动取n 值输出n个字符。
选择结构程序设计☐3.1 关系和逻辑表达式☐3.2 If 语句和switch 语句☐3.3 选择结构程序设计3.1 关系和逻辑表达式☐关系运算符及其优先次序☐关系表达式☐逻辑运算符及其优先次序☐逻辑表达式关系运算符及其优先次序☐关系运算符⏹种类:< <= == >= > !=⏹结合方向:自左向右⏹优先级别:<<=>>===!=优先级6(高)优先级7(低)例c>a+b //c>(a+b)a>b!=c //(a>b)!=ca==b<c //a==(b<c)a=b>c //a=(b>c)⏹关系表达式的值:是逻辑值“真”或“假”,用1和0表示例int a=3,b=2,c=1,d,f;a>b (a>b)==c b+c<a d=a>bf=a>b>c<>//表达式值1//表达式值1//表达式值0//d=1//f=0语言程序设计第二章数据描C关系表达式<>例若a=0; b=0.5; x=0.3;则a<=x<=b的值为0例5>2>7>8在C中是允许的,值为0例int i=1, j=7,a;a=i+(j%4!=0);则a=2例‘a‟>0 结果为‘A‟>100 结果为1语言程序设计第二章数据描关系表达式例注意区分“=”与“==”int a=0,b=1;if(a=b)printf(“a equal to b”);elseprintf(“a not equal to b”);例应避免对实数作相等或不等的判断如 1.0/3.0*3.0==1.0 结果为可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6语言程序设计第二章数据描a b !a !b a&&b a||b 真假真假假假真真3.1.3 逻辑运算符及其优先次序☐逻辑运算符⏹种类:! && ||⏹逻辑运算真值表⏹C 语言中,运算量:0表示“假”,非0表示“真”,运算结果: 0表示“假”,1表示“真”,<>真假假假假假真真假假真真真假真真语言程序设计第二章数据描! (2)&& (11)|| (12)高低例a<=x && x<=b a>b&&x>y a==b||x==y !a||a>b ●优先级:●结合方向:! :从右向左&& :从左向右|| :从左向右<>// (a<=x) && (x<=b) //(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)言程序设计第二章数据描 3.1.4 逻辑表达式! (2)&& (11)|| (12)高低●优先级:●结合方向:例a=4;b=5;!a a&&b a||b!a||b 4&&0||25>3&&2||8<4-!0…c ‟&&…d ‟<>值为1值为0值为1值为1值为1值为1//(5>3)&&2||(8<(4-(!0))) 值为1言程序设计第二章数据描! :从右向左&& :从左向右|| :从左向右优先级:●结合方向:⏹短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符<>例a&&b&&c//只在a为真时,才判别b的值;只在a、b都为真时,才判别c的值例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言程序设计第二章数据描! (2)&& (11)|| (12)高低! :从右向左&& :从左向右|| :从左向右⏹结构化程序设计☐基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)☐结构化程序:由三种基本结构反复嵌套构成的程序叫~☐优点:结构清晰,易读,提高程序设计质量和效率⏹三种基本结构☐顺序结构A B A B流程图N-S图PAB真假PBA 真假选择结构kA1A2AiAnk=k2k=k1k=kn k=ki ......●二分支选择结构●多分支选择结构循环结构●当型循环结构●直到型循环结构PA假真当P为真AAP真假A直到P为真注:A,B,A1….An可以是一个简单语句,也可以是一个基本结构☐3.2if 语句和switch 语句3.2.1 if 语句的三种形式⏹形式一:▪格式:if(expression)statement▪执行过程:expr statement非0=0例:if (x>y)printf(“%d”,x);exprstatement1statement2非0=0●形式二:◆格式:if (expression)statement1elsestatement2◆执行过程:例:if (x>y) max=x;else max=y;形式三:▪格式:if ( expr1 ) statement1else if (expr2 ) statement2else if (expr3 ) statement3…...[ else statementn ]expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0◆执行过程:例:if (salary>1000) index=0.4;else if (salary>800) index=0.3;else if (salary>600) index=0.2;else if (salary>400) index=0.1;else index=0;如:if(a==b&&x==y) printf(“a=b,x=y”);if(3) printf(“OK”);if(…a‟) printf(“%d”,‟a‟);●说明:◆if 后面的表达式类型任意◆语句可以是复合语句◆if(x) ⇔if(x!=0)if(!x) ⇔if(x==0)例考虑下面程序的输出结果: #include <stdio.h>main(){ int x,y;scanf(“%d,%d”,&x,&y);if(x>y)x=y; y=x;elsex++; y++;printf(“%d,%d \n”,x,y);}Compile Error!语句的嵌套: 一般形式:if (expr1)if (expr2) statement1else statement2elseif(expr3) statement3else statement4内嵌if 内嵌ifif (expr1)if (expr2) statement1elsestatement2内嵌ifif (expr1)if (expr2) statement1elsestatement3内嵌if if (expr1)statement1elseif(expr3)statement3elsestatement4内嵌ifif ~ else 配对原则:缺省{ }时,else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...例:if (a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if (a==b){ if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);实现if ~ else 正确配对方法:加{ }例考虑下面程序输出结果:main(){ int x=100,a=10,b=20;int v1=5,v2=0;if(a<b)if(b!=15)结果:-1if(!v1)x=1;elseif(v2) x=10;x=-1;printf(“%d”,x);}条件运算符☐一般形式:表达式1 ? 表达式2 : 表达式3☐执行过程☐功能:相当于条件语句,但不能取代一般if 语句例if (a>b)printf(“%d”,a);else printf(“%d”,b);printf(“%d”,a>b?a:b);例求a+|b|printf(“a+|b|=%d \n”,b>0?a+b:a -b);expr1取expr2值取expr3值非0=0例(a==b)?‟Y‟:‟N‟(x%2==1)?1:0(x>=0)?x:-x (c>=…a‟ && c<=…z‟)?c -‟a‟+‟A‟:c☐条件运算符可嵌套如x>0?1:(x<0?-1:0)☐优先级: 13☐结合方向:自右向左如a>b?a:c>d?c:d a>b?a:(c>d?c:d)☐expr1、expr2、expr3类型可不同,表达式值取较高的类型<>例x?…a‟:…b‟ //x=0,表达式值为‘b‟; x‡0,表达式值为‘a‟x>y?1:1.5 //x>y ,值为1.0; x<y ,值为1.5语言程序设计第二章数据描述C3.语句(开关分支语句)一般形式:switch( 表达式){ case E1:语句组1;break;case E2:语句组2;break;…….case En:语句组n;break;[default:语句组;break;]}执行过程:switch 表达式语句组1语句组2语句组n语句组…...E 1 E 2Endefault case说明:●E1,E2,…En是常量表达式,且值必须互不相同●语句标号作用,必须用break跳出●case后可包含多个可执行语句,且不必加{ }●switch可嵌套●多个case可共用一组执行语句如:……case …A‟:case …B‟:case …C‟:printf(“score>60\n”);break;……..例switch(score){ case 5: printf(“Very good!”);case 4: printf(“Good!”);case 3: printf(“Pass!”);case 2: printf(“Fail!”);default : printf(“data error!”);}运行结果:score为5时,输出:Very good! Good! Pass! Fail! data error!例void main(){ int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ case 0: a++; break;case 1: b++; break;}case 2: a++;b++; break;case 3: a++;b++;}printf(“\na=%d,b=%d”,a,b);}运行结果:a=2,b=13.3 选择结构程序设计程序举例/*ch4_1.c*/#include <stdio.h>main(){ int x,y;printf("Enter an integer:");scanf("%d",&x);y=x;if(y<0)y= -y;printf("\ninteger:%d--->absolute value:%d\n",x,y);}例求一个数的绝对值运行:Enter an integer:-12integer:-12--->absolute value :12/*ch4_2.c*/#include <stdio.h>main(){ int a,b;printf("Enter integer a:");scanf("%d",&a);printf("Enter integer b:");scanf("%d",&b);if(a==b)printf("a==b\n");elseprintf("a!=b\n");}例输入两个数并判断两数相等否运行:Enter integer a:12↵Enter integer b:12↵a==b 运行:Enter integer a:12↵Enter integer b:9↵a!=b/*ch4_3.c*/#include <stdio.h>main(){ char c;printf("Enter a character:");c=getchar();if(c<0x20) printf("The character is a control character\n");else if(c>='0'&&c<='9') printf("The character is a digit\n");else if(c>='A'&&c<='Z') printf("The character is a capital letter\n");else if(c>='a'&&c<='z') printf("The character is a lower letter\n");else printf("The character is other character\n");}例判断输入字符种类运行:Enter a character :↵The character is a control character 运行:Enter a character :8 ↵The character is a digit 运行:Enter a character :D ↵The character is a capital letter 运行:Enter a character :h ↵The character is a lower letter 运行:Enter a character :F1 ↵The character is other character例输入两数并判断其大小关系/*ch4_4.c*/#include <stdio.h>main(){ int x,y;printf("Enter integer x,y:"); scanf("%d,%d",&x,&y);if(x!=y)if(x>y) printf("X>Y\n");else printf("X<Y\n"); elseprintf("X==Y\n");}运行:Enter integer x,y:12,23↵X<YEnter integer x,y:12,6↵X>YEnter integer x,y:12,12↵X==Y例根据输入字母输出字符串/*ch4_5.c*/#include <stdio.h>main(){ int c;printf("Enter m or n or h or other:");c=getchar();switch(c){ case 'm': printf("\nGood morning!\n");break;case 'n': printf("\nGood night!\n"); break;case 'h': printf("\nHello!\n"); break;default : printf("\n????????\n"); break;}}。
c语言的三种基本程序结构1. 顺序结构顺序结构是一种基本的程序结构,由一组语句按照顺序执行,每个语句执行后按照顺序执行下一条语句。
在C语言程序中,顺序结构是最基本的结构,首先执行主函数中的第一条语句,然后顺序执行每一个语句直到程序结束。
例如:在上述代码中,语句1和2按照顺序执行,输出结果为“Hello World!”、“Welcome to C Programming!”。
2. 分支结构分支结构是程序在执行过程中根据条件的不同而选择不同的执行语句,从而实现不同的操作。
常见的分支结构有if语句和switch语句。
if语句:if(condition){//条件成立执行的语句}else{//条件不成立执行的语句}switch语句:switch(expression){case value1://执行语句break;case value2://执行语句break;…default://执行语句break;}在上述代码中,根据输入的值选择不同的输出,如果flag为1,则输出“You chose option 1.”,以此类推。
3. 循环结构循环结构是程序反复地执行一段语句,直到满足条件时才退出循环。
C语言中循环结构分为for循环、while循环和do-while循环。
for循环:for(initialization; condition; increment/decrement){//循环体}在上述代码中,输出1~5的整数。
while循环:while(condition){//循环体}。