C语言语法练习20题(变量、输入输出、表达式与顺序语句)

devtools/2024/10/15 15:12:22/

题目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;
}

解释:

  1. 使用 scanf 函数从输入中读取两个整数 AB
  2. 通过 A + B 计算它们的和。
  3. 使用 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;
}

解释:

  1. 使用 scanf 分别读取四个整数 A, B, C, D
  2. 计算 (A * B - C * D) 的值,并存储在 result 变量中。
  3. 使用 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;
}

解释:

  1. scanf 读取输入的浮点数作为圆的半径 R R R
  2. 使用公式 A = π R 2 A = \pi R^2 A=πR2 计算圆的面积,其中 π \pi π 的值为 3.14159。
  3. 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;
}

解释:

  1. scanf 用来读取两个浮点数 A 和 B,分别表示两个学生的成绩。
  2. 计算加权平均数公式: 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
  3. 使用 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;
}

解释:

  1. 使用 scanf 读取三个输入:员工编号(整数)、工作时长(整数)以及时薪(浮点数)。
  2. 通过 hoursWorked * hourlyRate 计算员工的工资。
  3. 使用 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 1X,Y109

输入样例:
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;
}

解释:

  1. 使用 scanf 读取汽车行驶的总路程 X 和消耗的油量 Y
  2. 通过 X / Y 计算每升汽油行驶的公里数。
  3. 使用 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=(x2x1)2+(y2y1)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 109xi,yi109

输入样例:
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;
}

解释:

  1. 使用 scanf 读取两点的坐标 ( (x1, y1) ) 和 ( (x2, y2) )。
  2. 使用距离公式 distance = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 \text{distance} = \sqrt{(x2 - x1)^2 + (y2 - y1)^2} distance=(x2x1)2+(y2y1)2 计算两点间的距离。
  3. 使用 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;
}

解释:

  1. 使用 scanf 读取一个整数 N
  2. 定义一个数组 denominations 来存储所有可能的钞票面值。
  3. 通过循环计算每种面值钞票的数量 count,然后输出每种钞票的数量。
  4. 每次计算完某个面额的钞票数量后,更新剩余的金额 N,继续计算下一种面额的钞票数量。
  5. 输出格式严格按照题目要求,确保每个面值的输出都在新的一行。

题目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;
}

解释:

  1. 使用 scanf 读取一个整数 N,表示事件持续的秒数。
  2. 通过 N / 3600 计算小时数,之后用 N % 3600 更新剩余的秒数。
  3. N / 60 计算分钟数,接着用 N % 60 得到剩余的秒数。
  4. 最终输出 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;
}

解释:

  1. 使用 scanf 读取两个整数 AB
  2. 通过 A * B 计算它们的乘积,并将结果存储在变量 PROD 中。
  3. 使用 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;
}

解释:

  1. 使用 scanf 读取每个产品的编号、数量和单价。
  2. 计算总价值:第一个产品的总价为 quantity1 * price1,第二个产品的总价为 quantity2 * price2,然后将两者相加得到总价值。
  3. 使用 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;
}

解释:

  1. 使用 scanf 读取球体的半径 R R R
  2. 计算球体体积的公式为 V = 4 3 × π × R 3 V = \frac{4}{3} \times \pi \times R^3 V=34×π×R3,这里 $ \frac{4}{3.0} $ 用来避免整除的错误。
  3. 使用 pow 函数计算 R 3 R^3 R3
  4. 使用 printf 按格式输出体积,保留三位小数。

题目13:面积

  • 题目链接

  • 给定三个浮点数 A,B 和 C,计算以下几何图形的面积:

    1. 底边为 A,高为 C 的三角形。
    2. 半径为 C 的圆(π=3.14159)。
    3. 底边为 A 和 B,高为 C 的梯形。
    4. 边长为 B 的正方形。
    5. 边长为 A 和 B 的长方形。
输入格式

输入共一行,包含三个浮点数 A,B,C,保留一位小数。

输出格式

输出共五行,形式如下所示:

  1. TRIANGULO: X,其中 X 为三角形面积,保留三位小数。
  2. CIRCULO: X,其中 X 为圆形面积,保留三位小数。
  3. TRAPEZIO: X,其中 X 为梯形面积,保留三位小数。
  4. QUADRADO: X,其中 X 为正方形面积,保留三位小数。
  5. 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;
}

解释:

  1. 使用 scanf 读取输入的三个浮点数 A,B,C。
  2. 按照题目要求,分别计算三角形、圆、梯形、正方形、长方形的面积。
  3. 使用 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;
}

解释:

  1. 使用 scanf 读取三个浮点数 A, B, C,分别表示三个学生的成绩。
  2. 按照权重(A 的权重为 2,B 的权重为 3,C 的权重为 5)计算加权平均分。
  3. 使用 printf 格式化输出结果,保留一位小数。

题目15:工资和奖金

  • 题目链接

  • 给定销售人员的名字、底薪以及月销售额,计算该销售人员的月收入。 月收入等于底薪加上 15% 的月销售额。

输入格式
  1. 第一行:一个由大写字母构成的字符串,表示销售人员的名字(长度不超过 10)。
  2. 第二行:一个浮点数,表示该人员的底薪。
  3. 第三行:一个浮点数,表示该人员的月销售额。
输出格式

输出格式为 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;
}

解释:

  1. 使用 scanf 读取销售人员的名字、底薪和月销售额。
  2. 通过公式计算月收入:月收入 = 底薪 + 月销售额的 15%。
  3. 使用 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(ab)

输入格式

输入占一行,包含三个整数。

输出格式

输出格式为 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;
}

解释:

  1. 使用 scanf 读取三个整数 a, b, c
  2. 使用公式 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(ab) 计算前两个数中的最大值。
  3. 使用相同的公式计算前两个数的最大值与第三个数的最大值。
  4. 输出结果,格式为 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;
}

解释:

  1. 两辆车每小时拉开 30 公里的距离,因此每公里的时间是 2 分钟。
  2. 通过 L * 2 计算出已经行驶的时间。
  3. 使用 printf 输出时间,格式为 X minutos

题目18:燃料消耗

  • 题目链接

  • 一辆汽车每行驶 12 公里需要消耗 1 升汽油。现在给定汽车的行驶速度 S(km/h)和行驶时间 T(小时),请计算该车在行驶过程中一共消耗了多少升汽油。

输入格式
  1. 第一行包含一个整数 T ,表示行驶时间(小时)。
  2. 第二行包含一个整数 S ,表示行驶速度(km/h)。
输出格式

输出行驶期间的总油耗,结果保留三位小数。

数据范围

1 ≤ T , S ≤ 1 0 7 1 ≤ T, S ≤ 10^7 1T,S107

输入样例:
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;
}

解释:

  1. 数据范围很大,变量都应为 long long int 类型
  2. 使用 scanf 读取行驶时间 T 和速度 S 。
  3. 根据公式 distance = T × S \text{distance} = T \times S distance=T×S 计算总行驶的距离。
  4. 每行驶 12 公里消耗 1 升汽油,因此总油耗为 fuel_consumed = d i s t a n c e / 12 distance/12 distance/12
  5. 使用 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;
}

解释:

  1. 将输入的浮点数 ( N ) 乘以 100,转换为整数表示金额(单位为分)来避免浮点数精度问题。
  2. 使用整数表示金额后,依次计算每种面值钞票和硬币的数量,并更新剩余的金额。
  3. 按照题目要求输出钞票和硬币的数量,保留每个面值的格式。

题目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;
}

解释:

  1. 使用 scanf 读取输入的天数 ( N )。
  2. 计算年数:将天数除以 365 得到年份 ( anos ),并更新剩余的天数。
  3. 计算月数:将剩余天数除以 30 得到月份 ( meses ),并更新剩余的天数为日数。
  4. 按照题目要求格式化输出年、月和日的结果。

http://www.ppmy.cn/devtools/126213.html

相关文章

深入理解Transformer的笔记记录(精简版本)NNLM → Word2Vec

文章的整体介绍顺序为: NNLM → Word2Vec → Seq2Seq → Seq2Seq with Attention → Transformer → Elmo → GPT → BERT 自然语言处理相关任务中要将自然语言交给机器学习中的算法来处理,通常需要将语言数学化,因为计算机机器只认数学符号。向量是人把自然界的东西抽象出…

【华为HCIP实战课程十二】OSPF网络中1类2类LSA SPF详解,网络工程师

一、OSPF 1类LSA详解 1、通告者(产生LSA的设备):任何一台设备都会产生1类LSA 2、通告的范围:区域内部 3、功能和内容:产生拓扑信息和路由信息 LSA是OSPF链路状态信息的载体 4、每台OSPF路由器使用一条Router-LSA描述本区域内的链路状态信息 Type :LSA类型,Router-L…

C语言笔记 13

初见函数 求素数的和 #include <stdio.h>int main() {int m,n;int sum 0;int cnt 0;int i;scanf("%d %d", &m, &n);// m10,n31;if( m1) m2;for( im; i<n; i ) {int isPrime 1;int k;for ( k2; k<i-1; k ) {if ( i%k 0 ) {isPrime 0;break;…

Patroni配置3-环境变量配置设置

目录 全局/通用 Log Citus Consul Etcd Etcdv3 ZooKeeper Exhibitor Raft&#xff08;已弃用&#xff09; PostgreSQL REST API CTL 环境配置设置 可以通过系统环境变量覆盖Patroni配置文件中定义的一些配置参数。本文档列出了Patroni处理的所有环境变量。通过这些…

mysql-数据库的操作

目录 认识数据库的基本操作 1、创建数据库 &#xff08;1&#xff09;校验集、编码集 &#xff08;2&#xff09;指定字符集和校验集创建数据库 2、展示所建立的数据库&#xff1a; 3、查看自己当前数据库&#xff1a; 4、修改数据库 5、删除数据库 6、库的备份与恢复…

Go 语言应用开发:从入门到实战

Go 语言应用开发&#xff1a;从入门到实战 引言 Go&#xff08;Golang&#xff09;是由 Google 开发的一种开源编程语言&#xff0c;设计初衷是提高编程效率&#xff0c;尤其是在高并发场景下表现出色。Go 语言以其简洁、易学、高效并发的特性&#xff0c;逐渐成为开发者的首…

【HarmonyOS】HMRouter使用详解(三)生命周期

生命周期&#xff08;Lifecycle&#xff09; 使用HMRouter的页面跳转时&#xff0c;想实现和Navigation一样的生命周期时&#xff0c;需要通过新建生命周期类来实现对页面对某一个生命周期的监控。 新建Lifecycle类 通过继承IHMLifecycle接口实现生命周期接口的方法重写。 通过…

《软件工程概论》作业一:新冠疫情下软件产品设计

课程说明&#xff1a;《软件工程概论》为浙江科技学院2018级软件工程专业在大二下学期开设的必修课。课程使用《软件工程导论&#xff08;第6版&#xff09;》&#xff08;张海藩等编著&#xff0c;清华大学出版社&#xff09;作为教材。以《软件设计文档国家标准GBT8567-2006》…