C语言程序设计实验报告(三)
C程序设计实验报告
实验项目:
4.3.1、if语句的应用
4.3.2、switch……case语句的应用
4.3.3、switch……case语句嵌套if语句的应用
4.3.4、switch……case语句嵌套的应用
4.3.5、分析程序
计算器的简单应用
姓名:陈庆楚 实验地点: 家 实验时间: 3月28日
实验内容
4.3.1.if 语句的应用
1.实验目的:
- 正确使用C语言逻辑运算和关系运算;
- 正确使用关系表达式和逻辑表达式;
- if--else 语句的使用方法。
2.问题描述:
读入了个表示箱子长、宽、高的整数值,判断并输出该箱子是正方体还是长方体。
3.实验代码:
#include<stdio.h> main() { int l,w,h; printf("请输入箱子的长,宽,高:\n"); scanf("%d%d%d",&l,&w,&h); if (l=w=h) printf("该箱子是正方体。"); else printf("该箱子是长方体。"); return 0; }
4.问题分析:
无
4.3.2、switch--case 语句的应用
1.实验目的:
正确使用算术运算符和运算规则;
switchr- case语句的使用方法。
2.问题描述:
编写程序实现如下功能:商店有打印纸(18元本)墨盒(132元/个)、光盘(4.5元/片)出售,商店进行优惠酬宾活动。具体规则如下:顾客购买商品的总额超过100元,优惠5%;超过200元,优惠6%;超过300元,优惠7%;超过400元,优惠8%;超过500元,优惠10%。根据不同的购买量,计算应付货款。
3.实验代码:
#include<stdio.h> main() { double d,m,g,sum; int y; printf("请输入打印纸、墨盒、光盘的数量:"); scanf("%lf%lf%lf",&d,&m,&g); sum=18*d+132*m+4.5*g; y=sum/100; switch (y) { case 4:printf("应付款数=%.2f",0.92*sum);break; case 3:printf("应付款数=%.2f",0.93*sum);break; case 2:printf("应付款数=%.2f",0.94*sum);break; case 1:printf("应付款数=%.2f",0.95*sum);break; default :printf("应付款数=%.2f",0.90*sum);break; } }
#include<stdio.h> main() { double d,m,g,sum; int y; printf("请输入打印纸、墨盒、光盘的数量:"); scanf("%lf%lf%lf",&d,&m,&g); sum=18*d+132*m+4.5*g; y=sum/100; if (y==1) printf("应付款数=%.2f",0.95*sum); else if(y==2) printf("应付款数=%.2f",0.94*sum); else if(y==3) printf("应付款数=%.2f",0.93*sum); else if(y==4) printf("应付款数=%.2f",0.92*sum); else printf("应付款数=%.2f",0.90*sum); }
#include<stdio.h> main() { double d,m,g,sum; int y; printf("请输入打印纸、墨盒、光盘的数量:"); scanf("%lf%lf%lf",&d,&m,&g); sum=18*d+132*m+4.5*g; y=sum/100; if (y>=5) printf("应付款数=%.2f",0.90*sum); else { switch (y) { case 4:printf("应付款数=%.2f",0.92*sum);break; case 3:printf("应付款数=%.2f",0.93*sum);break; case 2:printf("应付款数=%.2f",0.94*sum);break; case 1:printf("应付款数=%.2f",0.95*sum);break; }} }
4.问题分析:
case<i>中的i只能是常量表达式,而不是变量表达式,因此编写代码时要尽量往情况少的反面思考,简化代码。
4.3.3、switch..case 语句嵌套if语句的应用
1.实验目的:
-
会正确使用switch中的表达式.
-
switc-ease 语句的语法及使用分法。
- 注意switch语句的控制流程,在switch语句中break语句的用法。
2.问题描述:
输人某一-年、月的数值,输出该月的天数。
3.实验代码:
#include<stdio.h> main() { int year,mouth,days; printf("Please enter year and mouth :\n"); scanf("%d%d",&year,&mouth); switch (mouth) { case 2:{ if(year%400==0||year%4==0&&year%100!=0) days=28; else days=29;}break; case 4:days=30;break; case 6:days=30;break; case 9:days=30;break; case 11:days=30;break; default:days=31;break; } printf("days=%d",days); }
4.问题分析:
无
4.3.4、switch.. case结构欣套的应用
1.实验目的:
switch...case结构的嵌套使用。
练习break语句的用法。
2.问题描述:
编写一个自动售货机的程序。该程序应具有如下功能:有两级菜单,一级菜单是商品类 型的选择;二级菜单是具体商品的选择(商品价格和品种可以自拟)。顾客先选择商品类型,然后选择具体商品,输人购买数量。自动售货机根据选择的商品和输人的数量,计算并显示所选商品的总金额。
3.实验代码:
#include<stdio.h> main() { int a,b,c; double sum; printf("请选择:1.辣条 2.方便面 3.汽水\n"); scanf("%d",&a); switch (a) { case 1: printf("请选择:1.卫龙(3元/包) 2.源氏(5元/包) 3良品铺子(4元/包)\n "); scanf("%d",&b); printf("数量:\n"); scanf("%d",&c); switch (b) { case 1:sum=3*c;break; case 2:sum=5*c;break; case 3:sum=4*c;break; } break; case 2: printf("请选择:1.康师傅红烧牛肉面(4.5元/桶) 2.白象汤好喝招牌猪骨汤面(6元/桶) 3.统一老坛酸菜牛肉味面(4元/桶)\n "); scanf("%d",&b); printf("数量:\n"); scanf("%d",&c); switch (b) { case 1:sum=4.5*c;break; case 2:sum=6*c;break; case 3:sum=4*c;break; } break; case 3: printf("请选择:1.百事可乐(2.5元/瓶) 2.雪碧(3元/瓶) 3.芬达(2.5元/瓶)\n "); scanf("%d",&b); printf("数量:\n"); scanf("%d",&c); switch (b) { case 1:sum=2.5*c;break; case 2:sum=3*c;break; case 3:sum=2.5*c;break; } break; } printf("总计:%.2f\n",sum); }
4.问题分析:
注意应用switch……case语句之后,别忘了printf的输出结果,否则程序将无法进行。
4.3.5、程序分析
1.运行下列程序,分析错误的原因并修改程序,使其输出正确的结果。
/*3y4 8.0%/
#include <stdio.h>
int main()
{
int num=20;
if (5<rum<10)
printf("%d in range (5, 10) !\n",num) ;
else
printf("%d out of range (5,10)!)n" ,num);
2.实验代码:
#include<stdio.h> main() { int num=9; if (10>num&&num>5) printf("%d in range (5,10)!\n",num); else printf("%d out of range (5,10)!\n",num); }
3.问题分析:
判断条件中的逻辑结构错误,错误:a>b>c,正确:a>b&&b>c.
计算器的简单应用
#include<stdio.h> main() { int i=0; float a,b; char c; while (1){ printf("输入两位数进行运算:"); scanf("%f%c%f",&a,&c,&b); switch(c) { case'+':printf("%.2f+%.2f=%.2f\n",a,b,a+b);break; case'-':printf("%.2f-%.2f=%.2f\n",a,b,a-b);break; case'*':printf("%.2f*%.2f=%.2f\n",a,b,a*b);break; case'/':if(b=0) printf("除数为零!"); else printf("%.2f/%.2f=%.2f\n",a,b,a/b);break; default:printf("输入有误"); } }}
#include<stdio.h> main() { int i=0; float a,b; char c; for (;;){ printf("输入两位数进行运算:"); scanf("%f%c%f",&a,&c,&b); switch(c) { case'+':printf("%.2f+%.2f=%.2f\n",a,b,a+b);break; case'-':printf("%.2f-%.2f=%.2f\n",a,b,a-b);break; case'*':printf("%.2f*%.2f=%.2f\n",a,b,a*b);break; case'/':if(b=0) printf("除数为零!"); else printf("%.2f/%.2f=%.2f\n",a,b,a/b);break; default:printf("输入有误"); } }}
#include<stdio.h> main() { int i=0; do { float a,b; char c; printf("输入两位数进行运算:"); scanf("%f%c%f",&a,&c,&b); switch(c) { case'+':printf("%.2f+%.2f=%.2f\n",a,b,a+b);break; case'-':printf("%.2f-%.2f=%.2f\n",a,b,a-b);break; case'*':printf("%.2f*%.2f=%.2f\n",a,b,a*b);break; case'/':if(b=0) printf("除数为零!"); else printf("%.2f/%.2f=%.2f\n",a,b,a/b);break; default:printf("输入有误"); } }while(1); }
实验小结
1、计算器实验当中,检验代码时,如果输入有误,容易出现死循环,解决这一问题的方法便是给程加一个限制条件或者中断代码限制循环。
2、本周的实验报告最大的收获便是学会while、do…while、for语句的基本用法。

浙公网安备 33010602011771号