用C语言计算输出

用C语言计算输出,c,count,character,C,Count,Character,我的程序输入是6,输出是6!=6x5x4x3x2x1=720。所以我想计算输出中的所有字符,包括“x”和空格字符。然后我想在输出上面打印*作为输出字符号。这是我用于阶乘的代码,但我找不到如何计数字符 #include <stdio.h> void fact_calc ( int n ); int main (void) { int number; scanf ("%d", &number); printf ("%d! = %d x", numbe

我的程序输入是6,输出是
6!=6x5x4x3x2x1=720
。所以我想计算输出中的所有字符,包括“x”和空格字符。然后我想在输出上面打印*作为输出字符号。这是我用于阶乘的代码,但我找不到如何计数字符

#include <stdio.h>

void fact_calc ( int n );

int main (void)
{
    int number;

    scanf ("%d", &number);
    printf ("%d! = %d x", number, number);
    fact_calc ( number );
}

void fact_calc ( int n )
{
    static long long int total = 1;

    if ( n != 2 && n >= 2 )
    {
        printf (" %d x", n - 1);
        total *= n;
        fact_calc ( n - 1 );
    }
    else
    {
        total *= 2;
        printf (" %d = %lld", n - 1, total);
    }
}
#包括
无效事实计算(整数n);
内部主(空)
{
整数;
scanf(“%d”和编号);
printf(“%d!=%dx”,数字,数字);
事实计算(数字);
}
无效事实计算(整数n)
{
静态长整型总计=1;
如果(n!=2&&n>=2)
{
printf(“%dx”,n-1);
总数*=n;
事实计算(n-1);
}
其他的
{
总数*=2;
printf(“%d=%lld”,n-1,总计);
}
}

您可以添加一个整数计数,该计数随着添加到输出中的每个字符而增加,也可以将其输出到文件中,并使用
getline()
printf
返回打印的字符数来计算文件大小。因此,您可以对
printf
调用的所有返回值求和,得到总数

下面是您修改的代码:

#include <stdio.h>

void fact_calc ( int n, int *count );

int main (void)
{
    int number;
    int count = 0;

    scanf ("%d", &number);
    int t = printf ("%d! = %d x", number, number);
    if (t > 0) count += t;
    fact_calc ( number, &count );
    printf("\nTotal chars printed: %d\n", count);
}

void fact_calc ( int n, int *count )
{
    static long long int total = 1;

    if ( n != 2 && n >= 2 )
    {
        int t = printf (" %d x", n - 1);
        if (t > 0) *count += t;
        total *= n;
        fact_calc ( n - 1, count );
    }
    else
    {
        total *= 2;
        int t = printf (" %d = %lld", n - 1, total);
        if (t > 0) *count += t;
    }
}
#包括
无效事实计算(整数n,整数*计数);
内部主(空)
{
整数;
整数计数=0;
scanf(“%d”和编号);
int t=printf(“%d!=%d x”,数字,数字);
如果(t>0)计数+=t;
事实计算(数字和计数);
printf(“\n打印的总字符数:%d\n”,计数);
}
无效事实计算(整数n,整数*计数)
{
静态长整型总计=1;
如果(n!=2&&n>=2)
{
int t=printf(“%dx”,n-1);
如果(t>0)*计数+=t;
总数*=n;
事实计算(n-1,计数);
}
其他的
{
总数*=2;
int t=printf(“%d=%lld”,n-1,总计);
如果(t>0)*计数+=t;
}
}

函数:
printf()
返回显示的字符数,因此您可以简单地跟踪这些返回值的总和

是否可以在此代码中不打印printf
int t=printf(“%d!=%d x”,number,number)
我只想数数characters@semicolon你的意思是你根本不想打印任何东西,只想数一数吗?我的目的是在打印前打印星号作为输出字符的数量。因此,我首先要进行计数输出,打印星号,然后打印factorial您可以使用
snprintf
打印到缓冲区(使用snprintf的返回值以相同的方式对字符进行计数)。然后打印星号,最后打印缓冲区。例如,
charbuf[25];int count=snprintf(buf,sizeof buf,“%d\n”,5);/*在此处打印“计数”星号*/;printf(“%s”,buf)。当用户输入的值大于(大约)14时,发布的代码将失败。即使没有溢出,递归也会导致堆栈(很快)溢出并导致崩溃
如果(例如)用户输入了
10
,则将输出:
10!=10倍
这是您真正想要输出的吗?