gpt4 book ai didi

c - 根据用户输入打印星形

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

在一次采访中,我被要求编写一个函数代码,该函数接受用户的数字并打印星号形状,如下所示......

mraouf@mraouf-Inspiron-1525:~$ ./printStars 
Enter: 1
*
mraouf@mraouf-Inspiron-1525:~$ ./printStars
Enter: 3
*
*
*
mraouf@mraouf-Inspiron-1525:~$ ./printStars
Enter: 5
*
*
* *
*
*
mraouf@mraouf-Inspiron-1525:~$ ./printStars
Enter: 7
*
*
* *
* *
* *
*
*
mraouf@mraouf-Inspiron-1525:~$ ./printStars
Enter: 9
*
*
* *
* *
* * *
* *
* *
*
*

我尽了最大努力,但未能达到所需的结果..这是我编写的代码:

#include<stdio.h>

void printStars(int lines)
{
int i,x;
int half = (lines/2)+1;
system("clear");
for(i=1; i<half ; i++)
{
if ( i%2 == 0)
{
printf(" ");
}
else
{
printf("* ");
}
for(x=0; x<i-1; x++)
{
printf("* ");
}
printf("\n");
}
for(i=half; i>0; i--)
{
if( i%2 == 0 )
{
printf(" ");
}
for(x=i; x>0; x--)
{
printf("* ");
}
printf("\n");
}
}
int main (void)
{
int num;
printf("Enter:\n");
scanf("%d", &num);
printStars(num);
return 0;
}

知道我错过了什么吗?

最佳答案

实际上这是一个binomial distribution垂直轴上的星星。如果您注意到这一点,您可以以优雅的方式解决这个问题。

分配系数定义为n!/k! (n-k)! 其中 k 次成功可能发生在 n 次试验中的任何位置。如果您在代码中定义递归阶乘函数并实现简单的二项式分布公式(重构您的代码,因为k指的是星号字符,而n指的是用户定义的数字),你可以轻松解决这个问题。尝试一下,玩得开心:)

编辑: 伪代码示例可以类似于以下内容:

int function getnumber();
int function factorial(n);

void function putstar(k)
{
counter = factorial(n) / (factorial(k) * factorial(n - k));
For(i=0; i < counter; ++i)
print("*");
print(new_line);
}

int function Main()
{
n = getnumber();
For(i=0; i <= n; ++i)
putstar(i);
print(new_line);
exit();
}

关于c - 根据用户输入打印星形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29663873/

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