0,写在前面
0-1,声明
本文是作者为了复习而做的整理,不对任何人因为本文而导致的后果负责。
代码是C++语言,需要的话可以用AI转换语言。
作者看到前辈写的2024XDOJ题目及答案后萌生仰慕效仿之心,遂落笔写下此篇,以作验证所学之用。码风,思路有不足之处,欢迎各路大佬指点,让各位大佬见笑qwq
25/10/20-完全没人看,无限期停更中ing
0-2,目录
- T9计算球体重量
- T10温度转换
- T11整数简单运算
- T15A+B+C
- T16字符输入输出
- T19实数运算
- T21数位输出
- T42整除判断
- T47冰箱温度预测
- T48除法计算器
- T79计算平均值
- T89计算球体的体积
- T90求三位整数各位数字之和
- T91
- T92工资发放
- T98简单程序
- T110判断奇偶性
- T111
- T113出租车计价
- T125利率计算
- T126购房贷款计算
- T374
- T388字符统计
- T405优惠促销
- T406表达式计算
- T449套餐选择
- T457交换数组元素
- T458
- T459
- T460
- T461素数检查
- T526序列分段求和
- T568锥体重量
- T569数位输出
- T570四则运算
- T571几何体的计算
- T572模型参数计算
- T573时间转换
- T583求存款利率
- T601打印Hello, World!
- T604求最大
- T613求质量
- T615转换时间
1,题解及注释
T56直角三角形
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int a = 0, b = 0, c = 0;
int main(void) {
cin >> a >> b >> c;
a*a + b*b == c*c ? cout << a*b : cout << "no";
return 0;
}
T63工资计算
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int run(int s) {
if (s <= 3500) return 0;
int a = s - 3500;
if (a <= 1500) return int(0.03 * a);
if (a <= 4500) return int(0.03 * 1500 + 0.1 * (a - 1500));
if (a <= 9000) return int(0.03 * 1500 + 0.1 * (4500 - 1500) + 0.2 * (a - 4500));
if (a <= 35000) return int(0.03 * 1500 + 0.1 * (4500 - 1500) + 0.2 * (9000 - 4500) + 0.25 * (a - 9000));
return int(0.03 * 1500 + 0.1 * (4500 - 1500) + 0.2 * (9000 - 4500) + 0.25 * (35000 - 9000) + 0.3 * (a - 35000));
}
int main(void) {
int s = 0;
cin >> s;
cout << s - run(s);
return 0;
}
T64自然数分解
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int main(void) {
int m = 0, sum = 0;
cin >> m;
for (int i = 1; i + 2 * (m - 1) <= m * m * m; i += 2) {
sum = 0;
for (int j = 0; j < m; j += 1) {
sum += i + 2 * j;
}
if (sum == m * m * m) {
for (int j = 0; j < m; j += 1) {
cout << i + 2 * j << " ";
}
cout << endl;
}
}
return 0;
}
T66平均数
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int n=0,sum=0,mid=0;
int main(void){
cin>>n;
for(int i=1;i<=n;i+=1){
cin>>mid;
sum+=mid;
}
printf("%.2f",(1.0*sum)/(1.0*n));
return 0;
}
T87跳一跳
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int ans = 0, c = -1, c2 = 0;
int main(void) {
while (c) {
cin >> c;
if (c == 1) ++ans, c2 = 0;
else if (c == 2) ++c2, ans += 2 * c2;
}
cout << ans;
return 0;
}
T94整数排序
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int a[4]{0};
int main(void){
for(int i=0;i<4;i+=1){
cin>>a[i];
}
sort(a,a+4);
for(int i=0;i<4;i+=1){
cout<<a[i]<<" ";
}
return 0;
}
T97输出 26 个英文字母
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int main(void) {
for (char c = 'a'; c <= 'z'; c += 1) cout << c << " ";
cout << "\n";
for (char c = 'z'; c >= 'a'; c -= 1) cout << c << " ";
return 0;
}
T93整数比较 1
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int a=0,b=0;
int main(void){
cin>>a>>b;
a>b?cout<<a%10<<" "<<b*b:cout<<b%10<<" "<<a*a;
return 0;
}
T9计算球体重量
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
const float iron = 7.86;
const float gold = 19.3;
const double pi = 3.1415926;
int ird = 0, god = 0;
double ir = 0, go = 0;
inline double turecm(double d) {
double mid = d / 20;
return mid;
}
inline double calcu(float p, float r) {
double mid = p * (4.0 / 3.0) * pi * (r * r * r);
return mid;
}
int main(void) {
scanf("%d %d", &ird, &god);
ir = turecm(ird);
go = turecm(god);
printf("%.3f %.3f\n", calcu(iron, ir), calcu(gold, go));
return 0;
}
这里有一点:如果你尝试过用cout输出pi,你会发现它被四舍五入了,这是cout输出时自带的,但是可以解决的。
小数输出时printf会更好用。
T10温度转换
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int k=0;
inline double tem(void){
return (k -32)*(5.0/9.0);//重点
}
int main(void){
cin>>k;
printf("%.2f",tem());
return 0;
}
T11整数简单运算
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int a=0,b=0;
int main(void){
cin>>a>>b;
cout<<a+b<<"\n"<<a-b<<"\n"<<a*b<<"\n"<<a/b;
return 0;
}
T15A+B+C
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
long long a=0,b=0,c=0;
int main(void){
cin>>a>>b>>c;
cout<<a+b+c;
return 0;
}
T16字符输入输出
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
string s;
inline void output(void){
char mid;
for(int i=0;i<s.size();i+=2){
mid = s[i]+32;//ASCII码
cout<<mid;
}
cout<<"!\n";
}
int main(void){
cin>>s;
output();
return 0;
}
如果你用的是scanf_s(),如下:
char a, b, c, d, e;
scanf_s("%c|%c|%c|%c|%c", &a, &b, &c, &d, &e);
发现报错了,那么要记得scanf_s要传入字节数,像这样:
char c;
scanf_s("%c", &c, 1);
这是因为scanf_s需要一个表示缓冲区大小的参数,是为了提升安全性而设计的强制要求,这也是它与scanf的核心区别。
T19实数运算
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
float l = 0, w = 0, h = 0;
int main(void) {
cin >> l >> w >> h;
float V = 1.0 * l * w * h;//重点
printf("%.3f\n", V);
return 0;
}
T21数位输出
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
string s;
char mid;
int main(void) {
cin >> s;
for (int i = 0; i < s.size(); i += 1) {
mid = s[i];
cout << mid << " ";
}
return 0;
}
T42整除判断
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int a = 0, b = 0;
inline void pd(void) {
int mid = (a / b) * b;
if (mid == a) cout << "yes\n";
else cout << a / b << " " << a - mid << "\n";
}
int main(void) {
cin >> a >> b;
pd();
return 0;
}
T47冰箱温度预测
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int h = 0, m = 0;
double t = 0;
inline void tem(void) {
double T = 0;
T = ((4 * t * t) / (t + 2)) - 20;
printf("%.2f\n", T);
}
int main(void) {
cin >> h >> m;
t = h * 1.0 + (m / 60.0);
tem();
return 0;
}
T48除法计算器
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int m = 0, n = 0, q = 0, r = 0;
int main(void) {
cin >> m >> n >> q >> r;
if (m == n * q + r) cout << "yes\n";
else {
cout << m / n << " " << m - (m / n)*n << "\n";
}
return 0;
}
T79计算平均值
#include<bits/stdc++.h>
using namespace std;
double a = 0, b = 0;
int main(void) {
cin >> a;
for (int i = 1; i <= 2; i += 1) {
cin >> b;
a += b;
}
printf("%.2f", a / 3.0);
return 0;
}
T89计算球体的体积
#include<bits/stdc++.h>
using namespace std;
double r = 0;
int main(void) {
cin >> r;
printf("%.2f", 3.14 * (4.0 / 3.0)*pow(r, 3));
return 0;
}
T90求三位整数各位数字之和
#include<bits/stdc++.h>
using namespace std;
int ans = 0;
string s;
int main(void) {
cin >> s;
for (int i = 0; i < s.size(); i += 1) ans += int(s[i] - '0');
cout << ans;
return 0;
}
T91
#include<bits/stdc++.h>
using namespace std;
double a = 0, b = 0, c = 0;
double p = 0, s = 0;
int main(void) {
cin >> a >> b >> c;
p = (a + b + c) / 2.0;
s = sqrt(p * (p - a) * (p - b) * (p - c));
printf("%.2f", s);
return 0;
}
T92工资发放
//贪心思想
#include<bits/stdc++.h>
using namespace std;
int n = 0;
int a[6] {0};
int main(void) {
cin >> n;
a[0] = n / 100,
a[1] = (n % 100) / 50,
a[2] = ((n % 100) % 50) / 20,
a[3] = (((n % 100) % 50) % 20) / 10,
a[4] = ((((n % 100) % 50) % 20) % 10) / 5,
a[5] = ((((n % 100) % 50) % 20) % 10) % 5;
for(int i=0;i<6;i+=1) cout<<a[i]<<" ";
return 0;
}
这个代码很糟糕,因为很多代码重复了
T98简单程序
#include<bits/stdc++.h>
using namespace std;
int n = 0;
int main(void) {
cin >> n;
if (n % 2 == 0 && n % 3 != 0 && n % 5 != 0) cout << "Nice";
else if (n % 3 == 0 && n % 2 != 0 && n % 5 != 0) cout << "Good";
else if (n % 5 == 0 && n % 2 != 0 && n % 3 != 0) cout << "Best";
else cout << "Bad";
return 0;
}
T110判断奇偶性
#include<bits/stdc++.h>
using namespace std;
int main(void) {
int n = 0;
cin >> n;
(n & 1) == 1 ? cout << "奇数" : cout << "偶数";
return 0;
}
T111
#include<bits/stdc++.h>
using namespace std;
int main(void) {
int n = 0;
cin >> n;
n % 5 == 0 && n % 7 == 0 ? cout << "yes" : cout << "no";
return 0;
}
三目运算符
T113出租车计价
#include<bits/stdc++.h>
using namespace std;
double d = 0, t = 0, ans = 10.0;
int main(void) {
cin >> d >> t;
if (d > 3) {
if (d <= 10) {
ans += (d - 3.0) * 2.0;
} else {
ans += 14.0 + (d - 10.0) * 3.0;
}
}
ans += 2.0 * int(t / 5.0);
printf("%d\n", int(ans));
return 0;
}
T125购房贷款计算
#include<bits/stdc++.h>
using namespace std;
double r = 0, n = 0;
int main(void) {
cin >> r >> n;
printf("%.2f", pow(1 + r, n));
return 0;
}
T126购房贷款计算
#include<bits/stdc++.h>
using namespace std;
double d = 0, p = 0, r = 0;
int main(void) {
cin >> d >> p >> r;
printf("%.2f", log(p / (p - d * r)) / log(1 + r));
return 0;
}
T374
#include<bits/stdc++.h>
using namespace std;
double c = 0, m = 0, s = 0;
int main(void) {
cin >> m >> s;
m += s / 60.0;
if (m <= 10) c = 100.0 - 5.0 * m;
else if (m <= 30) c = 50.0 - (m - 10.0);
else if (m <= 50) c = 30.0 - ((m - 30.0) / 2.0);
else c = 20.0;
printf("%.1f", c);
return 0;
}
T388字符统计
#include<bits/stdc++.h>
using namespace std;
char c;
int cnt = 0;
int main(void) {
for (int i = 1; i <= 5; i += 1) {
cin >> c;
if (c == 'a' || c == 'A') ++cnt;
}
cout << cnt;
return 0;
}
T405优惠促销
#include<bits/stdc++.h>
using namespace std;
bool m = 0;
double n = 0;
double pay = 0;
int main(void) {
cin >> m >> n;
if (m) {
cout << "yes ";
if (n >= 500) pay = 0.8 * n;
else if (n >= 350) pay = 0.85 * n;
else if (n >= 200) pay = 0.9 * n;
else pay = 1.0 * n;
} else {
cout << "no ";
if (n >= 500) pay = 0.9 * n;
else if (n >= 350) pay = 0.95 * n;
else pay = 1.0 * n;
}
printf("%.1f %.1f %.1f", n, pay, n - pay);
return 0;
}
T406表达式计算
#include<bits/stdc++.h>
using namespace std;
char c;
int main(void) {
scanf("%c", &c);
cout << c << " ";
if (c >= 97 && c <= 122) {
c += 3;
if (c > 122) c -= 26;
} else if (c >= 65 && c <= 90) {
c -= 2;
if (c < 65) c += 26;
} else if (c >= 48 && c <= 57) c = 9 - (c - 48) + 48;
else if (c == 32) c = '*';
else c = '#';
cout<<c;
return 0;
}
T449套餐选择
#include<bits/stdc++.h>
using namespace std;
double t = 0, a = 0, b = 0;
int main(void) {
cin >> t;
a = 0.6 * t, b = 50.0 + 0.4 * t;
printf("%.2f\n%.2f\n", a, b);
// if (a < b) cout << "A\n";
// else cout << "B\n";
if (t < 250) cout << "A\n";
else cout << "B\n";
return 0;
}
T457交换数组元素
#include<bits/stdc++.h>
using namespace std;
int n = 0, a[55] {0}, b[55] {0};
int main(void) {
cin >> n;
for (int i = 1; i <= n; i += 1) cin >> a[i];
for (int i = 1; i <= n; i += 1) cin >> b[i];
for (int i = 1; i <= n; i += 1) cout << b[i] << " ";
for (int i = 1; i <= n; i += 1) cout << a[i] << " ";
return 0;
}
T458
#include<bits/stdc++.h>
using namespace std;
int ans=0;
string s;
int main(void){
cin>>s;
for(int i=0;i<s.size();i+=1){
ans+=s[i]-48;
}
cout<<ans<<"\n";
return 0;
}
T459
#include<bits/stdc++.h>
using namespace std;
string s;
inline bool isp(void) {
int l = 0, r = s.size() - 1;
while (l < r) {
if (s[l] != s[r]) return 0;
++l, --r;
}
return 1;
}
int main(void) {
cin >> s;
if (isp()) {
cout << "Yes\n";
} else {
cout << "No\n";
}
return 0;
}
T460
#include<bits/stdc++.h>
using namespace std;
int a[13] {0}, n = 0;
inline void init(void) {
a[1] = 1, a[2] = 2, a[3] = 6, a[4] = 24, a[5] = 120, a[6] = 720, a[7] = 5040, a[8] = 40320, a[9] = 362880, a[10] = 3628800, a[11] = 39916800, a[12] = 479001600;
}
int main(void) {
// a[1] = 1;
// for (int i = 2; i <= 12; i += 1) {
// a[i] = a[i - 1] * i;
// }
//
// for (int i = 1; i <= 12; i += 1) {
// printf("a[%d]=%d,", i, a[i]);
// }
cin >> n;
init();
cout << a[n];
return 0;
}
T461素数检查
#include<bits/stdc++.h>
using namespace std;
int n = 0;
inline bool pri(void) {//感兴趣可以了解一下质数判断的常用算法
for (int i = 2; i * i <= n; i += 1) {
if (n % i == 0) return 0;
}
return 1;
}
int main(void) {
cin >> n;
if (pri()) {
cout << "Yes\n";
} else {
cout << "No\n";
}
return 0;
}
T526序列分段求和
#include<bits/stdc++.h>
using namespace std;
int a[1234] {0};
int ans = 0, n = 0, mid = 0;
int main(void) {
cin >> n >> a[1];
for (int i = 2; i <= n; i += 1) cin >> a[i];
ans = a[1], mid = a[1];
for (int i = 2; i <= n; i += 1) {
if (a[i] == a[i - 1]) {
mid += a[i];
ans = max(mid, ans);
} else {
mid = a[i];
ans = max(mid, ans); //针对段长为1的情况
}
}
cout << ans << "\n";
return 0;
}
T568锥体重量
#include<bits/stdc++.h>
using namespace std;
const double pi = 3.1415926;
const double ip = 7.86;
const double gp = 19.3;
double d = 0, h = 0;
inline int kil(double p) {
return int((p * ((pi * pow(d / 2, 2) * h) / 3)) / 1000);
}
int main(void) {
cin >> d >> h;
printf("%d %d\n", kil(ip), kil(gp));
return 0;
}
T569数位输出
#include<bits/stdc++.h>
using namespace std;
int a=0,b=0,c=0,mid=0;
int main(void){
cin>>a;
a=abs(a);
b=a%100;
a/=100;
c=b%10;
b/=10;
printf("%d %d %d\n%d %d %d\n",a,b,c,c,b,a);
return 0;
}
T570四则运算
#include<bits/stdc++.h>
using namespace std;
int a=0,b=0;
int main(void){
cin>>a>>b;
cout<<a+b<<" "<<a-b<<" "<<a*b<<" "<<a/b<<" "<<a%b<<"\n";
return 0;
}
T571几何体的计算
#include<bits/stdc++.h>
using namespace std;
const double pp = 0.785;
const double pi = 3.1415926;
double r1 = 0, r2 = 0;
double h1 = 0, h2 = 0;
double V = 0, M = 0;
int main(void) {
cin >> r1 >> h1 >> r2 >> h2;
V = pi * (h1 * pow(r1 / 2, 2) - (h2 * pow(r2 / 2, 2)) / 3);
M = V * pp;
printf("%d %d\n", int(V), int(M));
return 0;
}
T572模型参数计算
#include<bits/stdc++.h>
using namespace std;
double a = 0, b = 0;
int main(void) {
cin >> a >> b;
a = 1.0 * a, b = 1.0 * b;
double cl = a + sqrt(b * a + 1.0);
double td = a * pow(cl + b, 2);
double sp = td * cl + pow(b, 2);
printf("CL=%d tD=%d SP=%d\n", int(cl), int(td), int(sp));
return 0;
}
T573时间转换
#include<bits/stdc++.h>
using namespace std;
int M = 0, mid = 0;
int h = 0, m = 0;
inline int tige(int ti) {
mid = M / ti;
M = M % ti;
return mid;
}
int main(void) {
cin >> M;
h = tige(60 * 60);
m = tige(60);
//0:00到中午11:59为am
if (h < 12) {
printf("%02d:%02d:%02d am", h, m, M);
} else {
printf("%02d:%02d:%02d pm", h, m, M);
}
return 0;
}
题目没说清楚,应该是 0 < = T < 12 0 <= T< 12 0<=T<12时用am,
还有不要被题目误导,0补全应该是%02d,表示用前导0补全,总宽度为2
T583求存款利率
#include<bits/stdc++.h>
using namespace std;
int main(void) {
cout << "1127.96 1127.96 1089.60 1090.10";
return 0;
}
T601打印 Hello World
#include<bits/stdc++.h>
using namespace std;
string s = "Hello, World!";
int main(void) {
for (int i = 0; i < s.size(); i += 1) {
cout << s[i];
}
return 0;
}
T604求最大
#include<bits/stdc++.h>
using namespace std;
double a = 0, b = 0, c = 0;
inline double way1(void) {
return max(a, max(b, c));
}
inline double way2(void) {
if (a > b) {
if (a > c) return a;
return c;
}//a <= b
if (b > c) return b;
return c;
}
inline double way3(void) {
return (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
}
int main(void) {
cin >> a >> b >> c;
printf("%.f", way3());//三种都行
return 0;
}
T613求质量
#include<bits/stdc++.h>
using namespace std;
const double gp = 19.32;//金
const double sp = 10.53;//银
const double cp = 8.90;//铜
double l = 0;
inline double f(double p) {
return 1.0 * l * l * l * p;
}
int main(void) {
cin >> l;
l = abs(l);
printf("%.2f\n%.2f\n%.2f\n", f(gp), f(sp), f(cp));
return 0;
}
题目没有给密度,但你按照我的这个数据答案是对的
T615转换时间
/*
*/
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int N = 0, mid = 0;
int d = 0, h = 0, m = 0;
inline int tige(int t) { //time change
mid = N / t;
N %= t;
return mid;
}
int main(void) {
cin >> N;
d = tige(24 * 60 * 60);
h = tige(60 * 60);
m = tige(60);
printf("%d %d %d %d\n", d, h, m, N);
return 0;
}
2876

被折叠的 条评论
为什么被折叠?



