第二次实验报告

c语言程序设计实验报告

姓名:刘学瑞 实验地点:一教522 实验时间:2021.4.15

、实验目的与要求

1.用if语句根据条件的真假进行判断的方法
2.正确使用运算符
3.掌握C语言逻辑值的表示方法(0代表“假”,1代表“真”)
4.学会正确的使用逻辑表达式和关系表达式
5.掌握各种形式的if语句语法和使用方法。注意if语句中if和else的匹配关系,以及if语句的嵌套
6.掌握switch语句的语法和使用方法。注意在switch语句中break语句的语法及switch语句的嵌套
7.能独立编写分支结构程序并测试通过
8.用if语句、switch语句解决简单的应用问题并上机实现

二、实验内容

1.实验练习:3.3.1
(1)问题描述:设计合适的算法流程图。输入x值,输出满足函数关系的y值。
(2)实验代码:

#include<stdio.h>
main()
{
	float x,y;
	printf("请输入x的值;\n");
	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)问题分析:
·if后面的括号里写完条件语句之后,不用输入分号

2.实验练习:3.3.2
(1)问题描述:用算法流程图描述求解鸡兔同笼问题的算法:已知鸡兔的总头数为h,总脚数为f,求鸡兔各有多少只?
(2)实验代码:

#include<stdio.h>
main()
{
 	int h,f,x,y;
 	printf("please input h,f:\n");
 	scanf("%d,%d",&h,&f);
 	if(h>0&&f>0)
	{
 		x=(4*h-f)/2;
 		y=(f-2*h)/2;
 		printf("鸡有%d 兔有%d\n",x,y);
 	}
 	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):\n");
	scanf("%f,%f",&x,&y);
	d1=sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y));
	d2=sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y));
        d3=sqrt((x3-x)*(x3-x)+(y3-y)*(y3-y));
        d4=sqrt((x4-x)*(x4-x)+(y4-y)*(y4-y));
        if(d1>1&&d2>1&&d3>1&&d4>1)
        h=0;
        printf("该塔高度为%d\n",h);
} 

(3)问题分析:
·根号是用sqrt函数且开头要加上#include<math.h>

4.实验练习:4.3.1
(1)问题描述:取箱子长、宽、高的整数值,判断并输出该箱子是正方体还是长方体
(2)实验代码:

#include<stdio.h>
main()
{
	int l,w,h;
	printf("请输入箱子的长、宽、高:\n");
	scanf("%d,%d,%d",&l,&w,&h);
	 if(l==w&&w==h)
	   printf("该箱子是正方体。\n");
	else
	   printf("该箱子是长方体。\n");
	return 0;
}

**(3)问题分析:注意%d间有逗号
5.实验练习:4.3.2
(1)问题描述:编写程序实现如下功能:商店有打印纸(18元/本)、墨盒(132元/个)、光盘(4.5元/片)出售,商店进行优惠酬宾活动。具体规则如下:顾客购买商品的总额超过100元,优惠%5;超过200元,优惠%6;超过300元,优惠%7;超过400元,优惠%8;超过500元,优惠%10。根据不同的购买量,计算应付货款。
(2)实验代码:

#include<stdio.h>
void main()
{
	int x,y,z,a;//x为打印纸的数量,y为墨盒的数量,z为光盘的数量
	float sum;
	sum=0.0;
	printf("请输入打印纸,墨盒,光盘的数量:\n");
	scanf("%d%d%d",&x,&y,&z);
	sum=18*x+132*y+4.5*z;
	a=sum/100;
	switch(a)
	{
		case 1:sum=sum*0.95;break;
		case 2:sum=sum*0.96;break;
		case 3:sum=sum*0.93;break;
		case 4:sum=sum*0.92;break;
		default:sum=sum*0.9;break;
	}
	printf("应付款%.2f",sum);
	return 0;
}

(3)问题分析:对sum运用不太熟
6.实验练习:4.3.3
(1)问题描述:输入某一年、月的数值,输出该月的天数。
(2)实验代码:

#include <stdio.h>
int main()
{
	int year,month,days;
	printf("please enter year and month :\n");
	scanf("%d %d",&year,&month);
	switch(month)
	{
		case 2:
		 if(year%4==0||year%400==0)
		  printf("days=29");
		 else
		case 1:
	    case 3:
	    case 5:
	    case 7:
	    case 8:
	    case 10:
		case 12:printf("days=31");break;
		case 4:
		case 6:
		case 9:
		case 11:printf("days=30");break;				
    }
    return 0;
}

(3)问题分析:闰年的判断方法式年份可整除4或可整除400

三、实验小结

1.总结所学内容,归纳知识点
(1)要注意在 switch 语句中正确地使用 break 语句,以使程序能正常地从 switch 分支中跳出,避免发生逻辑错误。
(2)对于 switch 语句,必须设置 default 标号,用于处理 switch 语句中表达式的值不在 case 标号集的范围内的情况。由 default标号来决定执行什么语句,可避免出现逻辑错误。
2.查看你的学习伙伴的作业,并对他的作业提出建议
重点用其他颜色标明,结构清晰,作业做的很认真

四、预习第四章

posted @ 2021-04-18 23:05  哒哒的  阅读(60)  评论(0编辑  收藏  举报