首页 > 编程语言 > 详细

第三章:简单算法&分支结构实验

时间:2021-04-18 22:25:09      阅读:23      评论:0      收藏:0      [点我收藏+]

C语言设计实验报告

实验项目:3.3.1~4.3.3、案例三
姓名:游文进                实验地点:教室524         实验时间:2021.4.15

一,实验目的与要求

1、掌握结构化程序的算法描述方法
2、了解C语言算法基本语法要素,熟练掌握将算法描述转化成程序
3、掌握算术运算符的优先级,运算对象,运算规则

二,实验内容


3.3.1


问题描述:
函数:
y= x (x<1)
      2x-1 (1<=x<10)
       3x-1 (10<=x)
输入x的值,输出y的值。
代码与结果:

main()
{
float x,y;
	printf("请输入X的值:");
	scanf("%f",&x);
	if(x<1)
	printf("y的值为%f",y=x);
	else if (x<=10)
	printf("y的值为%f",y=2*x-1);
	else printf("y的值为%1f",y=3*x-1);
}

技术分享图片
分析
1.注意if和else的配对
2.代码美观性,养成注释的习惯


3.3.2
已知鸡兔总头数h,鸡兔总脚数f,分别计算鸡兔数量。
代码:

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",x,y);
	}
	else
	printf("输入有误");
	}

技术分享图片
分析:
1.if表达式中xy,并没有计算出,所以要先算出xy结果再进行if语句的判断


3.3.3:


有四个圆塔,圆心分别为(2,2)(2,-2)(-2,-2)(-2,2),塔高度为10,塔外无建筑物,现输入一个坐标点,若在圆塔范围内则输出10,否则输出0.
代码:

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

技术分享图片
分析:
1.x2在表达式中使用x*x,而不是x**2
2.复制表达式时注意更改表达式中变量名


案例三:


模拟简单计算器,进行两个数的加减乘除
代码:

main()
{
float x,y;
char op;
  printf("输入表达式:");
  scanf("%f%c%f",&x,&op,&y);
if(op==‘+‘)
  printf("%.2f%c%.2f=%.3f\n",x,op,y,x+y);
else if(op==‘-‘)
  printf("%.2f%c%.2f=%.2f\n",x,op,y,x-y);
else if(op==‘*‘)
  printf("%.2f%c%.2f=%.2f\n",x,op,y,x*y);
else if(op==‘/‘&&y!=0)
  printf("%.2f%c%.2f=%.2f\n",x,op,y,x/y);
else 
  printf("输入表达式错误!\n");
}

技术分享图片
分析:
1.算术运算符用‘‘包含置于if表达式中如:if(op==‘+‘)


4.3.1


输入三个表示箱子长宽高整数值,判断并输出该箱子为正方体还是长方体。
代码:

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

技术分享图片
分析:
1.if表达式中多变量的恒等不可用lwh表示,应分成两个表达式并用&&连接。否则if将恒判断错误只输出else,那程序运行将如下:
技术分享图片


4.3.2


编写程序实现以下功能:商店有打印纸(18/本),墨盒(132),光盘(4,5),开业酬宾超过100,优惠5%,200优惠6%,300优惠7%,400优惠8%,500优惠100%,根据不同购买量,支付不同货款。
代码:

 main()
 {
 	int x,y,z,a;
 	float sum;
 	printf("请输入打印纸,墨盒,光盘的数量");
 	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("应付款%.f",sum)  ;
 }

分析:
1.输入数据时要根据代码scanf函数中格式输入否则将造成数据输入错误,可选中变量进行调试,查看其变量数值变化以确定数据的计算正确。

三:实验小结

了解算法步骤后运用if和switch语句较为简单,但对问题的分析,流程图的制作任存在很多问题。要一一熟悉解决。知识点归纳见思维导图。

四:

思维导图:
技术分享图片

第三章:简单算法&分支结构实验

原文:https://www.cnblogs.com/YWJN/p/14674582.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!