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;
}

代码解释:

  1. #include <iostream>: 包含输入输出流库,以便使用cincout进行输入输出操作。
  2. using namespace std;: 使用标准命名空间,避免重复写std::
  3. void call(int n): 定义一个名为call的函数,接受一个整数n作为参数。
  4. int i = 1;: 初始化一个计数器i,从1开始。
  5. CHECK_NUM:: 定义一个标签,用于goto语句跳转。
  6. int x = i;: 将当前计数器值i赋给变量x,用于后续判断。
  7. if ( x % 3 == 0 ): 判断x是否能被3整除。
  8. cout << ' ' << i;: 如果能被3整除,打印i的值,并在前面加一个空格。
  9. goto END_CHECK_NUM;: 跳转到END_CHECK_NUM标签,跳过后续判断。
  10. INCLUDE3:: 定义另一个标签,用于goto语句跳转。
  11. if ( x % 10 == 3 ): 判断x的个位数是否为3。
  12. cout << ' ' << i;: 如果个位数为3,打印i的值,并在前面加一个空格。
  13. goto END_CHECK_NUM;: 跳转到END_CHECK_NUM标签。
  14. x /= 10;: 将x的值除以10,去除个位数。
  15. if ( x ) goto INCLUDE3;: 如果x不为0,说明还有其他位数需要判断,跳转回INCLUDE3标签。
  16. END_CHECK_NUM:: 定义一个标签,用于goto语句跳转到这里。
  17. if ( ++i <= n ) goto CHECK_NUM;: 将计数器i加1,如果i小于等于n,跳转回CHECK_NUM标签继续判断下一个数。
  18. cout << endl;: 打印一个换行符。
  19. int main(){...}: 定义main函数,程序的入口点。
  20. int n;: 定义一个整数变量n
  21. cin >> n;: 从控制台读取一个整数输入,赋值给n
  22. call(n);: 调用call函数,并将n作为参数传递。
  23. return 0;: 程序正常结束,返回0。

总结:

这段代码使用循环和条件语句查找并打印从1到给定整数范围内所有包含数字3或能被3整除的数。虽然代码使用了goto语句,但它可以被更清晰、更易读的循环结构替代。

希望这篇文章能够帮助你理解这段C++代码的功能和逻辑

C++代码逐行解释:打印包含数字3或能被3整除的数

原文地址: https://www.cveoy.top/t/topic/kgG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录