C++代码逐行解释:打印包含数字3或能被3整除的数
C++代码逐行解释:打印包含数字3或能被3整除的数
这篇文章将逐行解释以下C++代码片段的功能,该代码片段用于查找并打印从1到给定整数范围内所有包含数字3或能被3整除的数:
#include <iostream>
using namespace std;
void call(int n){
int i = 1;
CHECK_NUM:
int x = i;
if ( x % 3 == 0 ){
cout << ' ' << i;
goto END_CHECK_NUM;
}
INCLUDE3:
if ( x % 10 == 3 ){
cout << ' ' << i;
goto END_CHECK_NUM;
}
x /= 10;
if ( x ) goto INCLUDE3;
END_CHECK_NUM:
if ( ++i <= n ) goto CHECK_NUM;
cout << endl;
}
int main(){
int n;
cin >> n;
call(n);
return 0;
}
代码解释:
#include <iostream>: 包含输入输出流库,以便使用cin和cout进行输入输出操作。using namespace std;: 使用标准命名空间,避免重复写std::。void call(int n): 定义一个名为call的函数,接受一个整数n作为参数。int i = 1;: 初始化一个计数器i,从1开始。CHECK_NUM:: 定义一个标签,用于goto语句跳转。int x = i;: 将当前计数器值i赋给变量x,用于后续判断。if ( x % 3 == 0 ): 判断x是否能被3整除。cout << ' ' << i;: 如果能被3整除,打印i的值,并在前面加一个空格。goto END_CHECK_NUM;: 跳转到END_CHECK_NUM标签,跳过后续判断。INCLUDE3:: 定义另一个标签,用于goto语句跳转。if ( x % 10 == 3 ): 判断x的个位数是否为3。cout << ' ' << i;: 如果个位数为3,打印i的值,并在前面加一个空格。goto END_CHECK_NUM;: 跳转到END_CHECK_NUM标签。x /= 10;: 将x的值除以10,去除个位数。if ( x ) goto INCLUDE3;: 如果x不为0,说明还有其他位数需要判断,跳转回INCLUDE3标签。END_CHECK_NUM:: 定义一个标签,用于goto语句跳转到这里。if ( ++i <= n ) goto CHECK_NUM;: 将计数器i加1,如果i小于等于n,跳转回CHECK_NUM标签继续判断下一个数。cout << endl;: 打印一个换行符。int main(){...}: 定义main函数,程序的入口点。int n;: 定义一个整数变量n。cin >> n;: 从控制台读取一个整数输入,赋值给n。call(n);: 调用call函数,并将n作为参数传递。return 0;: 程序正常结束,返回0。
总结:
这段代码使用循环和条件语句查找并打印从1到给定整数范围内所有包含数字3或能被3整除的数。虽然代码使用了goto语句,但它可以被更清晰、更易读的循环结构替代。
希望这篇文章能够帮助你理解这段C++代码的功能和逻辑
原文地址: https://www.cveoy.top/t/topic/kgG 著作权归作者所有。请勿转载和采集!