题目1:A + B
-
题目链接
-
输入两个整数,求这两个整数的和是多少。
输入格式
输入两个整数A, B,用空格隔开。
输出格式
输出一个整数,表示这两个数的和。
数据范围
0 ≤ A, B ≤ 10^8
输入样例
3 4
输出样例
7
解答(C语言实现):
#include <stdio.h>int main() {int A, B;// 从标准输入读取两个整数scanf("%d %d", &A, &B);// 计算并输出它们的和printf("%d\n", A + B);return 0;
}
解释:
- 使用
scanf
函数从输入中读取两个整数A
和B
。 - 通过
A + B
计算它们的和。 - 使用
printf
输出计算结果。
题目2:差
-
题目链接
-
读取四个整数 A, B, C, D,并计算
(A×B−C×D)
的值。
输入格式
输入共四行,第一行包含整数 A,第二行包含整数 B,第三行包含整数 C,第四行包含整数 D。
输出格式
输出格式为 DIFERENCA = X
,其中 X
为 (A×B−C×D)
的结果。
数据范围
-10000 ≤ A, B, C, D ≤ 10000
输入样例:
5
6
7
8
输出样例:
DIFERENCA = -26
解答(C语言实现):
#include <stdio.h>int main() {int A, B, C, D;// 读取四个整数scanf("%d", &A);scanf("%d", &B);scanf("%d", &C);scanf("%d", &D);// 计算 (A×B−C×D) 的结果int result = (A * B) - (C * D);// 输出结果printf("DIFERENCA = %d\n", result);return 0;
}
解释:
- 使用
scanf
分别读取四个整数A
,B
,C
,D
。 - 计算
(A * B - C * D)
的值,并存储在result
变量中。 - 使用
printf
按照题目要求的格式输出结果,DIFERENCA = result
。
题目3:圆的面积
-
题目链接
-
计算圆的面积的公式定义为 A = π R 2 A = \pi R^2 A=πR2。
请利用这个公式计算所给圆的面积,其中 π \pi π 的取值为 3.14159。
输入格式
输入包含一个浮点数,为圆的半径 ( R )。
输出格式
输出格式为 A = X
,其中 ( X ) 为圆的面积,用浮点数表示,保留四位小数。
数据范围
( 0 < R < 10000.00 )
输入样例:
2.00
输出样例:
A=12.5664
解答(C语言实现):
#include <stdio.h>int main() {double R;const double PI = 3.14159;// 读取圆的半径scanf("%lf", &R);// 计算圆的面积double area = PI * R * R;// 输出圆的面积,保留四位小数printf("A=%.4lf\n", area);return 0;
}
解释:
scanf
读取输入的浮点数作为圆的半径 R R R。- 使用公式 A = π R 2 A = \pi R^2 A=πR2 计算圆的面积,其中 π \pi π 的值为 3.14159。
printf
按要求输出结果,保留四位小数,格式为A=XX
。
题目4:平均数1
-
题目链接
-
读取两个浮点数 A 和 B 的值,对应于两个学生的成绩。
请你计算学生的平均分,其中 A 的成绩的权重为 3.5,B 的成绩的权重为 7.5。
输入格式
输入占两行,每行包含一个浮点数,第一行表示 A,第二行表示 B。
输出格式
输出格式为 MEDIA = X
,其中 X 为平均分,结果保留五位小数。
数据范围
0 ≤ A, B ≤ 10.0
输入样例:
5.0
7.1
输出样例:
MEDIA = 6.43182
解答(C语言实现):
#include <stdio.h>int main() {double A, B;const double weightA = 3.5;const double weightB = 7.5;// 读取两个浮点数scanf("%lf", &A);scanf("%lf", &B);// 计算加权平均分double media = (A * weightA + B * weightB) / (weightA + weightB);// 输出平均分,保留五位小数printf("MEDIA = %.5lf\n", media);return 0;
}
解释:
scanf
用来读取两个浮点数 A 和 B,分别表示两个学生的成绩。- 计算加权平均数公式: MEDIA = A × 3.5 + B × 7.5 3.5 + 7.5 \text{MEDIA} = \frac{A \times 3.5 + B \times 7.5}{3.5 + 7.5} MEDIA=3.5+7.5A×3.5+B×7.5。
- 使用
printf
按照要求输出平均分,结果保留五位小数,格式为MEDIA = XX.XXXXX
。
题目5:工资
-
题目链接
-
请编写一个程序,可以读取一名员工的员工编号,本月工作总时长(小时)以及时薪,并输出他的工资条,工资条中包括员工编号和员工月收入。
输入格式
输入包含两个整数和一个浮点数,分别代表员工编号,工作时长以及时薪。每个数占一行。
输出格式
输出共两行,第一行格式为 NUMBER = X
,其中 X
为员工编号。
第二行格式为 SALARY = U$ Y
,其中 Y
为该员工月收入,保留两位小数。
数据范围
1 ≤ 员工编号 ≤ 100
1 ≤ 总工作时长 ≤ 200
1 ≤ 时薪 ≤ 50
输入样例:
25
100
5.50
输出样例:
NUMBER = 25
SALARY = U$ 550.00
解答(C语言实现):
#include <stdio.h>int main() {int employeeNumber, hoursWorked;double hourlyRate;// 读取员工编号、工作时长和时薪scanf("%d", &employeeNumber);scanf("%d", &hoursWorked);scanf("%lf", &hourlyRate);// 计算工资double salary = hoursWorked * hourlyRate;// 输出员工编号和工资,工资保留两位小数printf("NUMBER = %d\n", employeeNumber);printf("SALARY = U$ %.2lf\n", salary);return 0;
}
解释:
- 使用
scanf
读取三个输入:员工编号(整数)、工作时长(整数)以及时薪(浮点数)。 - 通过
hoursWorked * hourlyRate
计算员工的工资。 - 使用
printf
输出员工编号和工资,工资格式为SALARY = U$ XX.XX
,保留两位小数。
题目6:油耗
-
题目链接
-
给定一个汽车行驶的总路程(km)和消耗的油量(l),请你求出汽车每消耗 1 升汽油可行驶多少公里路程。
输入格式
输入共两行,第一行包含整数 X
,表示行驶总路程。
第二行包含保留一位小数的浮点数 Y
,表示消耗的油量。
输出格式
输出格式为 M km/l
,其中 M
为计算结果,保留三位小数。
数据范围
1 ≤ X , Y ≤ 1 0 9 1 ≤ X, Y ≤ 10^9 1≤X,Y≤109
输入样例:
500
35.0
输出样例:
14.286 km/l
解答(C语言实现):
#include <stdio.h>int main() {int X;double Y;// 读取总路程 X 和消耗的油量 Yscanf("%d", &X);scanf("%lf", &Y);// 计算每升油行驶的公里数double consumption = X / Y;// 输出结果,保留三位小数printf("%.3lf km/l\n", consumption);return 0;
}
解释:
- 使用
scanf
读取汽车行驶的总路程X
和消耗的油量Y
。 - 通过
X / Y
计算每升汽油行驶的公里数。 - 使用
printf
输出结果,保留三位小数,格式为XX.XXX km/l
。
题目7:两点间的距离
-
题目链接
-
给定两个点 P1 和 P2,其中 P1 的坐标为 (x1, y1),P2 的坐标为 (x2, y2),请你计算两点间的距离是多少。
距离公式为: distance = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 \text{distance} = \sqrt{(x2 - x1)^2 + (y2 - y1)^2} distance=(x2−x1)2+(y2−y1)2
输入格式
输入共两行,每行包含两个双精度浮点数 $ x_i, y_i $,表示其中一个点的坐标。输入数值均保留一位小数。
输出格式
输出你的结果,保留四位小数。
数据范围
− 1 0 9 ≤ x i , y i ≤ 1 0 9 -10^9 \leq x_i, y_i \leq 10^9 −109≤xi,yi≤109
输入样例:
1.0 7.0
5.0 9.0
输出样例:
4.4721
解答(C语言实现):
#include <stdio.h>
#include <math.h>int main() {double x1, y1, x2, y2;// 读取点 P1 和 P2 的坐标scanf("%lf %lf", &x1, &y1);scanf("%lf %lf", &x2, &y2);// 计算两点间的距离double distance = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));// 输出结果,保留四位小数printf("%.4lf\n", distance);return 0;
}
解释:
- 使用
scanf
读取两点的坐标 ( (x1, y1) ) 和 ( (x2, y2) )。 - 使用距离公式 distance = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 \text{distance} = \sqrt{(x2 - x1)^2 + (y2 - y1)^2} distance=(x2−x1)2+(y2−y1)2 计算两点间的距离。
- 使用
printf
输出结果,保留四位小数。
题目8:钞票
-
题目链接
-
你需要读取一个整数值并将其分解为多张钞票的和,钞票的面额包括 100, 50, 20, 10, 5, 2, 1。所使用的钞票数量要求尽可能少。
输入格式
输入一个整数 N
。
输出格式
输出读取数值以及每种面值钞票的需求数量,格式参照输出样例。
数据范围
0 < N < 1000000
输入样例:
576
输出样例:
576
5 nota(s) de R$ 100,00
1 nota(s) de R$ 50,00
1 nota(s) de R$ 20,00
0 nota(s) de R$ 10,00
1 nota(s) de R$ 5,00
0 nota(s) de R$ 2,00
1 nota(s) de R$ 1,00
解答(C语言实现):
#include <stdio.h>int main() {int N;// 读取输入的整数 Nscanf("%d", &N);// 输出读取的数值printf("%d\n", N);// 定义钞票的面额int denominations[] = {100, 50, 20, 10, 5, 2, 1};// 逐一计算每种面额需要的钞票数量for (int i = 0; i < 7; i++) {int count = N / denominations[i]; // 计算当前面额的钞票数量printf("%d nota(s) de R$ %d,00\n", count, denominations[i]);N = N % denominations[i]; // 更新剩余的金额}return 0;
}
解释:
- 使用
scanf
读取一个整数N
。 - 定义一个数组
denominations
来存储所有可能的钞票面值。 - 通过循环计算每种面值钞票的数量
count
,然后输出每种钞票的数量。 - 每次计算完某个面额的钞票数量后,更新剩余的金额
N
,继续计算下一种面额的钞票数量。 - 输出格式严格按照题目要求,确保每个面值的输出都在新的一行。
题目9:时间转换
-
题目链接
-
读取一个整数值,它是工厂中某个事件的持续时间(以秒为单位),请将其转换为小时:分钟:秒来表示。
输入格式
输入一个整数 N
,表示时间的秒数。
输出格式
输出转换后的时间表示,格式为 hours:minutes:seconds
。
数据范围
1 ≤ N ≤ 1000000
输入样例:
556
输出样例:
0:9:16
解答(C语言实现):
#include <stdio.h>int main() {int N;// 读取输入的秒数scanf("%d", &N);// 计算小时、分钟和秒int hours = N / 3600;N = N % 3600;int minutes = N / 60;int seconds = N % 60;// 输出转换后的时间printf("%d:%d:%d\n", hours, minutes, seconds);return 0;
}
解释:
- 使用
scanf
读取一个整数N
,表示事件持续的秒数。 - 通过
N / 3600
计算小时数,之后用N % 3600
更新剩余的秒数。 - 用
N / 60
计算分钟数,接着用N % 60
得到剩余的秒数。 - 最终输出
hours:minutes:seconds
格式的时间表示。
题目10:简单乘积
-
题目链接
-
读取两个整数值,计算它们的乘积并将结果存储在名为
PROD
的变量中。
输入格式
共两行,每行包含一个整数。
输出格式
输出格式为 PROD = X
,其中 X
为乘积结果。
数据范围
输入的两个整数的绝对值均不超过 10000。
输入样例:
3
9
输出样例:
PROD = 27
解答(C语言实现):
#include <stdio.h>int main() {int A, B;// 读取两个整数scanf("%d", &A);scanf("%d", &B);// 计算乘积并存储在变量 PROD 中int PROD = A * B;// 输出结果printf("PROD = %d\n", PROD);return 0;
}
解释:
- 使用
scanf
读取两个整数A
和B
。 - 通过
A * B
计算它们的乘积,并将结果存储在变量PROD
中。 - 使用
printf
输出格式化结果,格式为PROD = X
,其中X
为乘积的值。
题目11:简单计算
-
题目链接
-
给定你两个产品的产品编号、产品数量以及产品单价,请你计算买下两种产品一共需要花费多少钱。
输入格式
输入共两行。
每行包含两个整数和一个浮点数,分别表示产品编号、产品数量和产品单价。
输出格式
输出格式为 VALOR A PAGAR: R$ X
,其中 X
为产品总价值,保留两位小数。
数据范围
1 ≤ 产品编号, 产品数量 ≤ 10000
1.00 ≤ 产品单价 ≤ 10000.00
输入样例:
12 1 5.30
16 2 5.10
输出样例:
VALOR A PAGAR: R$ 15.50
解答(C语言实现):
#include <stdio.h>int main() {int code1, code2, quantity1, quantity2;double price1, price2;// 读取第一个产品的编号、数量和单价scanf("%d %d %lf", &code1, &quantity1, &price1);// 读取第二个产品的编号、数量和单价scanf("%d %d %lf", &code2, &quantity2, &price2);// 计算总价格double total = (quantity1 * price1) + (quantity2 * price2);// 输出结果,保留两位小数printf("VALOR A PAGAR: R$ %.2lf\n", total);return 0;
}
解释:
- 使用
scanf
读取每个产品的编号、数量和单价。 - 计算总价值:第一个产品的总价为
quantity1 * price1
,第二个产品的总价为quantity2 * price2
,然后将两者相加得到总价值。 - 使用
printf
按要求格式化输出结果,保留两位小数。
题目12:球的体积
-
题目链接
-
给定一个球体的半径 ( R ),请计算球体的体积。
-
计算球体体积的公式为: V = 4 3 × π × R 3 V = \frac{4}{3} \times \pi \times R^3 V=34×π×R3
-
其中 $ \pi $ 取 3.14159。
输入格式
输入一个整数 ( R )。
输出格式
输出格式为 VOLUME = X
,其中 $ X $ 为球体的体积,结果保留三位小数。
数据范围
1 ≤ $ R $ ≤ 2000
输入样例:
3
输出样例:
VOLUME = 113.097
解答(C语言实现):
#include <stdio.h>
#include <math.h>int main() {int R;const double PI = 3.14159;// 读取球体半径scanf("%d", &R);// 计算球体的体积,公式 V = (4/3.0) * PI * R^3double volume = (4.0 / 3.0) * PI * pow(R, 3);// 输出球体的体积,保留三位小数printf("VOLUME = %.3lf\n", volume);return 0;
}
解释:
- 使用
scanf
读取球体的半径 R R R。 - 计算球体体积的公式为 V = 4 3 × π × R 3 V = \frac{4}{3} \times \pi \times R^3 V=34×π×R3,这里 $ \frac{4}{3.0} $ 用来避免整除的错误。
- 使用
pow
函数计算 R 3 R^3 R3。 - 使用
printf
按格式输出体积,保留三位小数。
题目13:面积
-
题目链接
-
给定三个浮点数 A,B 和 C,计算以下几何图形的面积:
- 底边为 A,高为 C 的三角形。
- 半径为 C 的圆(π=3.14159)。
- 底边为 A 和 B,高为 C 的梯形。
- 边长为 B 的正方形。
- 边长为 A 和 B 的长方形。
输入格式
输入共一行,包含三个浮点数 A,B,C,保留一位小数。
输出格式
输出共五行,形式如下所示:
TRIANGULO: X
,其中 X 为三角形面积,保留三位小数。CIRCULO: X
,其中 X 为圆形面积,保留三位小数。TRAPEZIO: X
,其中 X 为梯形面积,保留三位小数。QUADRADO: X
,其中 X 为正方形面积,保留三位小数。RETANGULO: X
,其中 X 为长方形面积,保留三位小数。
数据范围
0 ≤ A, B, C ≤ 10000.0
输入样例:
3.0 4.0 5.2
输出样例:
TRIANGULO: 7.800
CIRCULO: 84.949
TRAPEZIO: 18.200
QUADRADO: 16.000
RETANGULO: 12.000
解答(C语言实现):
#include <stdio.h>
#include <math.h>int main() {double A, B, C;const double PI = 3.14159;// 读取输入scanf("%lf %lf %lf", &A, &B, &C);// 计算各种面积double area_triangle = 0.5 * A * C;double area_circle = PI * pow(C, 2);double area_trapezium = 0.5 * (A + B) * C;double area_square = B * B;double area_rectangle = A * B;// 输出结果,保留三位小数printf("TRIANGULO: %.3lf\n", area_triangle);printf("CIRCULO: %.3lf\n", area_circle);printf("TRAPEZIO: %.3lf\n", area_trapezium);printf("QUADRADO: %.3lf\n", area_square);printf("RETANGULO: %.3lf\n", area_rectangle);return 0;
}
解释:
- 使用
scanf
读取输入的三个浮点数 A,B,C。 - 按照题目要求,分别计算三角形、圆、梯形、正方形、长方形的面积。
- 使用
printf
格式化输出每个图形的面积,保留三位小数。
题目14:平均数2
-
题目链接
-
读取三个浮点数 A,B 和 C,对应于三个学生的成绩。请计算加权平均分,其中 A 的权重为 2,B 的权重为 3,C 的权重为 5。
输入格式
输入共三行,每行包含一个浮点数。
第一行表示 A,第二行表示 B,第三行表示 C。
输出格式
输出格式为 MEDIA = X
,其中 X 为加权平均分,结果保留一位小数。
数据范围
0 ≤ A, B, C ≤ 10.0
输入样例:
5.0
6.0
7.0
输出样例:
MEDIA = 6.3
解答(C语言实现):
#include <stdio.h>int main() {double A, B, C;const int weightA = 2, weightB = 3, weightC = 5;// 读取三个浮点数 A, B, Cscanf("%lf", &A);scanf("%lf", &B);scanf("%lf", &C);// 计算加权平均分double media = (A * weightA + B * weightB + C * weightC) / (weightA + weightB + weightC);// 输出结果,保留一位小数printf("MEDIA = %.1lf\n", media);return 0;
}
解释:
- 使用
scanf
读取三个浮点数 A, B, C,分别表示三个学生的成绩。 - 按照权重(A 的权重为 2,B 的权重为 3,C 的权重为 5)计算加权平均分。
- 使用
printf
格式化输出结果,保留一位小数。
题目15:工资和奖金
-
题目链接
-
给定销售人员的名字、底薪以及月销售额,计算该销售人员的月收入。 月收入等于底薪加上 15% 的月销售额。
输入格式
- 第一行:一个由大写字母构成的字符串,表示销售人员的名字(长度不超过 10)。
- 第二行:一个浮点数,表示该人员的底薪。
- 第三行:一个浮点数,表示该人员的月销售额。
输出格式
输出格式为 TOTAL = R$ X
,其中 X 为该人员的月收入,保留两位小数。
数据范围
0 ≤ 底薪, 月销售额 ≤ 10000.00
输入样例:
JOAO
500.00
1000.00
输出样例:
TOTAL = R$ 650.00
解答(C语言实现):
#include <stdio.h>int main() {char name[11]; // 名字的最大长度为10double salary, sales;// 读取销售人员的名字、底薪和月销售额scanf("%s", name);scanf("%lf", &salary);scanf("%lf", &sales);// 计算月收入 = 底薪 + 15% 的月销售额double total = salary + (sales * 0.15);// 输出结果,保留两位小数printf("TOTAL = R$ %.2lf\n", total);return 0;
}
解释:
- 使用
scanf
读取销售人员的名字、底薪和月销售额。 - 通过公式计算月收入:月收入 = 底薪 + 月销售额的 15%。
- 使用
printf
按照要求的格式输出月收入,保留两位小数。
题目16:最大值
-
题目链接
-
给定三个整数,请你找出它们中的最大值。
可以使用以下公式来计算两个数中的最大值: max ( a , b ) = a + b + abs ( a − b ) 2 \text{max}(a,b) = \frac{a + b + \text{abs}(a - b)}{2} max(a,b)=2a+b+abs(a−b)
输入格式
输入占一行,包含三个整数。
输出格式
输出格式为 X eh o maior
,其中 X
为三个数中的最大值。
数据范围
1 ≤ 给定整数 ≤ 1 0 9 10^9 109
输入样例:
7 14 106
输出样例:
106 eh o maior
解答(C语言实现):
#include <stdio.h>
#include <stdlib.h>int main() {int a, b, c;// 读取三个整数scanf("%d %d %d", &a, &b, &c);// 计算前两个数的最大值int max_ab = (a + b + abs(a - b)) / 2;// 计算 max_ab 和第三个数的最大值int max_abc = (max_ab + c + abs(max_ab - c)) / 2;// 输出结果printf("%d eh o maior\n", max_abc);return 0;
}
解释:
- 使用
scanf
读取三个整数a
,b
,c
。 - 使用公式 max ( a , b ) = a + b + abs ( a − b ) 2 \text{max}(a, b) = \frac{a + b + \text{abs}(a - b)}{2} max(a,b)=2a+b+abs(a−b) 计算前两个数中的最大值。
- 使用相同的公式计算前两个数的最大值与第三个数的最大值。
- 输出结果,格式为
X eh o maior
。
题目17:距离
-
题目链接
-
两辆汽车在同一地点,同时沿同一方向前进。一辆车的速度为 60 km/h,另一辆车的速度为 90 km/h。每过 60 分钟,两车的距离就会拉开 30 公里。给定两车之间的距离 L 公里,求出它们已经行驶了多长时间(以分钟为单位)。
输入格式
输入包含一个整数 L ,表示两车之间的距离。
输出格式
输出格式为 X minutos
,其中 X 为两车已经行驶的时间,单位为分钟。
数据范围
$1 ≤ L ≤ 10^9 $
输入样例:
30
输出样例:
60 minutos
解答(C语言实现):
#include <stdio.h>int main() {int L;// 读取两车之间的距离scanf("%d", &L);// 每公里的时间是2分钟,所以时间是 L * 2int time = L * 2;// 输出结果printf("%d minutos\n", time);return 0;
}
解释:
- 两辆车每小时拉开 30 公里的距离,因此每公里的时间是 2 分钟。
- 通过
L * 2
计算出已经行驶的时间。 - 使用
printf
输出时间,格式为X minutos
。
题目18:燃料消耗
-
题目链接
-
一辆汽车每行驶 12 公里需要消耗 1 升汽油。现在给定汽车的行驶速度 S(km/h)和行驶时间 T(小时),请计算该车在行驶过程中一共消耗了多少升汽油。
输入格式
- 第一行包含一个整数 T ,表示行驶时间(小时)。
- 第二行包含一个整数 S ,表示行驶速度(km/h)。
输出格式
输出行驶期间的总油耗,结果保留三位小数。
数据范围
1 ≤ T , S ≤ 1 0 7 1 ≤ T, S ≤ 10^7 1≤T,S≤107
输入样例:
10
85
输出样例:
70.833
解答(C语言实现):
#include <stdio.h>int main() {long long int T, S;// 读取行驶时间和速度scanf("%lld", &T);scanf("%lld", &S);// 计算总行驶的距离,使用 long long int 类型long long int distance = T * S;// 计算总油耗,仍然使用 double 类型double fuel_consumed = (double)distance / 12;// 输出结果,保留三位小数printf("%.3lf\n", fuel_consumed);return 0;
}
解释:
- 数据范围很大,变量都应为 long long int 类型
- 使用
scanf
读取行驶时间 T 和速度 S 。 - 根据公式 distance = T × S \text{distance} = T \times S distance=T×S 计算总行驶的距离。
- 每行驶 12 公里消耗 1 升汽油,因此总油耗为 fuel_consumed = d i s t a n c e / 12 distance/12 distance/12。
- 使用
printf
输出结果,保留三位小数。
题目19:钞票和硬币
-
题目链接
-
读取一个带有两个小数位的浮点数,代表货币价值。将该值分解为多种钞票和硬币的和,要求使用的钞票和硬币的总数量尽可能少。
输入格式
输入一个浮点数 ( N )。
输出格式
输出每种面值的钞票和硬币的需求数量,格式如样例所示。
数据范围
0 ≤ ( N ) ≤ 1000000.00
输入样例:
576.73
输出样例:
NOTAS:
5 nota(s) de R$ 100.00
1 nota(s) de R$ 50.00
1 nota(s) de R$ 20.00
0 nota(s) de R$ 10.00
1 nota(s) de R$ 5.00
0 nota(s) de R$ 2.00
MOEDAS:
1 moeda(s) de R$ 1.00
1 moeda(s) de R$ 0.50
0 moeda(s) de R$ 0.25
2 moeda(s) de R$ 0.10
0 moeda(s) de R$ 0.05
3 moeda(s) de R$ 0.01
解答(C语言实现):
#include <stdio.h>int main() {double N;int notas, moedas;// 读取浮点数 N,转换为整数形式表示(单位为分,避免浮点数误差)scanf("%lf", &N);int valor = (int)(N * 100 + 0.5); // 将浮点数乘以100并四舍五入// 处理钞票部分printf("NOTAS:\n");notas = valor / 10000;printf("%d nota(s) de R$ 100.00\n", notas);valor %= 10000;notas = valor / 5000;printf("%d nota(s) de R$ 50.00\n", notas);valor %= 5000;notas = valor / 2000;printf("%d nota(s) de R$ 20.00\n", notas);valor %= 2000;notas = valor / 1000;printf("%d nota(s) de R$ 10.00\n", notas);valor %= 1000;notas = valor / 500;printf("%d nota(s) de R$ 5.00\n", notas);valor %= 500;notas = valor / 200;printf("%d nota(s) de R$ 2.00\n", notas);valor %= 200;// 处理硬币部分printf("MOEDAS:\n");moedas = valor / 100;printf("%d moeda(s) de R$ 1.00\n", moedas);valor %= 100;moedas = valor / 50;printf("%d moeda(s) de R$ 0.50\n", moedas);valor %= 50;moedas = valor / 25;printf("%d moeda(s) de R$ 0.25\n", moedas);valor %= 25;moedas = valor / 10;printf("%d moeda(s) de R$ 0.10\n", moedas);valor %= 10;moedas = valor / 5;printf("%d moeda(s) de R$ 0.05\n", moedas);valor %= 5;moedas = valor / 1;printf("%d moeda(s) de R$ 0.01\n", moedas);return 0;
}
解释:
- 将输入的浮点数 ( N ) 乘以 100,转换为整数表示金额(单位为分)来避免浮点数精度问题。
- 使用整数表示金额后,依次计算每种面值钞票和硬币的数量,并更新剩余的金额。
- 按照题目要求输出钞票和硬币的数量,保留每个面值的格式。
题目20:天数转换
-
题目链接
-
读取一个整数值 ( N ),表示一个人的年龄(以天为单位),并将其转换为年、月和日的表示方式。年、月、日分别对应
ano(s)
,mes(es)
,dia(s)
。
假设:
- 1 年 = 365 天
- 1 月 = 30 天
输入格式
输入一个整数 ( N )。
输出格式
输出转换后的天数,格式为:
X ano(s)
Y mes(es)
Z dia(s)
数据范围
1 ≤ ( N ) ≤ 1000000
输入样例:
400
输出样例:
1 ano(s)
1 mes(es)
5 dia(s)
解答(C语言实现):
#include <stdio.h>int main() {int N;// 读取天数scanf("%d", &N);// 计算年、月和日int anos = N / 365;N = N % 365;int meses = N / 30;int dias = N % 30;// 输出结果printf("%d ano(s)\n", anos);printf("%d mes(es)\n", meses);printf("%d dia(s)\n", dias);return 0;
}
解释:
- 使用
scanf
读取输入的天数 ( N )。 - 计算年数:将天数除以 365 得到年份 ( anos ),并更新剩余的天数。
- 计算月数:将剩余天数除以 30 得到月份 ( meses ),并更新剩余的天数为日数。
- 按照题目要求格式化输出年、月和日的结果。