方法二:用switch语句 分析:
1 z3 @6 ^; I# |+ ^0 [! Q switch语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。
- D- x+ q: k4 @4 N) w) z #include"stdio.h"" P! ~/ [* W8 w6 b# K
main()
- F: x* e1 ^8 l7 k {
5 D1 w3 K0 r8 [) u6 y4 d int g,s;3 e2 q& y4 V* {# d0 d/ Y* M
char ch;
" f0 s! w' b9 T printf("\ninput a student grade:");1 L4 N m t7 r" q1 D' o
scanf("%d",&g);0 d5 q0 `; s; d Z: n' k
s=g/10;0 R7 h; k& v0 k
if(s10)
- g3 B* f7 ?0 t# Z% ?# U printf("\ninput error!");
e7 }* @9 m) K: z0 \7 Q: O else
( ], Q# q- \8 w, R$ W! f { switch (s)! `. E% y! `) v3 w9 X9 U' I
{ case 10:* ?8 Y* C- Q$ ~! R% Y6 \( W
case 9: ch='A'; break;' I; e! [2 r1 W& R3 ^1 }
case 8: ch='B'; break;
; a; E2 k4 e$ p, k) U$ N8 v% i; } case 7: ch='C'; break;7 ~* q% N6 s0 E" }
case 6: ch='D'; break;$ @, |! X' q' ]. D
default: ch='E';
: h; r1 S; s0 K }
- C/ t6 f. n( u# {% s# B printf("\nthe student scort:%c",ch);
4 p) f2 _* w+ S6 c0 ^) a2 O1 R& g/ T }5 w, H4 a3 @3 |
}
, S6 b, D" }6 n) O) ^ 输入测试数据,同方法一一样调试程序并写出结果。9 f2 ?5 A' z4 W U/ @; Z
【例3】有一函数:2 Y5 j: a, f) G M+ H
y=xx=10
% D+ F' y/ t$ j* D7 v 用scanf函数输入x的值(分别为x=10三种情况),求y值。; ]6 I/ _+ ]& l# U6 ~
分析:y是一个分段表达式。要根据x的不同区间来计算y的值。所以应使用If语句。
8 Y& W+ n) Y. E: k# I. C main()" M! E- {% ]$ |1 a6 G: l6 l
{
: c5 I) @9 q- {% b int x,y;6 f( ^- A8 P4 @; V" L1 g3 ?; B& g% k
printf(“please input x :”);+ e) Z3 m# N% M, G" M* J! H, B5 F
scanf(“%d”,&x);' J0 ^* p, |: G- p5 Y; H' H
if (xb)&&!c||18 r: J) h( p) R1 f) ^, y
(4) !(x=a)&&(y=b)&&0
# @: x, P/ ~2 J: ^ (5) !(a+b)+c-1&&b+c/2
" e' p5 C) S9 ?+ I) [ 3. 有3个整数a、b、c,由键盘输入,输出其中最大的数。* D. o6 P8 {% S$ w G1 g N
4.有一函数:- T3 b* g, E& y. Y5 Y
y=xx=10
& J, [* L' E x3 {+ [ 写一程序,输入x,输出y。
4 q U: \* g9 r+ d/ I 5.给出一百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,80~89为B, 70~79分为C,60~69分为D,60分以下为E。
5 H+ h/ `) r5 {; F( r 6.给一个不多于5位的正整数,要求:
A6 s& w% H, @8 ^: B! O5 y) \, U! c a. 求出它是几位数;
5 W- A) U Z# y- [$ n b. 分别打出每一位数字;: g. x9 W3 Q/ `+ m0 `- U, _: M
c. 按逆序打出各位数字,例如原数为321,应输出123。' u, C/ l4 ?7 I, M1 w3 ]
7.输入4个整数,要求按由小到大的顺序输出。 |