实现以键盘输入两个正数中的小数为下界,大数为上界,按由小到大的顺序输出该区间内除3余数为1的数
思路:
首先读取两个整数,然后使用min函数和max函数求其中的最小/最大值,进而使用for循环判断输出符合条件的数
参考代码:
#include <iostream>
using namespace std;
int main() {
// 读入两个正整数
int m, n;
cout << "请输入两个正整数:";
cin >> m >> n;
// 确定小数和大数
int small = min(m, n);
int big = max(m, n);
// 输出区间内除3余数为1的数
for (int i = small; i <= big; i++) {
if (i % 3 == 1) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
// Student的_num和People的_num构成隐藏关系,可以看出这样代码虽然能跑,但是非常容易混淆
class People
{
protected :
string _name = "小李子"; // 姓名
int _num = 111; // 身份证号
};
class Student : public People
{
public:
void Print()
{
cout<<" 姓名:"<<_name<< endl;
cout<<" 身份证号:"<<People::_num<< endl;
cout<<" 学号:"<<_num<<endl;
}
protected:
int _num = 999; // 学号
};
void Test()
{
Student s1;
s1.Print();
};
// B中的fun和A中的fun不是构成重载,因为不是在同一作用域
// B中的fun和A中的fun构成隐藏,成员函数满足函数名相同就构成隐藏。
class A
{
public:
void fun()
{
cout << "func()" << endl;
}
};
class B : public A
{
public:
void fun(int i)
{
A::fun();
cout << "func(int i)->" <<i<<endl;
}
};
void Test()
{
B b;
b.fun(10);
};
#include <iostream>
using namespace std;
void findNum(int a, int b){
if(a > b){
int temp = a;
a = b;
b = temp;
}
for(int i = a; i <= b; i++){
if(i % 3 == 1){
cout << i << " ";
}
}
}
int main(){
int a, b;
cin >> a >> b;
findNum(a, b);
return 0;
}
以上为C++代码实现,利用函数实现区间内遍历余数为1的数。首先输入两个整数a和b,并将这两个值做大小重排,以便于小值向大值遍历。其次,循环变量i从小值a开始,逐步加1遍历至大值b,若i对3求余结果为1,将该值输出至控制台。
以下是一个实现按要求输出区间内除3余数为1的数的C程序示例:
#include <stdio.h>
void printNumbers(int lower, int upper) {
int start = (lower + 2) / 3 * 3 + 1; // 计算符合条件的起始数
if (start < lower) {
start += 3; // 如果起始数小于下界,则增加3,保证起始数在区间内
}
for (int num = start; num <= upper; num += 3) {
printf("%d ", num);
}
printf("\n");
}
int main() {
int num1, num2;
printf("请输入两个正数:");
scanf("%d %d", &num1, &num2);
if (num1 <= num2) {
printNumbers(num1, num2);
} else {
printNumbers(num2, num1);
}
return 0;
}
该程序首先通过键盘输入获取两个正数,然后根据大小关系确定区间范围。接下来,根据除3余数为1的性质,计算符合条件的起始数。然后使用循环递增3,依次输出符合条件的数,直到达到或超过上界。输出结果按照从小到大的顺序排列。