C14-5.18一维数组的应用
原题链接:38471.note12025-05-18 18:52:12
发布于:江苏
一、作业回顾
日行千里
循环模拟, 找到周六周日的规律即可。
#include<iostream>
using namespace std;
int main(){
int d, k, ans = 0;
cin >> d >> k;
for(int i=d; i<d+k; i++){
if (i%7==6 || i%7 == 0) ans += 800;
else ans += 1000;
}
cout << ans;
return 0;
}
//3 6
//3 4 5 6 7 8 9 10 11 12 13 14 15 15 17
时光穿梭
换算成总的秒数, 注意格式即可
#include<iostream>
using namespace std;
int main()
{
int h, m, s, k;
cin >> h >> m >> s >> k;
int sum = h*3600 + m*60 + s; //总秒数
sum -= k;
int a = sum/3600; //小时
int b = sum%3600/60; //分钟
int c = sum%60; //秒数
printf("%02d:%02d:%02d", a, b, c);
return 0;
}
二、课堂练习
1. 质数判断(试除优化)
循环枚举2 ~ sqrt(n)进行寻找因子,找到一个那么就一定不是, 循环结束都没有找到第3个因子则是质数。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i=2; i<=sqrt(n); i++) {
if(n%i == 0) {
cout << "no";
return 0;
}
}
cout << "yes"; //只有循环正常结束才会输出
return 0;
}
2. 拓展练习 输入n找到比n小的最大质数
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
//比 n小的最大质数
int n;
cin >> n;
while (n--) { //从大往小枚举
bool flag = 1; //假设是质数
for (int i=2; i<=sqrt(n); i++) {
if(n%i == 0) {
flag = 0;
break;
}
}
if (flag == 1) {
cout<<n;
return 0;
}
}
return 0;
}
3. 清空
#include<iostream>
using namespace std;
int main(){
int n, a[1005] = {}, x, y;
cin >>n;
for (int i=1; i<=n; i++){
cin >> a[i];
}
cin >> x >> y;
cout <<a[x] + a[y] << endl;
a[x] = 0;
a[y] = 0;
for (int i=n; i>=1; i--) cout <<a[i] << ' ';
return 0;
}
/*
样例组
输入#1
5
99 220 15 205 198
2 3
输出#1
235
198 205 0 0 99
*/
4. 数据处理
#include<iostream>
using namespace std;
int main()
{
int n, a[1005], m, x, y;
cin >> n >> m;
for (int i=1; i<=n; i++) cin>>a[i];
while (m--){
cin >> i >> y;
a[y] = a[x] + a[y];
}
coput;
return 0;
}
/*
4 2
10 11 12 13
2 3
3 4
//10 11 23 13
10 11 23 36
*/
三、作业提示
九章算术
int n, a[1005], m, x, y;
cin >> n >> m;
for (int i=1; i<=n; i++) cin>>a[i];
while (m--){
int i, j, k;
cin >> i >> j >> k;
if (k == 1){
ans += a[i] + a[j]
} else if (k == 2){
} else if (k == 3){
}
}
cout << ans;
这里空空如也
有帮助,赞一个