解题思路:具体看注释;
将图形分为三部分,开头,中间,还有主体,主体分为单双处理;
分别进行打印,
#include<stdio.h> int n,len,a=1; void title()//开头的两行,结尾的两行 { for (int i = 0; i < 2; i++) { for (int q = 1; q <= len; q++) { if (a % 2 == 0) (q == 3 || q == len - 2) ? printf("$") : printf("."); else (q == 1 || q == 2 || q == len || q == len - 1) ? printf(".") : printf("$"); } a++; printf("\n"); } a = 2;//当第一次运行结束时,对title进行调换; } void center(int q) { int y = (q == 0 ? n : -1);//用于判断输出顺序,当q==0.顺序输出,反之~~~ int a = (q == 0 ? 1 : 2);//用于判断单双,当q从0开始时,先输出单再双,反之~~~ do { for (int i = 0; i < 2; i++) { for (int j = 0; j < len - 2 * (q + 1); j++) { if (a % 2 != 0)//单 { if (j < q) printf("$."); if (j == q||j== len - 3 * (q + 1)) printf("$$"); if (j > q && j < len - 2 * (q + 1) - q - 1) (j == q + 2 ||j== len - 3 * (q + 1)-2) ? printf(".") : printf("$"); if (j > len - 3 * (q + 1)) printf(".$"); } else { if (j <= q ) printf("$."); if (j > q && j < len - 2 * (q + 1) - q - 1) (j == q + 3 || j == len - 3 * (q + 1) - 3)? printf("$") : printf("."); if (j>=len - 3 * (q + 1)) printf(".$"); } } printf("\n"); a++; } y == n ? q++ : q--; } while (q != y); } void main() { scanf("%d", &n); len = 5 + 4 * n; title(); center(0); for (int q = 0; q < 2 * n + 1; q++) if (q < n) printf("$."); else if(q==n) printf("$$$$$"); else printf(".$"); printf("\n"); center(n-1); title(); }
打印主体部分有些难理解,要下点功夫!
0.0分
0 人评分
点我有惊喜!你懂得!浏览:2707 |
【回文数(二)】 (C语言代码)浏览:851 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:735 |
哥德巴赫曾猜测 (C语言代码)浏览:995 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:1078 |
printf基础练习2 (有点不明白)浏览:837 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1297 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:581 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:780 |
1128题解(返回值为数组的情况)浏览:457 |