一、实验内容
1. 实验要求:判断成绩等级。
给定一百分制成绩,要求输出成绩的等级。90以上为A,80-89为B,70-79为C,60-69为D,60分以下为E,输入大于100或小于0时输出“输入数据错误”。 分别用if和用switch语句实现
代码:
#include <stdio.h> int main() { int grade; printf("请输入成绩: "); scanf("%d",&grade); if(grade>100||grade<0) { printf("数据错误"); } else { switch(grade/10) { case 10:case 9: printf("A"); break; case 8: printf("B"); break; case 7: printf("C"); break; case 6: printf("D"); break; case 5:case 4:case 3:case 2:case 1:case 0: printf("E"); break; } return 0; } }
#include <stdio.h> int main() { int grade; printf("请输入成绩: "); scanf("%d",&grade); if(grade>100||grade<0) { printf("数据错误"); } else if(grade>=90) { printf("A"); } else if(grade>=80) { printf("B"); } else if(grade>=70) { printf("C"); } else if(grade>=60) { printf("D"); } else if(grade<60) { printf("E"); } return 0; }
运行结果:
2.实验要求:判断整数位数及逆序输出。 输入一个不多于5位数的正整数,判断它是几位数并逆序输出。注意验证数据的合法性。
代码 :
#include <stdio.h> int main() { int n,a,b,c,d,e,f; printf("请输入一个不多于5位的正整数: "); scanf("%d",&n); if(n/100000>0||n<0) { printf("数据错误"); } else if(n/10000>0) { a=n/10000; b=n%10000/1000; c=n%10000%1000/100; d=n%10000%1000%100/10; e=n/10000%1000%100%10; f=e*100000+d*1000+c*100+b*10+a; printf("%05d是5位数",f); } else if(n/10000==0&&n/1000>0) { a=n/1000; b=n%1000/100; c=n%100/10; d=n%100%10; f=d*10+c*100+b*10+a; printf("%04d是4位数",f); } else if(n/10000==0&&n/1000==0&&n/100>0) { a=n/100; b=n%100/10; c=n%100%10; f=c*100+b*10+a; printf("%03d是3位数",f); } else if(n/10000==0&&n/1000==0&&n/100==0&&n/10>0) { a=n/10; b=n%10; f=b*10+a; printf("%02d是2位数",f); } else { printf("%d是1位数",n); } return 0; }
运行结果:
3.实验要求:回文数问题
给定一个5位数,判断它是否是回文数。例如:12321是回文数。回文数的特点是个位和万位相同,十位和千位相同。
代码:
#include <stdio.h> int main() { int n,a,b,c,d; printf("请输入一个五位数: "); scanf("%d",&n); a=n/10000; b=n%10000/1000; c=n%10000%1000%100/10; d=n%10000%1000%100%10; if(a==d&&c==b) { printf("n是回文数"); } else { printf("n不是回文数"); } return 0; }
运行结果:
4.实验要求:计算分段函数
y=-x+2.5 0 <= x < 5
y=2-1.5(x-3)(x-3) 5 <= x < 10
y=x/2-1.5 10 <= x < 20
输入x的值(x为整数),输出y的值,结果保留3位小数。
代码:
#include <stdio.h> int main() { int x; float y; printf("请输入一个大于0小于20的数: "); scanf("%d",&x); if(0<=x&&x<5) { y=-x+2.5; printf("%.3f",y); } else if(5<=x&&x<10) { y=2.0-1.5*(x-3)*(x-3); printf("%.3f",y); } else if(10<=x&&x<20) { y=x/2.0-1.5; printf("%.3f",y); } return 0; }
运行结果:
二·本次课知识点总结:
1.
条件运算符
一般形式: 表达式1 ? 表达式2 : 表达式3
if语句的嵌套
当if的条件满足或不满足时要执行的语句也是一条if或if…else语句,称为if语句的嵌套。
3.
if语句的嵌套
当if的条件满足或不满足时要执行的语句也是一条if或if…else语句,称为if语句的嵌套。
缩进格式并不能暗示else的匹配
实现if ~ else 正确配对方法:加{ }
4.
switch…case...break语句(多路分支结构)
swith语句的穿透性
“case 常量”只是起语句标号作用,在执行完该分支的语句后,若没有break语句,则会顺序执行到下一个case分支中去,称之为switch语句的穿透性。因此,为了保证各分支的正确执行,必须用break语句跳出。
6.
三·实验总结:
1.输入数据一定要加取地址符
2.中文英文符号要及时转换
3.else后面不加括号if后面不加分号