第二次实验报告

第二次实验报告

实验项目:简单算法和分支结构实验
姓名:杨康 实验地点:一教524 实验时间:2021.4.15

一、实验目的与要求

1、了解并认识分支结构的语法
2、准确的做出几种常见分支结构

二、实验内容

  1. 实验练习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语句之间的互换

四、预习第四章

posted @ 2021-04-19 18:19    阅读(51)  评论(1编辑  收藏  举报