c语言第四章
计算机二级 C语言第四章-第五章
逻辑或
逻辑非
“&&”和“ ||”是双目运算符 “!”是单目运算符
C语言程序设计
第五章 选择结构程序设计
逻辑运算真值表
a 真 b 真 !a 假 !b 假 a&&b 真 a||b 真
真 假 假
假 真 假
假 真 真
真 假 真
假 假 假
真 真 假
逻辑运算符的优先次序 !(非) , &&(与),
优先次序:高(2) 结合方向:从右向左 (11) 从左向右
4.00, c=
6.00 s=
6.50
C语言程序设计
第四章 顺序程序设计
例4.11 从键盘输入大写字母,用小写字母输出
#include "stdio.h" void main() { char c1,c2; c1=getchar(); printf("%c,%d\n",c1,c1); c2=c1+32; printf("%c,%d\n",c2,c2); }
值为0 值为1 值为1 值为1 值为1 //(5>3)&&2||(8<(4-(!0))) 值为1 值为1
C语言程序设计
第五章 选择结构程序设计
复杂逻辑条件的表述
判断某一年year是否为闰年
判别闰年的条件(int year): 能被4整除: year%4==0 能被4整除但不能被100整除: (year%4==0)&&(year%100!=0) 能被400整除: year%400==0 综合起来: ((year%4==0)&&(year%100!=0))||year%400==0 优化语句: 此表达式为真时是闰年 (year%4==0&&year%100!=0)||year%400==0
C语言程序设计第4章
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语言4
4.6 递归
如果一个函数在调用的过程中出现直接或者间接地调用 该函数本身,称为函数的递归调用。C语言的特点之一就是 允许使用函数的递归调用。
int fn(int a) { int x,y;
…
y=fn(x);
return (3*y);
} 在调用函数fn()的过程中,又出现再次调用fn()函数,这 就是函数的递归调用,函数fn()称为递归函数。像函数fn()这 样直接调用自身的,称为函数的直接递归调用。
在函数体中也应将变量的声明放在使用该变量之前,否则会 出现编译错误。
4.2.2 函数声明与函数原型
(一)函数声明 形式如下:
返回数据类型 函数名(形式参数类型 形式参数名); 如 float max1(float a, float b); 注意:
当被调函数的定义位于主调函数之前,可以省略函数 声明;若定义在后,则必须在主调函数之前对被调函 数进行声明。
对于有参函数,在声明时可以省略形式参数的名称, 但类型不能省略。 如 float max1(float , float);
函数声明时不要忘记语句末尾的分号“;”。
4.2.2 函数声明与函数原型
(二)函数原型 形式如下:
返回数据类型 函数名(形参类型 形参名); 返回数据类型 函数名(形参类型);
4.4 函数返回类型与返回值
2.无返回值函数 如果函数没有返回值,则定义为“空”类型,类型说明 符为“void”。无返回值函数用于完成特定的处理任务, 执行完后不向主调函数返回任何值。如
void printstar() {
printf("********"); } 如果要在主调函数中调用printstar函数,则语句为:
n!=1 n!=n×(n-1)!
C语言-第4章 选择结构程序设计
第4章选择结构程序设计注:选择结构的考点,最重要的有两个,一个是逻辑表达式的值,另一个是分支界限。
弄明白这两个知识点,就能够以不变应万变了。
一、单项选择题1. 在C语言中,能代表逻辑值"真"的是。
A) true B)大于0的数C)非0整数D)非0的数2. 表示关系x<=y<=z的c语言表达式为。
A) (x<=y)&&(y<=z) B) (x<=y)AND(y<=z) C) (x<=y<=z) D) (x<=y)&(y<=z)3. 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是。
A) a>=10 or a<=0 B) a>=0|a<=10 C) a>=10 &&a<=0 D) a>=10‖a<=04、判断char型变量c1是否为大写字母的表达式为。
A)’A’<=c1<=’Z’ B)(c1>=’A’) & (c1<=’Z’)C)(’A’<=c1)AND (‘Z’>=c1) D)(c1>=’A’)&& (c1<=’’Z’)5. 有定义char c; c=getchar(); 判断字符变量c为大写字母的正确表达式为。
A) ‘A’=<c<=’Z’ B)c>=‘A’&& c<=’Z C)A=<c<=Z D) c>=A && c<=Z6. 设有语句“int a=4;b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的值是。
A)1B)0 C)-1 D)出错7. 设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是。
C语言 第4章 选择结构程序设计
#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) 如果 a>b,将a和b对换 , 和 对换 是 、 中的小者 { t=a; a=b; b=t; } a是a、b中的小者 if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
if (disc<0) 8<0为假 为假 printf(“has not real roots\n”); else 的值变为-1 的值变为 { p=-b/(2.0*a); p的值变为 的值变为0.71 的值变为 q=sqrt(disc)/(2.0*a); q的值变为 x1=p+q; x1的值变为 的值变为-0.29 的值变为 x2=p-q; x2的值变为 的值变为-1.71 的值变为 printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; }
if (disc<0) printf(“has not real roots\n”); else { p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; 复合语句 }
C语言有两种选择语句: 语言有两种选择语句: 语言有两种选择语句 (1)if语句,实现两个分支的选择结构 语句, 语句 (2)switch语句,实现多分支的选择结构 语句, 语句
C语言第4章-分支结构.
§【源程序】 §main( ) §{ int grade; printf ( "input the grade:"); § scanf ("%d",&grade); § if (grade>=90) printf("A\n"); § else if(grade>=80) printf("B\n"); § else if(grade>=70) printf("C\n"); § else if(grade>=60) printf("D\n"); § else printf("E\n"); §}
§2.添break、可跳出。见下节
【例呢?
§ //百分制成绩的等级划分问题之解法3(不完善):
§ main( )
§ {int grade; printf("input the grade:");
§ scanf("%d",&grade);
§ switch(grade/10) //按单值匹配,故要将范围映射为单值
§4.各个case子句出现的次序对执行结果没任 何影响,即顺序可以任意布局。
§5.每一个case能够拥有一条或多条语句,其最大的 不同之处在于使用多条语句时不需要用“{}”括起来。
§6.多个case可以共用一组执行语句。例如:
§
┆
§
case ‘A’:
§
case ‘a’: ++count ; break ;
§
《C语言程序设计课件》第四章-数组
#include <stdio.h> #define N 10 int main(void)
{ int a[N], i; printf("Enter %d numbers: ", N);
for (i = 0; i < N; i++)
for(i=0;i<1;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
a[0]
20
a[1]
02
a[2]
44
a[3]
55
a[4]
88
a[5]
99
for(i=0;i<5;i++) if (a[i]>a[i+1]) { ……}
for(i=0;i<4;i++) if (a[i]>a[i+1]) { ……}
4.2 一维数组
一维数组主要用来存储一组类型相同并且数量一定 的数据。其中,每个数据称为数组的一个元素。
4.2.1 一维数组定义 一维数组的定义形式如下: 类型名 数组名[常量表达式]; int x[100]; char string[10]; double data[10];
常量表达式给出了数组的长度,在C语 言中定义数组时必须确定数组的长度。
600
xxx[[[654]]]
700
xxx[[[765]]]
800
xxx[[[876]]]
900
xxx[[[987]]]
《C语言程序设计课件》第四章-循环语句
{ sum+=n; scanf("%d",&n); }
printf("The sum is :%d\n",sum);
return 0; }
从任意 n 个实数中选出最大数 和最小数
从任意 n 个实数中选出最大数和最小数
#include <stdio.h> int main( ) {
/*程序4-1*/ #include <stdio.h> int main() {
int i,sum=0; i=1; while(i<=100) {
sum += i; i++; } printf("sum=%d\n",sum); return 0; }
【例4-2】输入一行字符以回车键结束,分别 统计出其中英文字母、空格、数字和其它字符 的个数。
#include <stdio.h> int main( ) {
int i,n;
printf("This program prints a table of squares.\n"); printf("Enter number of entries in table:");
scanf("%d",&n); i=1; while (i<=n)
【例】求整数1~100的累加和,使用for语句实 现。
#include <stdio.h> int main() {
int i,sum=0; for(i=1;i<=100;i++)
C语言程序设计第4章
能够使用if语句和switch语句,进行 选择结构程序设计 会利用多分支结构解决较复杂逻辑 判断问题
目录
CONTENTS
00 案例4 百分制转换等级制 01 4.1 选择结构判定条件的构成 02 4.2单分支和双分支选择结构程序设计 03 4.3 多分支选择结构程序设计
目录
CONTENTS
04 4.4 小结 05 4.5 拓展案例
案例4 百分制转换等级制
问题描述
学生成绩管理系统中需要对老师录入的百分制转换为等 级制。百分制与等级制的对应关系如下:90-100 对应A、 80-89对应B、70-79对应C、60-69对应D、0-59对应E。
问题分析
这是一个需要根据不同条件作出相应选择的程序,根据 描述,我们可以定义float变量fScore用来存放成绩值, 从而根据题目列出下列条件表达式: fScore>=90&&fScore<=100 your grade is A fScore>=80&&fScore<=89 your grade is B fScore>=70&&fScore<=79 your grade is C fScore>=60&&fScore<=69 your grade is D fScore>=0&&fScore<=59 your grade is E
4.4 小结
(1)嵌套if-else语句和switch语句都是用来实现多分支选择结构的,它们的 应用环境不同,嵌套if-else 语句用于对多条件并列测试,从中取一的情形; switch语句用于单条件测试,从其多种结果中取一种的情形。 (2)一般情况下用switch能解决的问题,用嵌套if-else 也一样能解决,反 之用嵌套if-else 语句能解决的问题用switch也能解决,在使用时要根据具体 问题灵活运用。 (3)如果多分支选择结构中需要判断的逻辑关系只是是否相等,则最好用 switch语句。switch语句的执行效率高于嵌套if-else语句。
C语言课件第四章PPT
break; }
case 2: printf (“**3**\n”); } 运行结果为:**1**
5) case语句的嵌套。
**3**
else if (s<2000) d=.08;
else if (s<3000) d=.1;
else
d=.15;
f=p*w*s*(1-d); printf("\n w=%-f s=%-f f=%-f ",w,s,f);
}
条件运算符及条件表达式
条件运算符要求有三个运算量,这是一个三 目运算符,其表达式的一般格式:
流程图
程序如下: (c507)
main()
{ float f,p,w,s,d;
printf("input p,w,s : "); scanf("%f,%f,%f",&p,&w,&s);
if (s<250.) d=0.;
else if (s<500.) d=.02;
else if (s<1000.) d=.05;
。根
先程
看序
一,
下考
流虑
程系
图数
例:
程序c506:
#include <math.h> main() { float a,b,c,p,q,t,x1,x2;
printf("input a,b,c: "); scanf("%f,%f,%f",&a,&b,&c); if (a==0.) printf("a==0!!! return."); else { p=-b/(2.*a); t=b*b-4*a*c; q=sqrt(fabs(t))/(2.*a);
C语言程序设计第四章
运行情况: 1989↙ 1989is not a leap year.
2000↙
2000 is a leap year.
C程序设计
第五章
选择结构程序设计
例4.6 求
2 ax bx c 0 方程的解
#include "stdio.h" #include "math.h" main() {float a,b,c,d,disc,x1,x2,realpart,imagpart; scanf("%f,%f,%f",&a,&b,&c); printf("The equation"); if (fabs(a)<=1e-6) printf("is not a quadratic"); else disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4f\n",-b/(2*a)); else if(disc>1e-6) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2); } else {realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf("has complex roots:\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); printf("%8.4f-%8.4fi\n",realpart,imagpart); } }
c语言 第四章 选择结构课件
if (expr1) if (expr2) statement1 else statement2
内嵌if
if (expr1) if (expr2) statement1
else statement3
内嵌if
if (expr1) statement1
else if(expr3) statement3 else statement4
if ~ else 配对原则:缺省{ }时,else 总是和它上面离它最近的未配对的if配对
if(……) if(……) if(……) else…... else…...
else…...
例: if (a==b) if(b==c) printf("a==b==c");
else printf("a!=b");
if(x>y) printf("X>Y\n");
else printf("X<Y\n");
else printf("X==Y\n");
}
运行:Enter integer x,y:12,23 X<Y Enter integer x,y:12,6 X>Y Enter integer x,y:12,12 X==Y
内嵌if
if (expr1)
if (expr2) else
statement1 statement2
内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
例 输入两数并判断其大小关系
main() { int x,y;
printf("Enter integer x,y:"); scanf("%d,%d",&x,&y); if(x!=y)
第4章:串与数组 数据结构C语言第三版
又由于C语言采用行序为主序的存储方式,则有:
LOC(a3,2)=LOC(a0,0)+(i*n+j)*k=2000+(3*4+2)*4=2056
4.2.3稀疏矩阵
特殊矩阵是指非零元素或零元素的分布有一定规律的矩阵。
为了节省存储空间, 可以利用特殊矩阵的规律,对它们进行压缩存储。
/*继续匹配下一个字符*/
{ i++; j++; }
/*主串和子串依次匹配下一个字符*/
else
/*主串、子串指针回溯重新开始下一次匹配*/
{ i=i-j+1;j=0; } /*主串从下一个位置开始匹配,子串从头开始匹配*/
}
if (t[j]>=‘\0’) return i-j; /*返回匹配的第一个字符的下标*/
例如,“a”、“ab”、“abc”和“abcd”等都是“abcde”的子串。
4.1.2串的基本运算
(1)求串长StrLength(s):返回串s中字符个数。 (2)串赋值StrAssign(s1,s2):将一个字符串常量s2赋给串变量s1。 (3)串连接StrConcat(s1,s2):返回由两个串s1和s2连接在一起形成的新串。 (4)求子串SubStr(s,i,len):返回串s中从第i个字符开始的、由连续len个字符组成的子串。 (5)串比较StrComp(s1,s2):若s1=s2,返回值为0;若s1<s2,返回值<0;若s1>s2,返回值>0; (6)串定位StrIndex(s,t):返回子串t在主串s中首次出现的位置,找不到返回-1。 (7)串插入操作StrInsert(s,i,t):将串t插入到串s的第i个字符上,并返回产生的新串。 (8)串删除操作StrDel(s,i,len):从串s中删去从第i个字符开始的长度为len的子串,并返 回产生的新串。 (9)串替换操作StrRep(s,t,r):将串s中所有与t相等且不重叠的子串用串r替换,并返回产 生的新串。 (10)串相等StrEqual(s,t):若两个串s与t相等则返回真;否则返回假。 (11)串输出DispStr(s):输出串s的所有元素值。
C语言讲义C4
{ char ch; scanf(“%c”, &ch); ch= (ch>= ‘A’&& ch<= ’Z’)? (ch+32) : ch; printf(“%c”, ch) }
输入 A a
21
4.4 switch 语句
switch语句 问题:为什么引出switch语句? 该语句为开关语句,解决多分支的情况。 格式:switch(表达式) { case (常量表达式1):语句块1; case (常量表达式2):语句块2;
3
4.1.2 逻辑运算符及其运算结果
用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。
1. 逻辑运算符及其优先次序 C语言提供三种逻辑运算符: && (逻辑与) 、 || (逻辑或) 、! (逻辑非) 注:“&&”和“|| ”是“双目(元)运算符”,它要求有两个运算量 操作数。而“! ”是“单目(元)运算符”,只要求有一个运算 量。 [例]:a&&b+c 、 (a>b)||(x>y) 、!(x<y)
0 0.0 2 0.0 5 d 0.0 8 0.1 0.1 5 s 250 250 s 500 500 s 1000 1 0 0 0 s 2 0 0 0 2 0 0 0 s 3 0 0 0 3 0 0 0 s
(4) case后的“常量表达式”只起到语句标号 的作用,而不进行条件判断,故在执行完某个 case后的语句序列后,将自动转移到下一个case 继续执行。其计算过程为:
23
a. 计算表达式的值; b. 找到与表达式的值相同的case常量表达式,执行该case后边 的语句序列,之后依次往下执行语句块。 表达式
《c语言程序设计教学资料》第4章---键盘输入与屏幕输出
编辑ppt
编辑ppt
格式化输出
例: m.n 例:int a=1234; float f=123.456; char ch=‘a’; printf(“%8d\n%2d\n”,a,a); printf(“%f\n%8f\n%8.1f\n%.2f\n%.2e\n”,f,f,f,f,f); printf(“%3c\n”,ch);
float f=123.456; printf(“%f\n%10f\n%10.2f\n%.2f\n%-10.2f\n”,f,f,f,f ,f ); }
编辑ppt
%e格式符
指定以指数形式输出实数 VC++给出小数位数为6位
指数部分占5列 小数点前必须有而且只有1位非零数字 printf(”%e”,123.456); 输出:1.234560 e+002
补空格。
编辑ppt
输出实数时的有效位数。
#include <stdio.h> void main() { float x,y;
x=111111.111; y=222222.222; printf(″%f″,x+y); }
编辑ppt
例4.8 输出实数时指定小数位数。
#include <stdio.h> void main() {
有以下几种用法:
① %f。不指定字段宽度,由系统自动指定字段宽度,使整数
部分全部输出,并输出6位小数。应当注意,在输出的数字中
并非全部数字都是有效数字。单精度实数的有效位数一般为7位。
②%m.nf。指定输出的数据共占m列,其中有n位小数。如果
c语言函数库-第四章(字符串函数)
c语言函数库第四章(字符串函数)1. atof:字符串转浮点型函数 (1)2. atoi:字符串转整型函数 (2)3. atol:字符串转长整型函数 (3)4. memchr:字符搜索函数 (4)5. memcmp:字符串比较函数 (4)6. memcpy:字符串拷贝函数 (5)7. memmove:字块移动函数 (6)8.memset:字符加载函数 (8)9. strcat:字符串连接函数 (8)10. strchr:字符串中字符首次匹配函数 (9)11. strcmp:字符串比较函数 (10)12. strcpy:字符串拷贝函数 (11)13. strcspn:字符集逆匹配函数 (12)14. strdup:字符串新建拷贝函数 (13)15. strerror:字符串错误信息函数 (14)16. strlen:计算字符串长度函数 (15)17. strlwr:字符串小写转换函数 (16)18. strncat:字符串连接函数 (16)19. strncmp:字符串子串比较函数 (17)20. strncpy:字符串子串拷贝函数 (18)21. strpbrk:字符集字符匹配函数 (19)22. strrchr:字符串中字符末次匹配函数 (20)23. strrev:字符串倒转函数 (21)24. strset:字符串设定函数 (22)25. strspn:字符集匹配函数 (22)26. strstr:字符串匹配函数 (23)27. strtod:字符串转换成双精度函数 (24)28. strtok:字符串分隔函数 (25)29. strtol:字符串转换成长整型函数 (27)30. strtoul:字符串转换成无符号长整型函数 (28)31. strupr:字符串大写转换函数 (29)32. strupr:字符串大写转换函数 (29)1.atof:字符串转浮点型函数函数原型:float atof(const char *str);头文件:#include<stdlib.h>是否是标准函数:是函数功能:将字符串转换成浮点值,也就是将字符串str转换成浮点值然后获取转换后的结果。
第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)。
• • • • 接收单个字符。 对应的头文件:conio.h。 程序执行时,输入的字符不显示。 一般可用在程序中获得屏幕等待。
4.2 选择结构控制语句
4.2.1 if语句 语句
2.If语句的标准形式(双分支 语句) . 语句的标准形式 双分支if语句 语句的标准形式( 语句)
• 作用:满足条件执行语句 ,否则执行语句 。 作用:满足条件执行语句1,否则执行语句2。 • 格式: 格式: if(条件式) 语句1; else 语句2; • 执行:先计算条件式的值,若条件成立,执行语句 ,否则执行语句 。 执行:先计算条件式的值,若条件成立,执行语句1,否则执行语句2。 程序执行流程如图 如图4-4所示。 所示。 程序执行流程如图 所示
单分支if语句举例( ) 单分支 语句举例(1/4) 语句举例
【例4-1】输入四级成绩,如果通过则提示通过。 】输入四级成绩,如果通过则提示通过。
#include <stdio.h> void main() { int score; printf("请输入你的英语四级成绩:"); scanf("%d",&score); if (score>=425) printf("\n恭喜你,你的英语四级通过啦!\n"); }
4.2 选择结构控制语句
• 在C语言中,用if 语句可以实现二路分支结构。用switch语句可以实现 语言中, 语句可以实现二路分支结构 可以实现二路分支结构。 语句可以实现 语言中 语句 多路分支结构。 多路分支结构。
4.2.1 if语句 语句
1.If语句的简单形式(单分支 语句) . 语句的简单形式 单分支if语句 语句的简单形式( 语句)
4.1 选择结构程序的概述
4.1.1 选择结构的概念
• 定义:选择结构,或称选取结构,或称分支结构,包含一个 定义:选择结构,或称选取结构,或称分支结构, 判断条件,根据给定的条件是否成立而选择执行语句序列1 判断条件,根据给定的条件是否成立而选择执行语句序列 或语句序列2,如图4-1、4-2所示。 所示。 或语句序列 ,如图 、 所示
#include <stdio.h> void main() { int score; printf("请输入分数:"); 【例4-7】编写程序,从键盘输入一个分数, 】编写程序,从键盘输入一个分数, scanf("%d",&score); 若该分数在区间[90,100]内score<=100) 优秀” 若该分数在区间 if (score>=90 && ,则显示“优秀”, , 内 则显示“ 若该分数在区间[80,89]内,则显示“良好”, 若该分数在区间 , printf("优秀!\n"); 内 则显示“良好” else if (score>=80 && score<90) 若该分数在区间[70,79]内,则显示“中等”, 若该分数在区间 , printf("良好\n"); 内 则显示“中等” else if (score>=70 && score<80) 若该分数在区间[60,69]内,则显示“及格”, 若该分数在区间 , printf("中等\n"); 内 则显示“及格” 若该分数在区间[0,59]内,则显示“不及格 若该分数在区间 else if (score>=60 && score<70) ”, , 内 则显示“不及格” printf("及格\n"); 否则显示“输入越界!” 否则显示“输入越界!(score>=0 && score<60) else if printf("不及格\n"); else printf("输入数据越界!\n"); }
从键盘上输入一个大写字母, 从键盘上输入一个大写字母,输出其对应的小写字母和 ASCII值 值
#include "stdio.h" void main() { char ch; printf("请输入一个字母:"); scanf("%c",&ch); printf(“转换成小写字母为:%c,其ASCII码值为%d”, ch+32,ch+32); }
4.1 选择结构程序的概述
4.1.2 选择结构程序解决的问题
• 在现实生活中,经常要进行判断决策是典型的“选择结构” 在现实生活中,经常要进行判断决策是典型的“选择结构” 。 • 选择结构程序设计步骤 选择结构程序设计步骤 程序设计步骤: 首先,要确定选择的条件。 首先,要确定选择的条件。 然后,找出判断条件有多少种可能, 然后,找出判断条件有多少种可能,即该条件有多少种情 况(值)。 值 。 最后,再确定每种可能情况所要进行的处理。 最后,再确定每种可能情况所要进行的处理。
getchar()函数说明 函数说明
getchar()函数:
• 可以接收字符串送到内存缓冲区,按回车键表示数据输入完毕 ,函数获得的字符是字符串的第一个字符。 • 当语句前面有其他输入函数时,该函数可能会获得回车字符。 • 程序执行时,输入的字符显示在屏幕上。
getch()和getche()函数:
void main() { char ch; printf("请输入一个字母:"); scanf("%c",&ch); if (ch>='A' && ch<='Z') { ch+=32; printf("转换成小写字母为:"); } printf("%c\n",ch); }
单分支if语句举例( ) 单分支 语句举例(4/4) 语句举例
个数a、 、 , 【例4-4】输入 个数 、b、c,要求按由小到大的顺序输 】输入3个数 出。
#include <stdio.h> void main() { float a,b,c,t; printf("请输入3个数:"); scanf("%f,%f,%f",&a,&b,&c); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;} printf("由小到大排序后为:\n"); printf("a=%.2f,b=%.2f,c=%.2f\n",a,b,c); }
上机作业1 上机作业
教务处的查分时间是星期二和星期四,请从键盘上输入一 个星期号,若是允许的查分时间则提示“可以去查分!”
#include <stdio.h> void main() { int a; printf(“今天是星期(数字1~7):”); scanf(“%d”,&a); if(a==2||a==4) printf(“可以去查分!”); }
双分支if语句举例( ) 双分支 语句举例(2/2) 语句举例
【例4-6】输入三角形的三边,如果构成三角形则求三角 】输入三角形的三边, 形的面积,否则提示数据错误。 形的面积,否则提示数据错误。
上机作业2 上机作业
教务处的查分时间是星期二和星期四,请从键盘上输入一 个星期号,若是允许的查分时间则提示“可以去查分!” ;若不是周二和周四,则提示“请星期二或星期四去查分 !”
第4章 选择结构的程序设计 章
主要内容
本章主要内容: 本章主要内容:
4.1 4.2 4.3 4.4 选择结构程序的概述 选择结构控制语句(重点) 选择结构控制语句(重点) 选择结构程序设计实例(重点) 选择结构程序设计实例(重点) 上机实训
复习
1. 概念
顺序结构程序设计 • 语句的作用 顺序程序结构是按照程序书写顺序, 顺序程序结构是按照程序书写顺序, •。 自上而下,依次执行。 自上而下,依次执行语句格式 • 执行过程 • 注意问题
双分支if语句举例( ) 双,如果通过则提示通过。 否则提 】输入四级成绩,如果通过则提示通过。 示不通过。 示不通过。
#include <stdio.h> void main() { int score; printf("请输入你的英语四级成绩:"); scanf("%d",&score); if (score>=425) printf("\n :) 恭喜你,你的英语四级通过啦!\n"); else printf("\n :( 这次没通过,下次继续努力!\n"); }
2. 语句
• 输出语句:printf();语句 输出语句: printf()语句 putchar(); 作用: • 输入语句:scanf(); getchar(); 输入语句: • 作用:用于输出变量或表达式的值 putchar()语句 语句
3. 常见的程序
• 公式计算 • 信息显示
• 格式:printf(“格式控制符”,输出列表 格式: 格式控制符” 输出列表); 格式控制符 输出列表 • 格式控制符: 作用: 作用:用于输出字符数据 • 格式控制符:%d,%x,%o,%u,%f,%x,%g,%c,%s scanf()语句 字符 语句 字符); • 格式:putchar(字符 格式: • 作用:从键盘上接收数据(整型、实型、字符型) 作用:从键盘上接收数据(整型、实型、字符型) • 字符:可以是常量或变量 字符: 语句 getchar()语句 • 格式:scanf(“格式控制符”,地址列表 格式: 格式控制符” 地址列表); 格式控制符 地址列表 • 作用:用于输入字符数据 作用: • 格式控制符:%d,%x,%o,%u,%f,%x,%g,%c,%s 格式控制符: • 格式:变量 格式:变量=getchar();