用C语言计算输出
我的程序输入是6,输出是用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!=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()
返回显示的字符数,因此您可以简单地跟踪这些返回值的总和是否可以在此代码中不打印printfint 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倍
这是您真正想要输出的吗?