c++编写程序,统计1到N之间所有正整数中个位数为零的有几个。 例如:N=21,1到21之间所有正整数中个位数为零的数有2个,分别为:1 0,2 0
时间: 2024-10-29 11:18:53 浏览: 31
在C++中,你可以通过循环结构和条件判断来实现这个功能。这里提供一种简单的方法:
```cpp
#include <iostream>
int countZeroDigitNumbers(int N) {
int count = 0; // 初始化计数器
for (int i = 1; i <= N; ++i) {
// 检查当前数字的个位是否为0
if (i % 10 == 0) {
count++; // 如果是0,则计数加一
}
}
return count;
}
int main() {
int N = 21;
int result = countZeroDigitNumbers(N);
std::cout << "从1到" << N << "之间,个位数为零的正整数有:" << result << "个。" << std::endl;
return 0;
}
```
在这个程序里,`countZeroDigitNumbers`函数接受一个整数N作为输入,然后遍历1到N的所有整数,如果当前数字除以10的余数为0,说明它的个位是0,就增加计数器。最后返回计数结果。
如果你想让用户输入N的值,可以替换main函数中N的硬编码值,并添加用户输入部分。
相关问题
编写一个函数求某个正整数n是几位数,其中n从键盘输入。要求分别用递归函数与非递归函数实现。用c++
在C++中,你可以使用递归和非递归的方式编写一个函数来计算给定正整数n的位数。下面是两个版本的示例:
**递归函数实现:**
```cpp
#include <iostream>
using namespace std;
int digitCountRecursion(int n) {
if (n == 0) // 当n为0时,返回1(因为0本身占一位)
return 1;
else
return 1 + digitCountRecursion(n / 10); // 如果n大于0,加1并递归处理除10后的数字
}
int main() {
int num;
cout << "请输入一个正整数: ";
cin >> num;
int digits = digitCountRecursion(num);
cout << "该数有 " << digits << " 位.\n";
return 0;
}
```
**非递归函数实现:**
```cpp
#include <iostream>
using namespace std;
int digitCountIterative(int n) {
int count = 0;
while (n > 0) {
count++;
n /= 10; // 每次循环将n除以10,直到变成0
}
return count;
}
int main() {
int num;
cout << "请输入一个正整数: ";
cin >> num;
int digits = digitCountIterative(num);
cout << "该数有 " << digits << " 位.\n";
return 0;
}
```
这两个函数都能计算出用户输入正整数的位数,递归版本通过不断拆分直到零来计数,而非递归版本则是通过迭代实现。
用C++编写程序:给一个不多于5位的正整数,要求:(1)求它是几位数;(2)逆序打印出各位数字
在C++中,你可以使用内置的数据类型和控制结构来实现这个功能。这里有一个简单的示例程序:
```cpp
#include <iostream>
using namespace std;
int main() {
int num;
cout << "请输入一个不超过5位的正整数: ";
cin >> num;
// 检查输入是否超过5位
if (num <= 0 || num >= pow(10, 5)) {
cout << "错误:输入的数字超过了5位!" << endl;
return 0;
}
// 计算并输出位数
int digit_count = 0;
while (num > 0) {
digit_count++;
num /= 10;
}
cout << "该数字有 " << digit_count << " 位。\n";
// 逆序打印每位数字
for (int i = digit_count - 1; i >= 0; i--) {
cout << num % 10;
num /= 10;
}
return 0;
}
```
在这个程序中,我们首先读取用户输入的整数,然后检查它是否在允许范围内。接着,通过循环除以10并获取余数的方式计算位数。最后,再次使用循环逆序打印每一位数字。
阅读全文