c语言实验报告
实验项目:分支结构实验 姓名:熊承启
4.3.1if语句的应用
问题描述:
读入三个分别表示箱子长宽高的整数值,判断并输出该箱子是长方体还是正方体。
程序框图:

程序实现:
#include<stdio.h>
int main()
{
int l,w,h;
printf("请输入箱子的长,,宽,高:\n");
scanf("%d,%d,%d",&l,&w,&h);
if(l==w==h)
printf("该箱子为正方体。\n");
else
printf("该箱子为长方体。\n");
return 0;
}
4.3.2switch/case语句的应用
问题描述:
统一程序实现如下功能:商店有打印纸(18元/本)、墨盒(132元/个)、光盘(4。5元/片)出售,商店进行优惠酬宾活动。具体做法如下:顾客购买商品的总额达到了100元,优惠5%;达到了200元,以上优惠6%;达到了300元以上,优惠7%;达到了400元以上,优惠8%;达到了500元以上,优惠10%。根据不同的购买量,打印应付货款。
程序框图:

程序实现:
#include <stdio.h>
int main()
{
int x,y,z,n;
float sum=0;
printf("请输入打印纸,墨盒,光盘的数量:\n");
scanf("%d,%d,%d",&x,&y,&z);
sum=18*x+132*y+4.5*z;
printf("总价: %f\n",sum);
n=sum/100;
switch(n)
{
case 1 :printf("sum=%2f",sum*0.95);break; case 2 :printf("sum=%2f",sum*0.94);break; case 3 :printf("sum=%2f",sum*0.93);break; case 4:printf("sum=%2f",sum*0.92);break; case 5:
case 6:
case 7:
case 8:
case 9:printf("sum=%2f",sum*0.9);break;
default: printf("sum=%2f",sum); } }
4.3.3switch/case语句嵌套if语句的应用
问题描述:
输入某一年月,输入该月的天数
程序框图:

程序实现:
#include <stdio.h>
int main(){
int year,mouth,days;
printf("please enter year and mouth:\n");
scanf("%d%d",&year,&mouth);
switch (mouth){
case 2:if((((year)%4==0)%100!=0)||((year)%400)==0)
printf("days==29");
else
printf("days=28");
break;
case 1:printf("days==31");break;
case 3:printf("days==31");break;
case 5:printf("days==31");break;
case 7:printf("days==31");break;
case 8:printf("days==31");break;
case 10:printf("days==31");break;
case 12:printf("days==31");break; case 4:printf("days==30");break;
case 6:printf("days==30");break;
case 9:printf("days==30");break;
case 11:printf("days==30");break;
return 0;
}
}
4.3.4switch/case结构的嵌套应用
问题描述:.
编写一个自动售货机的程序。该程序应具有如下功能:有二级菜单,一级菜单是商品类型的选择;二级菜单是具体商品的选择(商品价格和品种可以自拟)。顾客先选择商品类型,然后选择具体商品,输入购买数量。自动售货机根据选择的商品和输入的数量,计算并显示所选商品的总金额。
程序实现
#include<stdio.h>
int main()
{
int x,n,y;
float sum=0.0;
printf("请选择:1.日用品 2.文具 3.食品\n");
scanf("%d",&x);
switch(x)
{
case 1:printf("请选择:1.牙刷(3.5元/支) 2.牙膏(6.2元/支)\n");
printf(" 3.肥皂(2 元/块) 4.毛巾(8.6元/条)\n");
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");
printf(" 3.文件夹(12元/个) 4.文具盒(8.6元/个)\n");
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");
printf(" 3.饼(2元/个) 4.方便面(3.6元/条)\n ");
scanf("%d",&y);
printf("数量?");
scanf("%d",&n);
switch(y)
{
case 1:sum=3.6*n;break;
case 2:sum=1*n;break;
case 3:sum=2*n;break;
case 4:sum=3.6*n;break;
}
break;
}
printf("总计:%.2f元\n",sum);
return 0;
}
问题阐述:
该题容易在格式上出现错误,三个分别的switch结构并列
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=%1f\n",x);
printf("y=%1f\n",y);
printf("z=%1f\n",z);
if(z==0) printf("z==0.\n");
else printf("z不等于0.\n");
return 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);
}
更改后
#include<stdio.h>
int main()
{
int num=20;
if(5<num&&num<10)
printf("%d in range (5,10)!\n",num);
else
printf("%d out of range (5,10)!\n",num);
}
这道题是关于C语言表达式与数学表达式的区别,原题目中if后写的是(5<num<10),这是数学表达式的写法,C语言表达式的正确写法应该是(num>5&&num<10)。
三、实验小结
这节实验课运行的程序有些是比较难想出来的,比如说商店打折导致分支的条件很多时,这些都是需要认真思考的。
1.迅速地进行中英文输入法的切换。
2.学会区分数学表达式和C语言表达式的不同。
3.记得case后要空一格才能接数字。
c语言实验报告的更多相关文章
- C语言实验报告二
实验一:第11次实验作业报告 题目:方阵循环右移 实验要求:将给定n×n方阵中的每个元素循环向右移m个位置,即将第0.1.⋯.n−1列变换为第n−m.n−m+1.⋯.n−1.0.1.⋯.n−m−1列. ...
- R语言- 实验报告 - 利用R语言脚本与Java相互调用
一. 实训内容 利用R语言对Java项目程序进行调用,本实验包括利用R语言对java的.java文件进行编译和执行输出. 在Java中调用R语言程序.本实验通过eclipse编写Java程序的方式,调 ...
- 第一次C语言实验报告
一.实验题目,设计思路,实现方法 实验四4-2-9三个数由小到大输出,要求比较三数大小并按顺序输出.运用穷举法列举所有可能性再对应输出.运用多分支结构. 实验四4-2-4 三天打鱼两天晒网,运用循环结 ...
- c语言实验报告(四) 从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b.
a串中最小元素后的字符被舍弃了. #include<stdio.h>#include<string.h>void main(){ int i,min=0; char a[2 ...
- C语言实验报告(五) 用自定义函数求2~n之间的素数
#include<stdio.h>#include <math.h>int main(){ int i,n; printf("input n:"); ...
- C语言实验报告(五) 两个正整数的最大公约数
编程实现求两个正整数的最大公约数,要求计算最大公约数用函数fun(int a,int b)实现. #include<stdio.h>void main(){ int n,a,b; in ...
- C语言实验报告(四)完全数
完全数,又称完美数或者完备数.是一些特殊的自然数.它所有的真因子的和,恰好等于它本身.编程找出1000以内的所有完全数,并输出该数成为完全数的因子. (例如6=1+2+3.按照6,its factor ...
- 第二次C语言实验报告
#一.设计题目,设计思路,实现方法 ##设计题目 15-10 找最长的字符串,14-5 指定位置输出字符串,13-6 数组循环右移,12-5 查找指定字符,11-5 打印杨辉三角. ##设计思路 15 ...
- C语言程序设计实验报告三
C程序设计实验报告 姓 名:张美盛 实验地点:家 实验时间:2020年3月29日 实验项目:4.3.1 If语句的应用 4.3.2 switch-case的应用 4.3.3 switch-case嵌套 ...
随机推荐
- springboot webmvc初始化:一个登陆异常引出的话题
1.场景复现: 一个登陆异常引出的问题. 我们通过精心组织组件扫描的方式,来装配不同的子模块,形成一个可运行的应用: 在载入某个子模块后,我们发现应用虽然正常启动,但尝试登陆的时候,出现一个很异常的异 ...
- gat和post封装代码和爬虫的5个步奏
1了解需求2根据需求找网站3请求4获取5存储from urllib import request, parsefrom urllib.error import HTTPError, URLError ...
- Android反编译apk并重新打包签名(Mac环境)
工具下载 apktool :https://ibotpeaches.github.io/Apktool/install dex2jar:https://github.com/pxb1988/dex2j ...
- Python输入数组(一维数组、二维数组)
一维数组: arr = input("") //输入一个一维数组,每个数之间使空格隔开 num = [int(n) for n in arr.split()] //将输入每个数以空 ...
- cin.get();cin.clear();cin.sync()
先看代码: #include<iostream> using namespace std; int main(){ int c,x; cout<<"输入大小" ...
- 请解释ASP.NET 中的web 页面与其隐藏类之间的关系?
一个ASP.NET 页面一般都对应一个隐藏类,一般都在ASP.NET 页面的声明中指定了隐藏类例如一个页面 Tst1.aspx 的页面声明如下 <%@ Page language="c ...
- Jsの练习-数组常用方法 -forEach()
forEach() : 对数组进行遍历循环,对数组中的每一项运行给定函数. 格式: arr.forEach(function(value,index){}) <!DOCTYPE html> ...
- 虚拟机3种网络模式(桥接、nat、Host-only)
http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646007.html
- pseudo-class与pseudo-element的不同点与相同点
关于两者的区别,其实是很古老的问题.但是时至今日,由于各种网络误传以及一些不负责任的书籍误笔,仍然有相当多的人将伪类与伪元素混为一谈,甚至不乏很多CSS老手.早些年刚入行的时候,我自己也被深深误导,因 ...
- css清除浮动方式总结
1.通过父元素overflow:hidden,缺点:超出部分隐藏,不推荐使用 <!DOCTYPE html> <html lang="en"> <he ...