C语言顺序结构程序设计——对调数字and判断三角形
C语言 and 结构 数字 判断 程序设计 顺序 三角形
2023-09-11 14:19:58 时间
最全C系列题目!从0到管理系统
一、C语言数据类型及输出——体重是否正常、球的体积、计算存银行利息and浮点数长度与精度
二、C语言运算符与表达式——输出逆序数and二进制包含0和1的数量and判断是否为2的整数次幂的两种办法
三、C语言基本输入输出程序设计——计算当前时间and转换大写姓名and工资信息表
五、C语言选择结构程序设计——“21点”(BlackJack)游戏and一元二次方程and能否被3,5,7,9整除
六、C语言函数、指针应用程序设计——回文数判断and检验子串and仓库库存管理程序
七、C语言输入输出及选择结构程序设计的综合应用——简单超级战士游戏and 取牙签游戏
八、C语言循环结构及数组排序的综合应用——冒泡、插入、选择排序棒图显示and两个超长数相乘
九、C语言函数及数组的综合应用——儿童数学运算 and 递归求最大公约数
一、实验目的:
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语言时的代码发出来供新人们参考,别嫌弃啊哈哈(虽然确实很烂!实验报告我也都发了,在主页,我发的全是免费下载)
非常感谢您的观看