C语言 简单算法& 分支结构实验报告

C语言程序设计

实验项目:简单算法& 分支结构实验

姓名:蒋多清    实验地点:一教524     实验时间:4月15日

一、实验目的与要求

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

二、实验内容

实验3.3.1

  • 问题描述 :

对于分段函数,输入一个x的值,输出对应y的值。
  • 实验代码
#include <stdio.h>
void 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", y);
}
  • 效果截图
    image
    image
    image

  • 问题分析

掌握if语句语法和使用方法。注意if语句中if和else的匹配关系,以及if语句的嵌套。

实验3.3.2

  • 问题描述 :

鸡兔同笼问题,已知鸡和兔的总头数和总脚数,得鸡、兔各几何。
  • 实验代码
#include <stdio.h>
void main()
{
	int h, f, x, y;
	printf("请输入鸡兔总数,鸡兔脚总数:");
	scanf("%d,%d", &h, &f);
	if (h > 0 && f > 0)
	{
		x = (4 * h - f) / 2;
		y = h - x;
		printf("鸡有%d只,兔有%d只", x, y);
	}
	else
		printf("输入错误!\n");
}
  • 效果截图
    image

  • 问题分析

设计算法得出计算鸡兔数量的公式。
用if语句根据条件真假进行判断。

实验3.3.3

  • 问题描述 :

输入一个点的坐标,判断其是否在塔内,在塔内则输出塔的高度,否则输出0
  • 实验代码
#include <stdio.h>
#include <math.h>
void main()
{
	int h = 10;
	float x1 = 2, y1 = 2, x2 = -2, y2 = 2, x3 = -2, y3 = -2, x4 = 2, y4 = -2, 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);
}
  • 效果截图
    imageimage

  • 问题分析

要了解两点间的距离公式
经尝试,头文件math.h也可以不要

实验4.2.4案例三

  • 问题描述 :

模拟一个简单的计算机,进行简单的加、减、乘、除运算。
  • 实验代码
#include <stdio.h>
void main()
{
	float x,y;
	char op;
	while (1)
	{
	printf("请输入算式:");
	scanf("%f%c%f",&x,&op,&y);
	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=='*')
	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");
	}
}
  • 效果截图
    image

  • 问题分析

用while循环制作死循环,可实现连续输入算式。

实验4.3.1

  • 问题描述 :

输入一个箱子的长、宽、高,判断其为长方体还是正方体。
  • 实验代码
#include <stdio.h>
void main()
{
	int x,y,z;
	printf("请输入该箱子的长、宽、高:");
	scanf("%d,%d,%d",&x,&y,&z);
	if(x==y&&x==z) 
	printf("该箱子是正方体");
	else
	printf("该箱子是长方体");
	return 0;
}
  • 效果截图
    image
    image

实验4.3.2

  • 问题描述 :

根据不同的购买量,计算应付款。
  • 实验代码
#include <stdio.h>
void main()
{
	int a, b, c;
	float w, z;
	printf("请输入打印纸吧、墨盒、光盘的数量:");
	scanf("%d,%d,%d", &a, &b, &c);
	printf("打印纸%d本,墨盒%d个,光盘%d个\n", a, b, c);
	w = a * 18 + b * 132 + c * 4.5;
	if (w > 500)
		z = 0.9 * w;
	else if (w > 400)
		z = 0.92 * w;
	else if (w > 300)
		z = 0.93 * w;
	else if (w > 200)
		z = 0.94 * w;
	else if (w > 100)
		z = 0.95 * w;
	else
		z = w;
	printf("应付款数=%.2f", z);
}
  • 效果截图
    image

  • 问题分析

注意运算逻辑,是从500-->100,而不是100-->500.

实验4.3.3

  • 问题描述 :

输入某一年、月的值,输出该月份的天数。
  • 实验代码
#include <stdio.h>
void main()
{
	int y, m, d;
	printf("Please enter year and month:\n");
	scanf("%d,%d", &y, &m);
	switch (m)
	{
	case 2:
		if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
		{
			d = 29;
		}
		else
		{
			d = 28;
		}
		break;
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		d = 31;
		break;
	case 4:
	case 6:
	case 9:
	case 11:
		d = 30;
		break;
	}
	printf("%d年%d月有%d天", y, m, d);
}
  • 问题分析

闰年的判断方式:能被4整除但不能被400整除或者能被400整除。
需了解&&比||的优先级高,如若不了解,可按想要的运算顺序加上小括号以确保无误。

三、实验小结

1.小结

  • 解决问题时要有清晰的逻辑并设计相应的算法
  • 通过实验更加熟悉了if语句和switch语句

2.评价

    李宏远的实验报告

  • 代码简洁,逻辑清晰
  • 问题分析比较到位

四、预习第四章

image

posted on 2021-04-20 00:49  寒枫润暮雨  阅读(1133)  评论(1编辑  收藏  举报