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);
}
-
效果截图
-
问题分析
掌握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");
}
-
效果截图
-
问题分析
设计算法得出计算鸡兔数量的公式。
用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);
}
-
效果截图
-
问题分析
要了解两点间的距离公式
经尝试,头文件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");
}
}
-
效果截图
-
问题分析
用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;
}
- 效果截图
实验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);
}
-
效果截图
-
问题分析
注意运算逻辑,是从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.评价
- 代码简洁,逻辑清晰
- 问题分析比较到位