解题思路:具体看注释;
将图形分为三部分,开头,中间,还有主体,主体分为单双处理;
分别进行打印,
#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 人评分
C语言程序设计教程(第三版)课后习题7.3 (C++代码)浏览:669 |
拆分位数 (C++代码)用char简单粗暴,嗯浏览:1087 |
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:475 |
简单的a+b (C语言代码)浏览:723 |
C语言训练-求素数问题 (C语言代码)浏览:728 |
简单的a+b (C语言代码)浏览:694 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:510 |
printf基础练习2 (C语言代码)浏览:646 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:543 |
【金明的预算方案】 (C++代码)浏览:940 |