输入n,求n以内(包括n)个位数为6且能被3整除的所有数,各个数之间用空格隔开

输入n,求n以内(包括n)个位数为6且能被3整除的所有数,各个数之间用空格隔开

#include <stdio.h>

int main() {
    int n;
    printf("请输入一个正整数 n:");
    scanf("%d", &n);

    printf("%d  ", 6);  // 6 是个位数为 6 且能被 3 整除的第一个数

    // 遍历 1 到 n 的所有数,检查个位数是否为 6 且能被 3 整除
    for (int i = 9; i <= n; i += 10) {  // 只遍历个位数为 6 的数字
        if (i % 3 == 0) {  // 检查能否被 3 整除
            printf("%d  ", i);
        }
    }

    return 0;
}

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7601742
  • 这篇博客你也可以参考下:输入n个数,再输入n个整数,并且由大到小排列
  • 除此之外, 这篇博客: C语言 编写程序,完成:从键盘上输入一个n*n数组各元素,把每行元素循环左移1位输出。中的 代码: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include<stdio.h>
    #include <string.h>
    void main(){
    int i,j;
    int a[3][3];
    for(i=0;i<3;i++)//输入数组
    for(j=0;j<3;j++)
    scanf("%d",&a[i][j]);

    for(i=0;i<3;i++){
    for(j=0;j<3;j++){
    printf("%3d",a[i][(j+1)%3]);//右移一位输出
    }
    printf("\n");
    }
    }

  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用循环从1到n遍历所有数字,判断是否能被3整除且个位数为6,如果是则将其加入结果的数组中。最后遍历完所有数字后,将结果数组转化为字符串返回即可。

    具体代码实现如下:

    #include <iostream>
    #include <vector>
    #include <string>
    
    using namespace std;
    
    vector<int> findNums(int n) {
        vector<int> res;
        for(int i=1; i<=n; i++) {
            if(i % 3 == 0 && i % 10 == 6) {
                res.push_back(i);
            }
        }
        return res;
    }
    
    string printNums(vector<int> nums) {
        string res = "";
        for(int i=0; i<nums.size(); i++) {
            res += to_string(nums[i]) + " ";
        }
        return res;
    }
    
    int main() {
        int n;
        cin >> n;
        vector<int> nums = findNums(n);
        string res = printNums(nums);
        cout << res << endl;
        return 0;
    }