zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C语言顺序结构程序设计——对调数字and判断三角形

C语言 and 结构 数字 判断 程序设计 顺序 三角形
2023-09-11 14:19:58 时间

最全C系列题目!从0到管理系统

一、C语言数据类型及输出——体重是否正常、球的体积、计算存银行利息and浮点数长度与精度

二、C语言运算符与表达式——输出逆序数and二进制包含0和1的数量and判断是否为2的整数次幂的两种办法

三、C语言基本输入输出程序设计——计算当前时间and转换大写姓名and工资信息表

四、C语言顺序结构程序设计——对调数字and判断三角形

五、C语言选择结构程序设计——“21点”(BlackJack)游戏and一元二次方程and能否被3,5,7,9整除

六、C语言函数、指针应用程序设计——回文数判断and检验子串and仓库库存管理程序

七、C语言输入输出及选择结构程序设计的综合应用——简单超级战士游戏and 取牙签游戏

八、C语言循环结构及数组排序的综合应用——冒泡、插入、选择排序棒图显示and两个超长数相乘

九、C语言函数及数组的综合应用——儿童数学运算 and 递归求最大公约数

十、C语言函数及复杂数据结构的综合应用——简单户籍管理系统


一、实验目的:

1.掌握,使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法。
2.初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力。

二、实验要求

1.输入10个整数,将其中最小的数与第一个数对调,把最大的数与最后一个数对调,然后按顺序输出这10个数。

2.输入两个三角形在直角坐标系下的顶点坐标(实型),首先分别判断它们能否构成三角形,如能的话,指出是何种三角形(等腰三角形、直角三角形、等腰直角三角形、等边三角形、一般三角形),然后判断两个三角形是否相似。

三、代码

1.对调数字

/*
 * 文件名称:   基本实验4第一题
 * 作者:       不知何人
 * 完成日期:   2021.4.3
 * 内容摘要:   无
 * 注意:       无
*/

#include<stdio.h>

int main() {
	int a[10];		//定义用于装10个数的数组 
	int m, n, i, j;		//m,n,i,j 均为for循环中的递增数 

	printf("请输入10个数,并用空格隔开\n");
	for (n = 0; n < 10; n++)
	{
		scanf_s("%d", &a[n]);
	}
	//通过for循环将10个数依次录入数组 
	int max, min, b, c, p, q;		//定义最大值,最小值,以及中间变量。 
	max = min = a[0];			//设最大值最小值初始值为a[0] 

	for (i = 0; i < 10; i++) {
		if (max < a[i]) {

			max = a[i];
			b = i;

		}
	}
	//得出最大值的序号,记录为b 
	for (j = 0; j < 10; j++) {
		if (min > a[j]) {

			min = a[j];
			c = j;

		}
	}
	//得出最小值的序号,记录为c 

	p = a[b];
	a[b] = a[9];
	a[9] = p;
	//将最大值与第10位数交换位置 
	q = a[c];
	a[c] = a[0];
	a[0] = q;
	//将最小值与第1位数交换位置 
	printf("重新排序后为:");
	for (m = 0; m < 10; m++) {
		printf("%d ", a[m]);
		//按交换后的顺序依次输出各数 
	}
}

2.判断三角形

 * 文件名称:   基本实验4第二题
 * 作者:       不知何人 
 * 完成日期:   2021.4.3
 * 内容摘要:   无
 * 注意:       无
*/
#include<stdio.h>
#include<math.h>

int main() {
	float a1, a2, a3, b1, b2, b3;
	float x1, x2, x3, y1, y2, y3;		//定义6个点的横纵坐标 

	printf("请依次输入第一个三角形的顶点坐标,中间用空格隔开,如:3 4\n");
	scanf("%f %f %f %f %f %f", &a1, &b1, &a2, &b2, &a3, &b3);
	printf("请依次输入第二个三角形的顶点坐标,中间用空格隔开,如:3 4\n");
	scanf("%f %f %f %f %f %f", &x1, &y1, &x2, &y2, &x3, &y3);
	//分别输入两个三角形顶点坐标 

	double m1, n1, q1, m2, n2, q2;			//定义两个三角形的三边长 
	m1 = sqrt((a1 - a2) * (a1 - a2) + (b1 - b2) * (b1 - b2));
	n1 = sqrt((a1 - a3) * (a1 - a3) + (b1 - b3) * (b1 - b3));
	q1 = sqrt((a2 - a3) * (a2 - a3) + (b2 - b3) * (b2 - b3));
	m2 = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
	n2 = sqrt((x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3));
	q2 = sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3));
	//两点距离公式 边长=根号下(两点横坐标差的平方+两点纵坐标的平方) 

	if ((m1 + n1) > q1 && (m1 + q1) > n1 && (n1 + q1) > m1)		//判断是否可以构成三角形 
	{
		printf("前三个顶点可以构成三角形,");
		if (fabs(m1 - n1) < 0.01 || fabs(m1 - q1) < 0.01 || fabs(n1 - q1) < 0.01)		//判断是否等腰三角形 
		{
			if (fabs(m1 - n1) < 0.01 && fabs(m1 - q1) < 0.01 && fabs(n1 - q1) < 0.01)
				//是等腰三角形之后再进行二次判断,如果三边都相等则为等边三角形 
			{
				printf("且为等边三角形。\n");
			}
			else if (fabs(q1 * q1 - m1 * m1 - n1 * n1) < 0.01 || fabs(n1 * n1 - m1 * m1 - q1 * q1) < 0.01 || fabs(m1 * m1 - n1 * n1 - q1 * q1) < 0.01)
				//是等腰三角形之后再进行二次判断,如果有两边平方之和等于第三边平方,则为等腰直角形 
			{
				printf("且为等腰直角三角形。\n");
			}
			else		//最后不属于前两种的,则是普通的等腰三角形 
			{
				printf("为等腰三角形\n");
			}
		}
		else if (fabs(q1 * q1 - m1 * m1 - n1 * n1) < 0.01 || fabs(n1 * n1 - m1 * m1 - q1 * q1) < 0.01 || fabs(m1 * m1 - n1 * n1 - q1 * q1) < 0.01)
			//因为已经不满足两边相等的条件,所以此处如果满足两边平方之和等于第三边平方,则说明为直角三角形。(排除等腰直角) 
		{
			printf("且为直角三角形。\n");
		}

		else		//不满足上述情况的三角形只是普通三角形 
		{
			printf("为普通三角形。\n");
		}
	}
	else		//不满足两边之和大于第三边,无法构成三角形 
	{
		printf("前三个顶点无法构成三角形。\n");
	}

	if ((m2 + n2) > q2 && (m2 + q2) > n2 && (q2 + n2) > m2) {
		printf("后三个顶点可以构成三角形,");
		if (fabs(m2 - n2) < 0.001 || fabs(m2 - q2) < 0.001 || fabs(n2 - q2) < 0.001) {
			if (fabs(m2 - n2) < 0.01 && fabs(m2 - q2) < 0.01 && fabs(n2 - q2) < 0.01)
			{
				printf("且为等边三角形。\n");
			}
			else if (fabs(q2 * q2 - m2 * m2 - n2 * n2) < 0.01 || fabs(n2 * n2 - m2 * m2 - q2 * q2) < 0.01 || fabs(m2 * m2 - n2 * n2 - q2 * q2) < 0.01)
			{
				printf("且为等腰直角三角形。\n");
			}
			else
			{
				printf("为等腰三角形。\n");
			}
		}
		else if (fabs(q2 * q2 - m2 * m2 - n2 * n2) < 0.01 || fabs(n2 * n2 - m2 * m2 - q2 * q2) < 0.01 || fabs(m2 * m2 - n2 * n2 - q2 * q2) < 0.01)
		{
			printf("且为直角三角形。\n");
		}

		else
		{
			printf("为普通三角形。\n");
		}
	}
	else
	{
		printf("无法构成三角形。\n");
	}
	//与第一个三角形同理 

	float r1, s1, t1;//定义两三角形的对应比例 
	r1 = m1 / m2;
	s1 = n1 / n2;
	t1 = q1 / q2;

if (fabs(r1 - s1) < 0.01 && fabs(s1 - t1) < 0.01)
		//通过对应边比例是否相同,判断是否相似 
	{
		printf("两三角形相似。\n");
	}
	else
		printf("两三角形不相似。\n");

}

程序中没有对边长按照从小到大进行排序(或反向),存在漏判,只是个小问题,大家记得改一下哈。

总结

我把去年刚学C语言时的代码发出来供新人们参考,别嫌弃啊哈哈(虽然确实很烂!实验报告我也都发了,在主页,我发的全是免费下载)

非常感谢您的观看