第二次实验报告
第二次实验报告
实验项目:简单算法和分支结构实验
姓名:杨康 实验地点:一教524 实验时间:2021.4.15
一、实验目的与要求
1、了解并认识分支结构的语法
2、准确的做出几种常见分支结构
二、实验内容
- 实验练习3.3.1
1.问题描述:输入x值,输出满足函数关系的y值,并用C语言编写程序进行校验。
2.实验代码:
#include<stdio.h>
main()
{
float x,y;
printf("请输入x的值:");
scanf("%f",&x);
if(x<1)
y=x;
else if(x<10)
y=2*x-1;
else
{
y=3*x-1;
}
printf("y的值为%.2f\n",y);
}
3.问题分析:无太大问题,注意不要忘记符号
2.实验练习3.3.2
1.问题描述:用算法流程图描述求解鸡兔同笼问题的算法,用c语言程序表示出来
2.实验代码:
#include<stdio.h>
main()
{
int h,f,x,y;
printf("鸡兔总数,鸡兔脚总数:");
scanf("%d,%d",&h,&f);
if(x>0&&y>0)
{
x=(4*h-f)/2;
y=(f-2*h)/2;
printf("鸡有%d 兔有%d\n");
}
else
printf("输入错误!:\n");
}
3.问题分析:注意乘号不可忘记
3. 实验练习3.3.3
1.问题描述:有四个圆塔,圆心分别为(2,2)(2,-2)(-2,-2)(-2,2),圆半径为1,这四个塔高为10m,塔以外无建筑物。现输入任一坐标,若该点坐标在任意一个圆塔内,则输出圆塔高度;若不在圆塔内,则输出0。
2.实验代码:
#include<stdio.h>
#include<math.h>
main()
{
int h=10;
float x1=2,y1=2,x2=-2,y2=2,x3=2,y3=-2,x4=-2,y4=-2,x,y,d1,d2,d3,d4;
printf("请输入一个点(x,y):");
scanf("%f%f",&x,&y);
d1=sqrt((x-2)*(x-2)+(y-2)*(y-2)),
d2=sqrt((x+2)*(x+2)+(y-2)*(y-2)),
d3=sqrt((x-2)*(x-2)+(y+2)*(y+2)),
d4=sqrt((x+2)*(x+2)+(y+2)*(y+2));
if(d1>1&&d2>1&&d3>1&&d4>1)
h=0;
printf("该塔的高度:%d",h);
}
3.问题描述:在实验刚开始时没有思绪,后来问同学后找到了根号如何输入利用sqrt函数,以及头文件math的使用
4.实验练习4.3.1
1.问题描述:输入3个表示箱子长、宽、高的整数值,判断并输出该箱子是长方体还是正方体。
2.实验代码:
include<stdio.h>
main()
{
int l,w,h;
printf("请输入箱子的长,宽,高:\n");
scanf("%d%d%d",&l,&w,&h);
if(l==w&&w==h&&h==l)
printf("该箱子是正方体。\n");
else
printf("该箱子是长方体。\n");
return 0;
}
3.问题描述:无太大问题
5. 实验4.3.2
1.问题描述:编写程序实现如下功能:商店有打印纸(18元/本),墨盒(132元/个),光盘(4.5元/个)出售,商店进行优惠酬宾活动。具体规则如下:顾客购买商品的总额超过100元,优惠5%;超过200元,优惠6%;超过300元,优惠7%;超过400元,优惠8%;超过500元,优惠10%
2.实验代码:
#include<stdio.h>
main()
{
float x,y,z,w,h;
printf("请输入打印纸,墨盒,光盘的数量:");
scanf("%f,%f,%f",&x,&y,&z);
w=18*x+132*y+4.5*z;
if(w>500)
{h=w*0.9;
printf("应付款数=%.2f",h);}
else if(w>400)
{h=w*0.92;
printf("应付款数=%.2f",h);}
else if(w>300)
{h=w*0.93;
printf("应付款数=%.2f",h);}
else if(w>200)
{h=w*0.94;
printf("应付款数=%.2f",h);}
else if(w>100)
{h=w*0.95;
printf("应付款数=%.2f",h);}
else
{h=w;
printf("应付款数=%.2f",h);}
}
3.问题描述:第一遍运行时好几处错误,后来发现都是一些小问题,还是不够仔细造成的
6.实验练习4.3.3
1.问题描述:设计一种程序,输入某一年、月的数值,输出该月天数
2.实验代码:
#include<stdio.h>
main()
{
int year,month,days;
printf("输入年和月:\n");
scanf("%d%d",&year,&month);
switch (month)
{
case 2: if(year%4==0&&year%100!=0||year%400==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天",year,month,days);
return 0;
}
3.问题描述:刚开始不懂怎么排除400的倍数,后来通过翻书找到类似的
三、实验小结
1.通过此次实验加深了对if,switch语句结构的了解,并且学会了如何使用if,switch结构,大致学会了if语句和switch语句之间的互换