/*
有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一
位数字,试找出所有符合上述要求的乘积式并打印输出。
*/
#include <stdio.h>
#include <conio.h>
int main()
{
int A, B, C, D;
for (A = 1; A <= 9; A++)
{
for (B = 1; B <= 9; B++)
{
for (C = 1; C <= 9; C++)
{
for (D = 1; D <= 9; D++)
{
if (A == D && B == C )
{
printf("%d%d*%d%d=%d%d*%d%d\n", A, B, C, D, B, A, D, C);
}
}
}
}
}
getch();
return 0;
}
/*
2. 编程解决如下问题(50分)。
请在整数n=742683613984中删除8个数字,使得余下的数字按原次序组成的新数最小。要求如下:
(1)整数n和删除数字的个数“8”在源程序中完成赋值,程序直接输出运行结果;
(2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最小数。
(提示:整数n可以以字符数组的方式定义、赋值和处理)
*/
#include <stdio.h>
#include <conio.h>
#define LEN 12
int main()
{
int str[LEN] = {7, 4, 2, 6, 8, 3, 6, 1, 3, 9, 8, 4};
int i, min, index, cnt = 0;
int result[LEN] = {0};
while (cnt < 4)//依次找出倒数最小的4个数
{
min = str[0];
for (i = 0; i < LEN; i++)
{
if (min > str[i])
{
min = str[i];
index = i;
}
}
result[index] = min;
str[index] = 100;
cnt ++;
}
cnt = 0;
for (i = 0; i < LEN; i++)
{
if (str[i] != 100)
{
if (cnt != 0)
putchar(',');
printf("%d", str[i]);
cnt++;
}
}
putchar(10);
for (i = 0; i < LEN; i++)
if (result[i] != 0)
printf("%d", result[i]);
putchar(10);
getch();
return 0;
}
/*
3. 附加题:编程解决如下问题(50分)。
(1)已知平面上三个点:(7,1)、(4,6)、(5,8),判断这三点
组成的三角形是何种三角形(锐角,直角,钝角)(10分);
(2)对(1)问中的三角形,给出它的外接圆半径(20分);
(3)已知平面上6个点的坐标为:(7,1)、(4,6)、(5,8)、(6,2)、
(3,9)、(2,7),试求覆盖这6个点的覆盖圆最小半径(20分)。
(要求:点坐标数据在程序初始化中赋值完成,程序运行后直接输出结果,
不进行数据输入;点坐标数据和题目要求完全一致,否则导致的结果不正确
视为程序编写错误。)
*/
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define LEN 12
typedef struct POINT
{
int x;
int y;
}Point;
int cmp(const void *lhs, const void *rhs)
{
int *px = (int *)lhs;
int *py = (int *)rhs;
return *px > *py;
}
int main()
{
int x, y, flag = 0;
double a, b, c;
//------第一问---------------------------------------------
int a2 = (7 - 4) * (7 - 4) + (1 - 6) * (1 - 6);
int b2 = (7 - 5) * (7 - 5) + (1 - 8) * (1 - 8);
int c2 = (4 - 5) * (4 - 5) + (6 - 8) * (6 - 8);
if (a2 + b2 == c2 || a2 + c2 == b2 || b2 + c2 == a2)
{
printf("组成的是直角三角形\n");
}
else if (a2 + b2 > c2 || a2 + c2 > b2 || b2 + c2 > a2)
{
printf("组成的是钝角三角形\n");
}
else
printf("组成的是锐角三角形\n");
//------第二问---------------------------------------------
for (x = 4; x <= 7 && !flag; x++)
{
for (y = 1; y <= 8; y++)
{
a = (x - 7) * (x - 7) + (y - 1) * (y - 1);
b = (x - 4) * (x - 4) + (y - 6) * (y - 6);
c = (x - 5) * (x - 5) + (y - 8) * (y - 8);
if (a - b < 1e-9 && b - c < 1e-9 && a - c < 1e-9)
{
printf("外接圆的半径为:%.2f\n", sqrt(a));
flag = 1;
break;
}
}
}
//------第三问---------------------------------------------
Point pt[6] = {{7, 1}, {4, 6}, {5, 8}, {2, 7}, {6, 2}, {3, 9}};
//按横坐标从小到大排序
qsort(pt, 6, sizeof(pt[0]), cmp);
//不知道这样做对不对!
printf("%.2f", sqrt((pt[5/2].x - pt[5].x) * (pt[5/2].x - pt[5].x)
+ (pt[5/2].y - pt[5].y) * (pt[5/2].y - pt[5].y)));
getch();
return 0;
}
全国信息水平第六届C语言设计竞赛复赛A卷答案
最新推荐文章于 2021-05-25 08:33:14 发布