第二次实验报告
C程序设计实验报告
实验项目:
4.3.1 if语句的应用
4.3.2 switch/case语句的应用
4.3.3 switch/case语句嵌套结构if语句的应用
4.3.4 switch/case结构的嵌套应用
4.3.5 分析程序
姓名:欧阳思健 实验地点:514实验教室 实验时间:2019.04.03
一、实验目的与要求
4.3.1 if语句的应用
1.掌握C语言逻辑运算和关系运算的规则;
2.学会正确地使用关系式和逻辑表达式;
3.学会正确地使用关系表达式和逻辑表达式;
4.掌握if_else语句的使用方法。
4.3.2 switch/case语句的应用
1.掌握算术运算符和运算规则;
2.掌握switch/case语句的使用方法。
4.3.3 switch/case语句嵌套结构if语句的应用
1.学会正确使用关系表达式和逻辑表达式。
2.掌握switch/case语句语法和使用方法。注意switch语句的控制流程,在switch语句中break语句的用法
switch/case结构与if/else嵌套结构之间的转换。
4.3.4 switch/case结构的嵌套应用
1.switch/case结构的嵌套使用。
2.break语句与continue语句的用法。
4.3.5 分析程序
1.运行下列程序,分析输出的结果,并写入实验报告中。
2.运行下列程序,分析错误的原因,请修改程序,使其输出正确的结果,并写入实验报告,掌握C语言表达式与数学表达式的区别。
二、实验内容
4.3.1 if语句的应用
#include<stdio.h> main() { int l,w,h; printf("请输入箱子的长、宽、高: \n"); scanf("%d%d%d",&l,&w,&h); if(l==w&&w==h&&l==h) printf("该箱子是正方体。 \n"); else printf("该箱子是长方体。 \n"); return 0; }
此题无问题
4.3.2 switch/case语句的应用
#include <stdio.h> main() { double sum; int a,b,c,s; printf("请输入打印纸、墨盒、光盘数量:\n"); scanf("%d%d%d",&a,&b,&c); sum=18*a+132*b+4.5*c; s=sum/100; switch(s) { case 0: sum=sum; printf("应付款为:%lf",sum);break; case 1: sum=0.95*sum; printf("应付款为:%lf",sum);break; case 2: sum=0.94*sum; printf("应付款为:%lf",sum);break; case 3: sum=0.93*sum; printf("应付款为:%lf",sum);break; case 4: sum=0.92*sum; printf("应付款为:%lf",sum);break; case 5: sum=0.9*sum; printf("应付款为:%lf",sum);break; default : sum=0.9*sum; printf("应付款为:%lf",sum);break; return 0; } }
这个题目方法有多种,应选择变量较少的方法解答,方便自己理解
4.3.3 switch/case语句嵌套结构if语句的应用
#include <stdio.h> #include <math.h> main() { int y,m,days; printf("plz enter year and month:\n"); scanf("%d%d",&y,&m); switch(m) { case 2:if(y%4==0) days=29; else days=28; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break; case 4: case 6: case 9: case 11: days=30;break; } printf("%d年%d月有%d天",y,m,days); }
case和数字之间需要用空格隔开否则得不到结果
4.3.4 switch/case结构的嵌套应用
#include <stdio.h> main() { int x,y,n; float sum=0.0; printf("请选择: 1.日用品 2.文具 3.食品\n"); scanf("%d",&x); switch(x) { case 1: printf("请选择:1.牙刷(3.5元/支) 2.牙膏(6.2元/支)\n 3.肥皂(2元/块) 4.毛巾(8.6元/条)"); scanf("%d",&y); printf("数量?"); scanf("%d",&n); switch(y) { case 1:sum=3.5*n;break; case 2:sum=6.2*n;break; case 3:sum=2*n;break; case 4:sum=8.6*n;break; } break; case 2: printf("请选择:1.笔(3元/支) 2.笔记本(1.2元/本)\n 3.文件夹(12元/个) 4.文具盒(8.6元/个)"); scanf("%d",&y); printf("数量?"); scanf("%d",&n); switch(y) { case 1:sum=3*n ;break; case 2:sum=1.2*n;break; case 3:sum=12*n;break; case 4:sum=8.6*n;break; } break; case 3: printf("请选择:1.白糖(3.6元/包) 2.盐(1元/包)\n 3.饼(2元/个) 4.方便面(3.6元/条)"); scanf("%d",&y); printf("数量?"); scanf("%d",&n); switch(y) { case 1:sum=3.6*n;break; case 2:sum=n;break; case 3:sum=2*n;break; case 4:sum=3.6*n;break; } break; } printf("总计:%.2f元\n",sum); return 0; }
此题无问题
4.3.5 分析程序
1.
#include<stdio.h> int main () { double x=1000/3.0; double y=x-333.0; double z=3*y-1.0; printf("x=%lf\n",x); printf("y=%lf\n",y); printf("z=%lf\n",z); printf("x=%lf\n",x); if(z==0) printf("z==0.\n"); else printf("z不等于0.\n"); return 0; }
因为double定义双精度小数,完全保的有效数字是十五位,z-1.0为一个无限接近于0的一个负值
2.
#include<stdio.h> int main () { int num=20; if(5<num<10) printf("%d in range (5,10)!\n",num); else printf("%d out of range(5,10)!\n",num); }
如果num需要同时满足大于5小于10,应该这样表达num>5&&num<10