实验四 选择结构程序设计 【目的与要求】
9 ]2 f4 J. H& a 1.了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);* \& s ]0 X6 b1 e" h2 E( u
2.学会正确使用逻辑运算符和逻辑表达式;
1 y5 n9 o) L- [/ | 3.熟练掌握if语句和switch语句。
9 w3 F8 S& {3 W3 W2 C 【上机内容】
2 d2 | e& E d' m9 U 【一般示例】
3 E# N" q* ?/ v; L+ Y5 s( D. u 【例1】已知三个数a,b,c,找出最大值放于max中。2 f& a* F4 K% Q1 o# C7 I @
分析:由已知可得在变量定义时定义四个变量a,b,c和max,a,b,c是任意输入的三个数,max是用来存放结果最大值的。第一次比较a和b,把大数存入max中,因a,b都可能是大值,所以用if语句中if——else形式。第二次比较max和c,把最大数存入max中,用if语句的第一种形式if形式。Max即为a,b,c中的最大值。
( z- R# w% L; ?) n* v; Y #include "stdio.h"0 L+ G4 |! T6 @9 ]& `
main()- \0 ?, \. F# Z6 f. v/ `9 q
{& X! P$ W1 }& E: n$ N
int a,b,c,max; /*定义四个整型变量*/8 B3 e @6 x! e- T8 ^
scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);
5 C) ?4 L( _% w8 I) Q7 W if (a>=b)" l- N. I' f! a: V& O& H) u
max=a; /*a>=b*/0 v& ^, G! |& P' ?" v. L
else
/ `8 A2 S2 P5 e1 P! ^% l max=b; /*a if (c>max)
" Y: k5 x& o5 Q0 p& t! h max=c; /*c是最大值*/
- O' s9 T2 O3 h6 O; ?: e( ^. ~4 W printf("max=%d",max);1 }+ s( P/ j$ u8 G1 @2 m: D
}3 p! M% |! R/ a% Q/ ~( v7 p1 o
若输入下列数据,分析程序的执行顺序并写出运行结果
2 N' e6 }% A3 d+ {/ E (1)a=1,b=2,c=34 h: A N6 a0 m
(2)a=2,b=1,c=3
2 X+ _' c- [' D: k( p1 V (3)a=3,b=2,c=1
# V# n+ K$ n+ \0 H (4)a=3,b=1,c=23 x2 C- I8 }9 }! C- |/ _1 G6 ~
(5)a=3,b=3,c=2
3 B, [+ M" }$ r$ ^ (6)a=2,b=1,c=2 N9 z# r. ]3 A+ D% \8 o/ P
【例2】输入某学生的成绩,经处理后给出学生的等级,等级分类如下:
9 o& J2 u. U( ]# ^. [* N( d 90分以上(包括90):A" Z3 D5 i9 ^* ?4 P. ? ~
80至90分(包括80):B1 I1 u6 D Q& ]* \% S0 K. U3 `
70至80分(包括70):C
. Y6 [& C9 n+ D4 y1 E' u0 A& Z9 a 60至70分(包括60):D$ t# z# w1 O" |2 n4 F4 F
60分以下: E
$ ^3 k2 O+ M' V 方法一:(用if嵌套`)* E% K6 P7 M; r; `. n) e: `3 @2 M
分析:9 p: F9 a D5 z4 l# ?3 f: a& m
由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用if嵌套前,应先判断输入的成绩是否在0~100之间。
+ h0 D; U5 N; Y: G #include"stdio.h"
5 {' W7 ]8 f3 t2 t* Y+ W* t main()
S( q4 m1 l. |' @. `* b- ] {7 ?; p# Q! G' ^1 T# J
int score;
+ O) o( i- P0 N& {5 o char grade;: R4 U: X- l, ]" u
printf("\nplease input a student score:");
, B& W- N+ q+ c% A+ I) G$ B j8 s scanf("%f",&score);5 F# h! w* b# l, `; Y& R- U) [! i
if(score>100||score=90)
' Z* P" O8 |5 F, J ?5 a& j$ F grade='A';1 W' }+ a6 Z! S5 w% Q
else, N. e- K9 {6 _: R
{ if(score>=80). |2 _- I6 n& R
grade='B';2 y& d6 ]( a/ B1 m9 M
else6 L% @- e4 f" t' I% B2 h
{if(score>=70)
. f. v" p7 r1 y9 n) ~8 V% R# P3 v grade='C';, l' n S& o. w
else
4 `0 H' O) C T { if(score>=60)
4 U+ P$ h& g) D# I# E4 [ grade='D';
8 N) s" g( {, f, n( v" P else grade='E';' j# `" S! q4 Y& ?7 H
}2 ~1 V/ E* l" ?
}
. C: U, }1 {8 b) S. b }
1 |' e4 \3 ]; N8 W# R7 ]& F' s printf("\nthe student grade:%c",grade);
, z7 [" }0 U6 t8 ]) V3 W) ?6 _( r9 l }! h* I0 S) c1 |! U$ I
}4 s; C1 ^# S+ S# F
输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。 |