第二次实验报告

C程序设计实验报告

实验项目

  • 3.3.1
  • 3.3.2
  • 3.3.3
  • 4.3.1
  • 4.3.2
  • 4.3.3
  • 计算机循环

姓名:樊铮雄 实验地点:一教524 实验时间:2021.4.15

一、实验目的与要求

(1)掌握结构化程序的算法描述方法。

(2)了解C语言的基本语法要素,能熟练地将算法描述转化为C语言程序。

(3)熟练掌握C语言运算符的优先级、结合性、运算规则、运算对象类型等。

(4)掌握C语言逻辑值的表示方法(0代表“假”,1代表“真”)。

(5)学会正确的使用逻辑表达式和关系表达式。

(6)掌握各种形式的if语句语法和使用方法。注意if语句中if和else的匹配关系,以及if语句的嵌套。

(7)掌握switch语句的语法和使用方法。注意在switch语句中break语句的语法及switch语句的嵌套。

(8)能独立编写分支结构程序并测试通过。

(9)用if语句、switch语句解决简单的应用问题并上机实现。

二、实验内容

1、实验练习:3.3.1
(1)问题的简单描述:输入x值,输出满足函数关系的y值,并与C语言编写程序进行检验。
(2)实验代码:

#include<stdio.h>
main()
{
	float x,y;
	printf("请输入x的值: ");
	scanf("%f",&x);
	if(x<10)
	    if(x<1)
	        y=x;
 	    else
	        y=2*x-1;
    else
	    y=3*x-1;
	printf("y的值为%.2f\n",y);

}
(3)问题分析:

  • if嵌套的if和else的一一对应
  • 对函数进行分析写出流程图再划分范围方便代码书写

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

#include <stdio.h>
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)问题分析:

  • 首先应该分别求出鸡和兔的数量的对应表达式在编辑代码

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-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("若该点在塔外则输出0,若该点在塔内则输出10\n%d",h);
 }

(3)问题分析:

  • 不会使用平方符号,使用两个相同的相乘达到平方的效果

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)问题分析:

  • 不能使用两个连等如l= =w= =h,应该分开使用如l= =w,w= =h

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

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

6、实验练习: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日",year,month,days);
}

(3)问题分析:如何判断闰年以及整除的使用

7、实验练习:计算机循环
(1)问题的简单描述:模拟一个简单的计算器,进行两个数的加、减、乘、除四则运算,可以循环使用。
(2)实验代码:

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

三、实验小结

(1)总结所学内容,归纳知识点。

1、用if语句根据条件的真假进行判断的方法。掌握C语言逻辑值的表示方法(0代表“假”,1代表“真”)。
2、掌握各种形式的if语句语法和使用方法。注意if语句中的if和else的匹配关系,以及if语句的嵌套,掌握switch语
句和语法的使用方法。
3、case后面的常量表达式只能是整型、字符型或枚举型常量的一种;

(2)查看你的学习伙伴的作业,并对他的作业提出建议。

学习伙伴的作业内容完整、丰富,缺少部分了细节的分析。

四、归纳第四章知识要点及思维导图

posted @ 2021-04-18 20:13  难寻丫  阅读(84)  评论(0编辑  收藏  举报