Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用最小循环优化c中的空心菱形图案打印_C_Performance_Loops_Design Patterns - Fatal编程技术网

用最小循环优化c中的空心菱形图案打印

用最小循环优化c中的空心菱形图案打印,c,performance,loops,design-patterns,C,Performance,Loops,Design Patterns,我正在尝试打印带有*轮廓的空心菱形图案,最小循环。我优化了2个循环 我的输出使用2个循环 Enter no of rows: 5 *********** ***** ***** **** **** *** *** ** ** * * ** ** *** *** **** **** ***** ***** *********** 还有其他方法可以优化这段代码吗 void main() { int row,col,n,

我正在尝试打印带有*轮廓的空心菱形图案,最小循环。我优化了2个循环

我的输出使用2个循环

Enter no of rows: 5
***********
***** *****
****   ****
***     ***
**       **
*         *
**       **
***     ***
****   ****
***** *****
***********
还有其他方法可以优化这段代码吗

void main()
{
        int row,col,n,k;

        printf("Enter no of rows: ");
        scanf("%d",&n);

        for(row=0, k=1; row<=2*n; row>n?k++:k, printf("\n"), row++)
                for(col=-n; col<=n; col++)
                        (col>0?col:-col) < (row<=n?row:(row-2*k)) ? printf(" ") : printf("*");
}
void main()
{
int行,列,n,k;
printf(“输入行数:”);
scanf(“%d”和“&n”);
对于(行=0,k=1;行?k++:k,printf(“\n”),行++)

对于(col=-n;col0?col:-col)<(row您可以通过计算
(row)“最小循环”是指“最小循环数”还是其他什么?通过“优化”,这个问题可能更适合“编程难题和代码高尔夫”网站你的意思是花更少的时间吗?如果不是,请忽略此注释。如果是,你是否理解
printf
比这里的任何东西花费的时间都多几个数量级?你是否理解循环本身并不慢,只是因为它们在概念上可能很复杂?
int row,col,n,k;

printf("Enter no of rows: ");
scanf("%d",&n);

for(row=0, k=1; row<=2*n; row>n?k++:k, putchar('\n'), row++)
{
    int z=(row<=n?row:(row-2*k));
    for(col=-n; col<=n; col++)
        putchar((col>0?col:-col) < z ? ' ' : '*');
}