a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 71|回复: 1

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

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
 实验四 选择结构程序设计  【目的与要求】
7 l# N) X, @* T$ p8 w; N  1.了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);
7 L% h3 M# e5 f5 n! r/ P  2.学会正确使用逻辑运算符和逻辑表达式;
3 o+ L' K1 n7 \1 S+ R5 A  ?  3.熟练掌握if语句和switch语句。
3 m6 K; v; \4 y+ G) t8 E: O  【上机内容】
+ t0 u0 B+ D- G& {" t: [  【一般示例】
; A$ m# k+ P7 J4 }, {8 k8 _5 H  【例1】已知三个数a,b,c,找出最大值放于max中。
% T( j2 x6 c4 T3 M8 J; ^/ @, u  分析:由已知可得在变量定义时定义四个变量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中的最大值。; H' y$ X4 f$ b: o+ [6 U
  #include "stdio.h"' T4 D( E! I/ n  ^
  main()- `; n# U8 |# c' ~/ D% F
  {
0 l2 [: z" y9 b! r  int a,b,c,max; /*定义四个整型变量*/
/ h) F: H$ l; H  scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);
. U& Z  b  n; w( [9 v% g9 j7 d  if (a>=b)/ t3 F! {/ A8 b7 Q' @" w
  max=a; /*a>=b*/
/ U- ~/ z7 {& G, f/ x0 p. z+ u  else
6 h+ w  S! v' Z6 g  max=b; /*a  if (c>max)
, M" o! C: L8 K$ U/ l  max=c; /*c是最大值*/4 M6 h) e9 Q! N/ `# x$ ?4 c
  printf("max=%d",max);
8 Z$ j' s" L, l  }2 l$ w0 U: h9 h+ L: T2 \6 Q1 c! Z
  若输入下列数据,分析程序的执行顺序并写出运行结果# k' E, L: P, d# O( U
  (1)a=1,b=2,c=3: m2 S# _$ d8 O2 _' M
  (2)a=2,b=1,c=3
  U$ f$ j6 U% t. a( u6 N* h  (3)a=3,b=2,c=1+ c( n" P- P5 E  E
  (4)a=3,b=1,c=2  o4 r  C+ z) M' `
  (5)a=3,b=3,c=2+ L7 L% P) D: U: _9 {* H) G
  (6)a=2,b=1,c=2. h/ n1 X4 o# _8 B- |) X9 C# X
  【例2】输入某学生的成绩,经处理后给出学生的等级,等级分类如下:
5 n8 N! W8 n8 a8 O  90分以上(包括90):A
" f! u- ~- J6 ]; t4 E  80至90分(包括80):B5 \: r# E( t$ b' s1 c
  70至80分(包括70):C) I9 Z' y3 g* i
  60至70分(包括60):D
5 ]4 g) ]4 M2 W7 i+ x5 C' E: m  60分以下: E% S% u9 I; j% q
  方法一:(用if嵌套`)4 J5 @' p7 y1 k0 z( R$ e: E; j
  分析:
; U9 d( m5 g' ?& o+ B  由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用if嵌套前,应先判断输入的成绩是否在0~100之间。; c* @& i" ^: L- y1 y( |
  #include"stdio.h"" F: A4 G0 l8 f6 @3 a
  main()! Q" n8 a# V. m9 z  B# U' a
  {! S8 s) y/ t6 r, ~9 l4 E3 I
  int score;: a! T' p) _( P3 J4 ]1 S) z" n) |& d
  char grade;& r5 X2 v* D1 f0 I
  printf("\nplease input a student score:");
# r0 L# |8 a6 n$ U& b! _+ @1 L  scanf("%f",&score);
9 O& _9 @+ k4 f5 O  if(score>100||score=90)* g$ R4 N9 @+ n0 \
  grade='A';0 m- X2 @6 w; ^
  else
4 k7 O8 P1 Z7 T  { if(score>=80)
& d/ {) V4 B$ j& L$ D5 [  grade='B';' s1 @. R$ \7 s' l( ?3 d3 Y
  else
* Z$ r2 C) k5 U" s6 l  {if(score>=70)
" O" t5 X; T$ e: S" J- b, T  grade='C';
% Y# W# N/ e) ]" b: a  else
0 A' O0 N0 _  Y2 v5 {, n  { if(score>=60)' F1 t  F) p9 S* w+ ~
  grade='D';# Q8 R/ F$ X6 v3 I
  else grade='E';: }/ [7 b- y1 W5 M. o
  }
3 F8 Q; I5 @! K6 o" L0 }! a  }% @. `5 x0 s2 X0 d* H
  }& _" H" Q" X* Z( x: l- S/ W  U
  printf("\nthe student grade:%c",grade);- P+ t! Z. |" Q# C6 ]1 G
  }
0 r3 f$ o& l. ^2 a$ }  }
8 V7 u: m" x' N' D/ ~4 E" P, r8 W  输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。
回复

使用道具 举报

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

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

方法二:用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个整数,要求按由小到大的顺序输出。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 04:51 , Processed in 0.217677 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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