gpt4 book ai didi

c - 如何删除 C 程序中输出的第一个 *?

转载 作者:行者123 更新时间:2023-11-30 18:44:28 24 4
gpt4 key购买 nike

我正在尝试编写一个程序来打印给定数字的质因数,但我需要打印它们并用*分隔,例如:对于输入100,输出将是: 2*2*5*5,有什么建议吗?到目前为止我已经做到了:

# include <stdio.h> 
# include <math.h>

void decomposicao(int n)
{
printf("%d = ", n);

while (n%2 == 0)
{
n = n/2;
printf("* %d ", 2);
}

for (int i = 3; i <= sqrt(n); i = i+2)
{
while (n%i == 0)
{
n = n/i;
printf("* %d ", i);
}
}

if (n > 2)
printf ("* %d ", n);

}
int main()
{
int n;

scanf("%d", &n);

if (n<=0||n==1)
{
printf("Error", n);
}
else
{
decomposicao(n);
}

return 0;
}

对于此代码,输出为:

100 = *2*2*5*5

最佳答案

添加一个 bool 变量,告诉您是否正在打印第一个因子。

#include <stdbool.h>

void decomposicao(int n)
{
bool first = true;
printf("%d = ", n);

while (n%2 == 0)
{
n = n/2;
if (!first)
printf("* ");

printf("%d ", 2);
first = false;
}

for (int i = 3; i <= sqrt(n); i = i+2)
{
while (n%i == 0)
{
n = n/i;
if (!first)
printf("* ");

printf("%d ", i);
first = false;
}
}

if (n > 2) {
if (!first)
printf("* ");

printf ("%d ", n);
}
}

关于c - 如何删除 C 程序中输出的第一个 *?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58018449/

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