12
0
0
RW编程(第三章)
2026-10-23
2026-10-27

文章摘要
|
问题 A: 直角三角形否
#include <stdio.h>
#include <math.h>
int fucA(double numA , double numB , double numC) {
numA = numA * 1E8;
numB = numB * 1E8;
numC = numC * 1E8;
unsigned long lumA = (unsigned long)numA;
unsigned long lumB = (unsigned long)numB;
unsigned long lumC = (unsigned long)numC;
return (lumA * lumA + lumB * lumB) == lumC * lumC;
}
int main() {
double var1, var2, var3;
scanf("%lf%lf%lf",&var1,&var2,&var3);
if (fucA(var1, var2, var3)) {
printf("(%G, %G, %G) 是直角三角形。",var1,var2,var3);
}
else printf("(%G, %G, %G) 不是直角三角形。",var1, var2, var3);
return 0;
}问题 D: 再算三角形面积
#include <stdio.h>
#include <math.h>
int fucA(double numA, double numB, double numC) {
numA = numA * 1E5;
numB = numB * 1E5;
numC = numC * 1E5;
unsigned long lumA = (unsigned long)numA;
unsigned long lumB = (unsigned long)numB;
unsigned long lumC = (unsigned long)numC;
return lumA + lumB > lumC;
}
int main() {
double var1, var2, var3;
scanf("%lf%lf%lf",&var1,&var2,&var3);
if (fucA(var1, var2, var3) &&
fucA(var1, var3, var2) &&
fucA(var2, var3, var1)
)
{//海伦公式
double tmpN = (var1 + var2 + var3) / 2.0;
printf("三角形面积 = %.8lf", sqrt(tmpN * (tmpN - var1) * (tmpN - var2) * (tmpN - var3)));
}
else printf("不是三角形。");
return 0;
}问题 E: 再算一元二次方程
#include <stdio.h>
#include <math.h>
double calDerta(double numA, double numB, double numC) {
return numB * numB - 4.0 * numA * numC;
}
void repPoint(double* varA, double* varB) {
if (*varA > *varB) {
double tmpS = *varA;
*varA = *varB;
*varB = tmpS;
}
}
int main() {
double var1, var2, var3;
scanf("%lf%lf%lf", &var1, &var2, &var3);
double dertaVar = calDerta(var1, var2, var3);
if (dertaVar >= 0)
{
var2 = -var2;
double resX1 = (var2 + sqrt(dertaVar)) / (2.0 * var1);
double resX2 = (var2 - sqrt(dertaVar)) / (2.0 * var1);
repPoint(&resX1,&resX2);
printf("x1 = %.4lf\nx2 = %.4lf", resX1, resX2);
}
else printf("方程没有实根。");
return 0;
}问题 F: 两人队列排队
#include<stdio.h>
int main()
{
double a, b;
double t;
scanf("%lf%lf", &a, &b);
if (a > b) {
t = a;
a = b;
b = t;
}
printf("%G %G",a,b);
return 0;
}问题 G: 三人队列排队
#include<stdio.h>
int main()
{
double a, b, c;
double t;
scanf("%lf%lf%lf", &a, &b, &c);
if (a > b) {
t = a;
a = b;
b = t;
}
if (b > c) {
t = b;
b = c;
c = t;
}
if (a > c) {
t = c;
c = a;
a = t;
}
if (a > b) {
t = a;
a = b;
b = t;
}
printf("%G %G %G", a, b, c);
return 0;
}问题 H: 四人队列排队
#include<stdio.h>
int main()
{
double a, b, c, d;
double t;
scanf_s("%lf%lf%lf%lf", &a, &b, &c, &d);
double tmpSortArray[4] = { a,b,c,d };
for (int var = 0; var < 4; ++var) {
for (int var2 = 0; var2 < 4 - var - 1; ++var2) {
if (tmpSortArray[var2] > tmpSortArray[var2 + 1]) {
t = tmpSortArray[var2];
tmpSortArray[var2] = tmpSortArray[var2 + 1];
tmpSortArray[var2 + 1] = t;
}
}
}
for (int i = 0; i < 4; i++)
{
printf("%G", tmpSortArray[i]);
if (i < 3) {
printf(" ");
}
}
return 0;
}问题 I: 成绩的等级划分之 if 实现
#include<stdio.h>
int main()
{
long score;
char mark = 'A';
scanf_s("%ld", &score);
if (score < 60)
mark = 'E';
if (score <= 69 && score >= 60)
mark = 'D';
if (score <= 79 && score >= 70)
mark = 'C';
if (score <= 89 && score >= 80)
mark = 'B';
printf("%c\n", mark);
return 0;
}问题 J: 成绩的等级划分之 switch 实现
#include<stdio.h>
int main()
{
long score;
char mark = 'A';
scanf("%ld", &score);
switch(score/10){
case 10:
case 9: break;
case 8: mark = 'B'; break;
case 7: mark = 'C'; break;
case 6: mark = 'D'; break;
default:mark = 'E'; break;
}
printf("%c\n", mark);
return 0;
}问题 K: 星期的表示
#include <stdio.h>
#include <malloc.h>
int main() {
int wk = 0;
scanf("%d",&wk);
switch (wk%7) {
case 0:printf("星期天,休息日。"); break;
case 1:printf("星期一,工作日。"); break;
case 2:printf("星期二,工作日。"); break;
case 3:printf("星期三,工作日。"); break;
case 4:printf("星期四,工作日。"); break;
case 5:printf("星期五,工作日。"); break;
case 6:printf("星期六,休息日。"); break;
}
return 0;
}问题 B: 数字的爱情观之自恋1
#include <stdio.h>
int main() {
int num = 0,tmp = 0,numA[3],count = 0;
scanf("%d",&num);
tmp = num;
for (int i = 0; i < 3; i++) {
numA[i] = tmp % 10;
tmp /= 10;
count += numA[i] * numA[i] *numA[i];
}
if (count == num)
printf("%d 很自恋。",num);
else printf("%d 不自恋。",num);
}问题 C: 数字的爱情观之自恋2
#include <stdio.h>
int calFc(int num,int n) {
int tmp = 1;
for (int i = 0; i < n; i++) {
tmp *= num;
}
return tmp;
}
int main() {
int num = 0,tmp = 0,numA[9],count = 0,l = 0;
scanf("%d",&num);
tmp = num;
for (;tmp;++l) {
numA[l] = tmp % 10;
tmp /= 10;
}
for (int i = 0;i < l; i++) {
count += calFc(numA[i],l);
}
if (count == num)
printf("%d 很自恋。",num);
else printf("%d 不自恋。",num);
}问题 M: 简单的计算器
#include <stdio.h>
int main() {
double numA,numB; char cals;
double res = 0;
scanf("%lf", &numA);
getchar();
scanf("%c", &cals);
getchar();
scanf("%lf", &numB);
switch (cals) {
case '+':
res = numA + numB; break;
case '-':
res = numA - numB; break;
case '*':
res = numA * numB; break;
case '/':
res = numA / numB; break;
case 37: {
int a, b;
a = numA;
b = numB;
res = a % b; break;
}
}
printf("%lG %c %lG = %lG",numA,cals,numB,res);
return 0;
}









