我怎么能做这个字符串操作?

时间:2014-01-28 03:14:34

标签: c

#include <stdio.h>
int factor_power(int n,int d);
int main()
{
    int input;
    do
    {
        printf("Enter an integer (> 1): ");
        scanf("%d",&input);
    }while(input<2);
        printf("%d = ", input);


        int current=input;
        int i;
        for(i=2; i<=current; i++)
        {
            int power=power_factor(current,i);
            if(power!=0)
            {
                current=(int) (current/pow(i, power));
                printf("%d^%d * ",i,power);
            }
        }

    return 0;
}
int power_factor(int n, int d)
    {
        int power=0;
        if(d<=n)
        {
            while(n%d==0)
            {
                power++;
                n=n/d;
            }
            return power;
        }
        return 0;

    }

您好,我是C的新手。我上面的代码输出有问题。如果运行代码,您将看到输出结尾有一个额外的*。由于C没有字符串类,我怎么能在最后摆脱*。我知道附加字符串是一个选项,但是有更快更有效的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

以其他方式打印*

    int current=input;
    int i;
    int first_term = 1;
    for(i=2; i<=current; i++)
    {
        int power=power_factor(current,i);
        if(power!=0)
        {
            current=(int) (current/pow(i, power));
            if (!first_term)
                printf(" * ");
            first_term = 0;
            printf("%d^%d",i,power);
        }
    }