gpt4 book ai didi

c - 停止打印重复的算术表达式

转载 作者:行者123 更新时间:2023-11-30 21:05:46 24 4
gpt4 key购买 nike

我用 C 编写了这个程序来查找等于数字 n 的三个数字的总和:

#include<stdio.h>
int main ()
{
int n;
printf("n:");
scanf("%d", &n);
int a,b,c;
a=0;
while(a<n)
{
a++;
b = 0;
while (b < n)
{
b++;
c = 1;
while (c < n)
{
if(a + b + c == n){
printf("%d + %d + %d = %d\n", a , b ,c ,n);
c++;
}
if (a + b + c != n){
c++;
}

}
}
}
}

我该如何阻止它打印重复的算术表达式,例如 1 + 1 + 3 和 3 + 1 + 1。

最佳答案

我会推荐类似于 Ry-Check 在您的问题的评论中建议的内容。这是您的代码中的样子:

#include<stdio.h>
int main ()
{
int n;
printf("n:");
scanf("%d", &n);
int a,b,c;
a=0;
while(a<n)
{
a++;
b = a; /* start b at a to prevent duplicate sequences */
while (b < n)
{
b++;
c = b; /* start c at b to prevent duplicate sequences */
while (c < n)
{
if(a + b + c == n){
printf("%d + %d + %d = %d\n", a , b ,c ,n);
c++;
}
if (a + b + c != n){
c++;
}

}
}
}
}

在您的问题的评论中还建议使用 for 循环。这将使您的代码更加紧凑且更易于阅读:

#include<stdio.h>
int main ()
{
int n;
printf("n:");
scanf("%d", &n);
int a,b,c;
for(a=0;a<n;a++)
for(b=a;b<n;b++)
for(c=b;c<n;c++)
if(a + b + c == n)
printf("%d + %d + %d = %d\n", a , b ,c ,n);
}

关于c - 停止打印重复的算术表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52770433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com