第二次实验报告

C程序设计实验报告

实验项目:3.3.1、3.3.2、3.3.3、4.3.1、4.3.2、4.3.3

姓名:胡思思 实验地点:一教524 实验时间:2021年4月15日

一.实验目的与要求

1.第三章
(1)掌握结构化程序的算法描述方法。
(2)了解C语言的基本语法要素,能熟练地将算法描述转化为c语言程序。
(3)熟练掌握C语言运算符的优先级、结合性、运算规则、运算对象类型等。
2.第四章
(1)掌握C语言逻辑值的表示方法(0代表“假”,1代表“真”)。
(2)学会正确地使用关系表达式和逻辑表达式。
(3)掌握各种形式的if语句语法和使用方法。注意if语句中if和else的匹配关系,以及if语句的嵌套。
(4)掌握switch语句的语法和使用方法。主机switch语句中break语句的用法及switch语句的嵌套。
(5)能独立编写分支结构程序并调试通过。
(6)用if语句、switch语句解决简单的应用问题并上机实现。

二.实验内容

1.实验练习:3.3.1
1.问题的简单描述:用算法流程图表示该函数的算法。输入x的值,输出满足函数关系的y 值,并用C语言编写程序进行检验。
2.实验代码

#include <stdio.h>
int 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.问题分析:
<1>写错了y=x的位置,经过检查发现了问题;
<2>编写代码时乘法中“*”不能省略;
<3>else与上一个if配对.
2.实验练习:3.3.2
1.问题的简单描述:
用算法流程图描述求解鸡兔同笼问题的算法:已知鸡兔的总头数为h(head),总脚数为f(feet),求鸡兔各有多少只?
2.实验代码

#include <stdio.h>
int main()
{
	int h,f,x,y;
	printf("鸡兔总数,鸡兔脚总数:\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.问题分析
<1>if下还需有大括号;
<2>注意x与y的表达式;
<3>运行时要注意“,”要在英文状态下输入.
3.实验练习:3.3.3
1.问题的简单描述:
有4个圆塔,圆心分别为(2,2)、(2,-2)、(2,-2)、(-2,-2),圆半径为1,这四个塔的高度均为10m,塔以外无建筑物。现输入任意一点的坐标,若该点坐标在任意一个圆塔内,则输出圆塔的高度;若该点不在圆塔内,则输出0。
2.实验代码

#include <stdio.h>
#include <math.h>
int 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-x1)*(x-x1)+(y-y1)*(y-y1));
	d2=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
	d3=sqrt((x-x3)*(x-x3)+(y-y3)*(y-y3));
	d4=sqrt((x-x4)*(x-x4)+(y-y4)*(y-y4));
	if(d1>1&&d2>1&&d3>1&&d4>1)
	h=0;
	printf("该塔高度为%d",h);
}

运行结果:

3.问题分析
<1>忘记定义函数math;
<2>应注意()与()的配对;
<3>对两点间的距离公式熟记;
<4>“&&”表示与.
4.实验练习:案例三 模拟计算器
1.问题的简单描述:
模拟一个简单的计算器,进行两个数的加、减、乘、除四则运算。
2.实验代码

#include <stdio.h>
int main()
{
	float x,y;
	char op;
	printf("输入表达式:");
	scanf("%f%c%f",&x,&op,&y);
	switch(op)
	{
		case'+':/*匹配加法*/
		        printf("%.2f%c%.2f=%.2f\n",x,op,y,x+y);break;
		case'-':/*匹配减法*/
		        printf("%.2f%c%.2f=%.2f\n",x,op,y,x-y);break;
		case'*':/*匹配乘法*/
		        printf("%.2f%c%.2f=%.2f\n",x,op,y,x*y);break;
		case'/':/*匹配除法*/
		        if (y!=0)
		        {printf("%.2f%c%.2f=%.2f\n",x,op,y,x/y);break;}
				else {printf("除数为零!\n");break;}
		default:printf("输入表达式有错!\n");
	}
	return 0;
 } 

运行结果

3.问题分析
<1>char op 意思是这个变量op是个操作符号;
<2>除法时要注意除数不能为零.
5.实验练习: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)
	printf("该箱子是正方体。\n");
	else
	printf("该箱子是长方体。\n");
	return 0;
}

运行结果

3.问题分析
<1>“=”表示赋值,“==”表示是判断.
6.实验练习:4.3.2

#include <stdio.h>
 main()
{
	double d,m,g;
	float s;
	printf("请输入打印纸、墨盒、光盘的数量:\n");
	scanf("%lf%lf%lf",&d,&m,&g);
	s=18*d+132*m+4.5*g;
	if(s>500)
	s=0.90*s;
	else if(s>400)
	s=0.92*s;
	else if(s>300)
	s=0.93*s;
	else if(s>200)
	s=0.94*s;
	else if(s>100)
	s=0.95*s;
	else
	s=s;
	printf("应付款数=%.2f\n",s);
}

运行结果

3.问题分析
<1>注意表达式的运算;
<2>编写代码时要细心.
7.实验练习:4.3.3
1.问题的简单描述:
输入某一年、月的数值,输出该月的天数。
2.实验代码

#include <stdio.h>
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%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天\n",year,month,days);
	return 0;
}

运行结果

3.问题分析:运行时要注意“,”要在英文状态下输入;
<1>要弄清闰年的条件;
<2>要注意2月的年份若为闰年则天数为29天否则天数为28天.

三.实验小结

1.小节
<1>.通过这次实验课,对程序图编写程序的运算更加熟悉也对一些算数公式更加了解。
<2>.对程序的简单算法设计更加了解。
<3>.通过这次实验对if...else语句应用更加熟悉,运用起来更加熟练。
<4>.对switch语句更加熟悉,也更加清楚break语句在switch语句中的作用。
<5>.通过这次实验发现编写程序时要跟加细心,运行结果时要注意是否是在英文状态下。
2.学习伙伴:赖芳
·实验报告清晰明了
·程序代码简洁整齐
·分析问题和总结问题到位

四.思维导图

posted @ 2021-04-19 19:24  SSOY  阅读(86)  评论(0编辑  收藏  举报