C语言程序设计报告

C程序设计实验报告
实验项目:简单算法&分支结构实验
姓名:张依君 实验地点: 524 实验时间:4.15

一、实验目的与要求

1.掌握C语言逻辑值的表示方法(0代表“假”,1代表“真”)。
2.学会正确使用关系表达式和逻辑表达式。
3.掌握各种形式的If语句语法和使用方法。
4.掌握switch语句的语法和使用方法。
5.熟练掌握c语言运算符的优先级,结合性,运算规则等。

二、实验内容

1、实验练习:3.3.1
1问题的简单描述:制定数学函数的计算。输入x的值,输出满足函数关系的y值。
2实验代码:

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问题分析:在if语句后加了分号导致运行错误。
2、实验练习:3.3.2
1问题的简单描述:用算法流程图描述求解鸡兔同笼问题的算法
2实验代码:

main()
{
	int h,f,x,y;
	printf("鸡兔总数,鸡兔脚总数:");
	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问题分析:x和y没赋值就判断X和y>0,运行结果为输入错误,在请教别人后纠正了这个错误,应该判断h和f大于0.
3 ,实验练习:3.3.3
1.问题的简单描述:有四个圆塔,圆心分别为(2,2),(-2,2),(2,-2),(-2,-2),圆半径为1,这4个塔的高度为10米,塔外无建筑物。输入任意一点坐标,若在任意一个塔内,则输出圆塔的高度,若该点不在圆塔内,则输出高度为0。
2.实验代码:

#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-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.问题分析:忘记加入math的头文件,在使用sqrt时没有用大括号把表达式括起来。
求两点距离公式时平方相乘的形式。
4,实验练习:4.3.1
1.问题的简单描述:读入3个表示箱子长,宽,高的整数值,判断并输出该箱子是正方体还是长方体。
2.实验代码:

int main()
{
	int l,w,h;
	printf("请输入箱子的长,宽,高:\n");
	scanf("%d%d%d",&l,&w,&h);
	if(l==w&&w==h)
	      printf("该箱子是正方体!");
	  else
	      printf("该箱子是长方体!");
 } 


3.在取地址符时候只写了两个,运行结果一直是该箱子是长方体。查找后发现少取了一个地址符。
4,实验练习:4.3.2
1.问题的简单描述:编写程序实现如下功能:商店有打印纸(18元/本)、墨盒(132元/个)、光盘(4.5元/片)出售,商店进行优惠酬宾活动。具体规则如下:顾客购买商品的总额超过100元,优惠%5;超过200元,优惠%6;超过300元,优惠%7;超过400元,优惠%8;超过500元,优惠%10。根据不同的购买量,计算应付货款。
2.实验代码:

int main()
 {
 	int a,b,c;
 	printf("请输入打印纸,墨盒,光盘的数量:\n");
 	scanf("%d%d%d",&a,&b,&c);
 	float sum;
 	sum=a*18+b*132+c*4.5;
 	int n;
 	if(sum<=100)
	  n=0;
	    else n=sum/100;
	switch(n)
	{case 0:
		printf("应付款数=%.2f",sum*1);break;
	 case 1:
	    printf("应付款数=%.2f",sum*0.95);break;
	 case 2:
	    printf("应付款数=%.2f",sum*0.94);break;
	 case 3:
	    printf("应付款数=%.2f",sum*0.93);break;
	 case 4:
	    printf("应付款数=%.2f",sum*0.92);break;
	 default:
	    printf("应付款数=%.2f",sum*0.90);break;	
	}
 }


3.问题分析:对switch结构掌握不清楚,不太使用sum函数。在每个语句序列后加上一个分支语句break,构成互相独立的switch条件分支。
4,实验练习: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%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天\n",days);
}

3.问题分析:当常量表达式是数字时,case与数字间空一格,否则运行不了。

三、实验小结(在本次实验中收获与不足)
1总结所学内容,归纳知识点。
1.这节课主要学习了如何使用C语言逻辑运算符和关系运算符;还有使用关系表达式和逻辑表达式以及If语句和switch语句的运用。
2.if...else语句中,if后面的单个语句有分号,但复合语句(花括号)后没分号。当If...else语句有嵌套时,注意其搭配关系,else总是与她前面最近的尚未配对的if对应。
3.switch都一对括号中的“表达式”,只有其值为整型即可,可以是整型表达式,字符表达式或枚举型表达式;csae后的表达式必须是常量表达式,不能包含变量。
4.switch语句的表达式应用于实型值选择情况时,通常将实数表达式乘上一个适当的比例因子,将实数表达式的值映射到一个较小的范围,然后将它转换成整型。
2,评价:重要部分用红色标出,代码整齐美观。
四、预习第四章

posted @ 2021-04-18 18:44  AChenglazyz  阅读(907)  评论(0编辑  收藏  举报