当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机等级考试二级C语言实验指导:选择结构程序设计
发布时间:2010/10/31 18:49:04 来源:城市学习网 编辑:ziteng
  实验四 选择结构程序设计
  【目的与要求】
  1.了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);
  2.学会正确使用逻辑运算符和逻辑表达式;
  3.熟练掌握if语句和switch语句。
  【上机内容】
  【一般示例】
  【例1】已知三个数a,b,c,找出最大值放于max中。
  分析:由已知可得在变量定义时定义四个变量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中的最大值。
  #include "stdio.h"
  main()
  {
  int a,b,c,max; /*定义四个整型变量*/
  scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);
  if (a>=b)
  max=a; /*a>=b*/
  else
  max=b; /*a  if (c>max)
  max=c; /*c是最大值*/
  printf("max=%d",max);
  }
  若输入下列数据,分析程序的执行顺序并写出运行结果
  (1)a=1,b=2,c=3
  (2)a=2,b=1,c=3
  (3)a=3,b=2,c=1
  (4)a=3,b=1,c=2
  (5)a=3,b=3,c=2
  (6)a=2,b=1,c=2
  【例2】输入某学生的成绩,经处理后给出学生的等级,等级分类如下:
  90分以上(包括90):A
  80至90分(包括80):B
  70至80分(包括70):C
  60至70分(包括60):D
  60分以下: E
  方法一:(用if嵌套`)
  分析:
  由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用if嵌套前,应先判断输入的成绩是否在0~100之间。
  #include"stdio.h"
  main()
  {
  int score;
  char grade;
  printf("\nplease input a student score:");
  scanf("%f",&score);
  if(score>100||score<0)
  printf("\ninput error!");
  else
  { if(score>=90)
  grade='A';
  else
  { if(score>=80)
  grade='B';
  else
  {if(score>=70)
  grade='C';
  else
  { if(score>=60)
  grade='D';
  else grade='E';
  }
  }
  }
  printf("\nthe student grade:%c",grade);
  }
  }
  输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。 [NextPage]   方法二:用switch语句
  分析:
  switch语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。
  #include"stdio.h"
  main()
  {
  int g,s;
  char ch;
  printf("\ninput a student grade:");
  scanf("%d",&g);
  s=g/10;
  if(s<0||s>10)
  printf("\ninput error!");
  else
  { switch (s)
  { case 10:
  case 9: ch='A'; break;
  case 8: ch='B'; break;
  case 7: ch='C'; break;
  case 6: ch='D'; break;
  default: ch='E';
  }
  printf("\nthe student scort:%c",ch);
  }
  }
  输入测试数据,同方法一一样调试程序并写出结果。
  【例3】有一函数:
  y=xx<1
  2x-11=  3x-11x>=10
  用scanf函数输入x的值(分别为x<1,1~10,>=10三种情况),求y值。
  分析:y是一个分段表达式。要根据x的不同区间来计算y的值。所以应使用If语句。
  main()
  {
  int x,y;
  printf(“please input x :”);
  scanf(“%d”,&x);
  if (x<1)
  {
  y=x;
  printf(“y=%d\n”,y);
  }
  else if (x<10)
  {
  y=2*x-1;
  printf(“y=%d\n”,y);
  }
  else
  {
  y=3*x-11;
  printf(“y=%d\n”,y);
  }
  【作业】
  1. c语言如何表示“真”与“假”?系统如何判断一个量的“真”与“假”?
  2. 写出下面各逻辑表达式的值。设a=3,b=4,c=5
  (1) a+b>c&&b= =c
  (2) a||b+c&&b-c
  (3) !(a>b)&&!c||1
  (4) !(x=a)&&(y=b)&&0
  (5) !(a+b)+c-1&&b+c/2
  3. 有3个整数a、b、c,由键盘输入,输出其中最大的数。
  4.有一函数:
  y=xx<1
  2x-11=  3x-11x>=10
  写一程序,输入x,输出y。
  5.给出一百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,80~89为B, 70~79分为C,60~69分为D,60分以下为E。
  6.给一个不多于5位的正整数,要求:
  a. 求出它是几位数;
  b. 分别打出每一位数字;
  c. 按逆序打出各位数字,例如原数为321,应输出123。
  7.输入4个整数,要求按由小到大的顺序输出。
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved