a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 72|回复: 1

[C语言] 计算机等考C语言实验指导:选择结构程序设计

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
 实验四 选择结构程序设计  【目的与要求】
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的数据。
回复

使用道具 举报

 楼主| 发表于 2012-7-31 21:48:09 | 显示全部楼层

计算机等考C语言实验指导:选择结构程序设计

方法二:用switch语句  分析:
& E% }- z: t+ a  B. o8 \' P( A1 a  switch语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。- f7 C) w: p3 k! b1 o
  #include"stdio.h"
  }" N" g+ ]: T5 F- p  main(): g8 k8 A5 H) J* @' N3 D$ w
  {
: \6 _6 K- y3 _. Y# R  int g,s;
5 G0 {' C- \" m* k9 s  char ch;* c. p* P, F5 K1 e1 _6 B
  printf("\ninput a student grade:");
2 t4 U4 R9 P% h' n- \2 u  scanf("%d",&g);: c0 U' r7 Z5 y1 N, W) A$ j
  s=g/10;. B  X7 \3 s0 ?# P
  if(s10)
1 G% e* T7 k( Y  printf("\ninput error!");
1 o% Y% T  T( r* D  i2 A  else
& u6 R. e0 u; a3 K6 @5 L& U: T* v* M  { switch (s)8 m2 h. \  d& A- f
  { case 10:6 j. T: N& n: O, e! S$ r: C1 Y
  case 9: ch='A'; break;  l% \. \0 M" p+ C
  case 8: ch='B'; break;
3 m! o# ?& M. u% m3 E  case 7: ch='C'; break;
* _3 g; {6 r5 ^$ ]& }- s  case 6: ch='D'; break;
# H4 g+ r+ U4 H/ r) ~5 R% @/ B4 V  e  default: ch='E';
1 k6 d# e. j. c+ M8 m7 r1 c; G" O  }
! G4 \  s1 c+ a! J  printf("\nthe student scort:%c",ch);* ?1 V4 P& \2 }" r4 _
  }
1 E% s; i- B5 {" L+ T  C- U  }4 ~) T! y/ _. z$ ]4 v1 Q
  输入测试数据,同方法一一样调试程序并写出结果。5 A  x, R: ^, t" l0 M- }
  【例3】有一函数:
+ _" Y8 Q( x( W/ L; o  y=xx=10( s' w. e% U  `3 c
  用scanf函数输入x的值(分别为x=10三种情况),求y值。
7 b2 [: F# m8 D- H5 \7 H5 l3 Z  分析:y是一个分段表达式。要根据x的不同区间来计算y的值。所以应使用If语句。0 K# n( t/ ~- z/ m9 q9 R0 a4 d& n
  main()1 J1 f. y  x$ M: b, i6 l6 X% j! e
  {6 y3 s. w# D( Z# f2 S' ^
  int x,y;( V# _+ P$ H: g- L
  printf(“please input x :”);2 e, y% B1 m, K. |
  scanf(“%d”,&x);8 t% I+ d) i5 A8 r1 p
  if (xb)&&!c||1' p2 K- b9 w2 S
  (4) !(x=a)&&(y=b)&&0
4 w$ ]/ |8 s# n- y0 k$ Z' s2 c  (5) !(a+b)+c-1&&b+c/2
+ _% K: W/ b. {3 R, t) e3 [2 g  3. 有3个整数a、b、c,由键盘输入,输出其中最大的数。/ f9 W+ t. B; T% Z
  4.有一函数:' M& Z3 u- v) A( g& d" o
  y=xx=10: i7 o/ Y) W! b$ c8 |& q$ E
  写一程序,输入x,输出y。
9 S; r* z) Q4 f# F2 f8 ^( @  5.给出一百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,80~89为B, 70~79分为C,60~69分为D,60分以下为E。3 L9 B* A2 }3 o  f# r0 S8 `
  6.给一个不多于5位的正整数,要求:
. t: _4 p$ p- Q! [) _# Q  a. 求出它是几位数;( z& w; e; v# A; G
  b. 分别打出每一位数字;) L9 ?- Q6 r7 H1 J/ z: \
  c. 按逆序打出各位数字,例如原数为321,应输出123。
5 L0 h# Q( |- ~/ N5 \+ h' j& m# W9 c& u9 H  7.输入4个整数,要求按由小到大的顺序输出。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-13 17:55 , Processed in 0.849012 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表