C语言的课程题,求大神解答,谢谢

C语言的课程题,求大神解答,谢谢for(i=1;i<=n;i++){for(j=3*n-2;j>=i;j--){if(i==1||i==n&&j<=2*n-1+(n-i)||j==i||j==3*n-i-1) printf("*");Else printf(" "); }printf("\n"); } } for(j=1;j<=n;j++){for(i=n-j-1;i<=n;i++)printf(" ");if(j==1){for(i=1;i<=n+2*(n-1);i++)printf("*");printf("\n");}else if(j==n){for(i=1;i<=n;i++)printf("*");printf("\n");}else{for(printf("*"),i=2;i<=n+2*(n-j)-1;i++)printf(" ");printf("*\n"); } }以上两个程序片段均可绘出相同的图形,但是代码量和效率大不相同,请根据给定n=4画出对应图形并分析第一种的思路。

两个代码绘出的图形是相同的:

就是打印一个等腰梯形。

第一种代码明显简洁而且效率更高。

就是将这个等腰梯形的4条边分解成4条线段,分别根据各线段满足的关于n、i、j的关系式:

i=1

i=n且j≤3n-i-1

j=i

j=3n-i-1

满足上述关系式,打印*,不满足关系式,打印空格。

这种思路最直接,也最简便。

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-01-16
把代码整理一下再发吧。。。
相似回答