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