c语言用1234组成数字不重复的三位数

这里if循环不知道有没有问题,输出的还是有重复数字,其他的地方应该没有写错,我觉得是if的位置错了

img

你可以用以下的C语言代码来实现这个任务。这个程序会生成所有由1,2,3,4组成的、没有重复数字的三位数。

#include <stdio.h>

void printTriplets(int n) {
    int i, j, k;
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= n; j++) {
            if (j == i) continue;
            for (k = 1; k <= n; k++) {
                if (k == i || k == j) continue;
                printf("%d%d%d\n", i, j, k);
            }
        }
    }
}

int main() {
    printTriplets(4);
    return 0;
}

在这个程序中,我们使用三个嵌套的循环来遍历所有可能的三位数。对于每个三位数,我们检查它的三个数字是否是相同的。如果它们都不同,我们就打印出这个数字。

参考下吧 下次能复制代码尽量复制代码 别拍图了

【以下回答由 GPT 生成】

问题在于if循环的位置,导致重复的数字没有被正确地排除掉。以下是修复代码的一个解决方案:

#include<stdio.h>

int main(){
    int g, s, b, a;

    for(g=1; g<5; g++){
        for(s=1; s<5; s++){
            for(b=1; b<5; b++){
                if(g!=s && s!=b && b!=g){

                    // 判断是否重复
                    int isRepeat = 0;
                    for(int i=1; i<5; i++){
                        if(i!=g && i!=s & i!=b){
                            if(a == i*100 + s*10 + g){
                                isRepeat = 1;
                                break;
                            }
                        }
                    }

                    if(!isRepeat){
                        a = b*100 + s*10 + g;
                        printf("%d\n", a);
                    }
                }
            }
        }
    }

    return 0;
}

在修复后的代码中,我们引入了一个额外的变量isRepeat来表示是否重复。在每次生成新的三位数时,我们使用一个嵌套的for循环来检查该数字是否与已生成的数字重复。如果存在重复,则将isRepeat设置为1,并跳过输出。否则,输出该数字。

注意:这只是一个解决方案之一,可能还有其他更优化的方法来解决这个问题。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^