常见循环逻辑
分类: 选择与循环
· 更新时间 2026-5-27 21:42:20
最值、求和、计数
max(a, b):返回 中的较大值。min(a, b):返回 中的较小值。
下面对于 个 范围内的数,执行几个经典操作。
求最大值
int n, x, ans;
cin >> n;
ans = 0;
for (int i = 0; i < n; i++)
{
cin >> x;
if (x > ans)
ans = x;
}
cout << ans << "";
求最小值
int n, x, ans;
cin >> n;
ans = 1001;
for (int i = 1; i <= n; i++)
{
cin >> x;
ans = min(ans, x);
}
cout << ans << "";
求和
int n, x, ans;
cin >> n;
ans = 0;
for (int i = 1; i <= n; i++)
{
cin >> x;
ans += x;
}
cout << ans << "";
统计奇数个数
int n, x, cnt;
cin >> n;
cnt = 0;
for (int i = 1; i <= n; i++)
{
cin >> x;
if (x % 2 == 1)
cnt++;
}
cout << cnt << "";
判断质数
int n;
cin >> n;
bool flag = true; // 一开始认为是质数
if (n <= 1) // 大于 1 的自然数
flag = false;
for (int i = 2; i <= n - 1; i++) // 除了 1 和它本身以外(2 ~ 本身-1)
if (n % i == 0) // 不再有其他因数的自然数
flag = false;
优化版——只需判断到 :
bool flag = true;
if (n <= 1)
flag = false;
for (int i = 2; i * i <= n; i++)
if (n % i == 0)
flag = false;
数位分解
% 10:得到个位的数值/ 10:得到去掉个位后的数值- 个位:
a % 10 - 十位:
a / 10 % 10 - 百位:
a / 100 % 10 - 千位:
a / 1000 % 10
while (x > 0)
{
cout << x % 10 << ",";
x /= 10;
}
for (int i = x; i > 0; i /= 10)
{
cout << i % 10 << ",";
}
统计数字出现次数
int cnt[10] = {0}; // 下标 0~9 分别对应数字 0~9
while (x > 0)
{
cnt[x % 10]++;
x /= 10;
}