解题思路:具体看注释;
将图形分为三部分,开头,中间,还有主体,主体分为单双处理;
分别进行打印,
#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 人评分
不知道哪里错了浏览:1226 |
C语言训练-计算1~N之间所有奇数之和 (C语言代码)浏览:689 |
A+B for Input-Output Practice (C++代码)浏览:632 |
WU-蓝桥杯算法提高VIP-企业奖金发放 (C++代码)浏览:1268 |
WU-复数求和 (C++代码)浏览:2120 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)from DQM浏览:773 |
1118(求助_已解决)浏览:351 |
罗列完美数 (C语言代码)浏览:519 |
1035 题解浏览:875 |
程序员的表白 (C语言代码)浏览:678 |