题目: 小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。 要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数) 例如,用户输入: 再例如,用户输入: 代码加注释如下所示: 当我们输入 10, 31时,效果如下: . 题目: 输入,一个正整数n(3<n<300),表示三角形的高度 为了便于测评,我们要求空格一律用”.”代替。 例如: 再例如: 再例如: 程序应该输出: 代码如下: 当我们输入 30 时,效果如下所示: .
打印大X
为了便于比对空格,所有的空白位置都以句点符来代替。
要求输出一个大X
3 9
程序应该输出:***.....*** .***...***. ..***.***.. ...*****... ....***.... ...*****... ..***.***.. .***...***. ***.....***
4 21
程序应该输出****................**** .****..............****. ..****............****.. ...****..........****... ....****........****.... .....****......****..... ......****....****...... .......****..****....... ........********........ .........******......... ..........****.......... .........******......... ........********........ .......****..****....... ......****....****...... .....****......****..... ....****........****.... ...****..........****... ..****............****.. .****..............****. ****................****
#include <stdio.h> #include <math.h> int main() { int m, n; // 笔的宽度,X的高度 scanf("%d%d", &m, &n); int index = n - 1; // 第一行后面图形的索引位置 int tmp = 0; int i, j, k, l; int flag = -1; int ff = 0; for (i = -(n / 2); i <= n / 2; ++i) // 21 行 { for (j = 0; j < n / 2 - abs(i); ++j) // 前一半的 . printf("."); for (k = 0; k < m; ++k) // . 后面的四个 * printf("*"); for (l = 0; l < index - (j + k); ++l) // * 后面的 . printf("."); if (l == 0) // 两个 "四个*" 开始接触产生的一个小算法 { k = tmp + ff; if (i < 0) tmp += 2; else tmp -= 2; if (ff == 0 && m % 2 == 1) { k += (m % 2 == 0) ? 2 : 1; ff = (m % 2 == 0) ? 2 : 1; } } else k = 0; for (; k < m; ++k) // 第二个 "四个*" 到底输出几个 ? printf("*"); for (j = 0; j < n / 2 - abs(i); ++j) printf("."); if (i >= 0) flag = 1; index += flag; printf("n"); } return 0; }
等腰三角形
本题目要求你在控制台输出一个由数字组成的等腰三角形。
具体的步骤是:
比如,当三角形高度是8时: 1 2 1 3 8 4 1 5 7 6 1 7 6 891011121314151
输出,用数字填充的等腰三角形。
输入:
5
程序应该输出:....1 ...2.1 ..3...2 .4.....1 567891011
输入:
10
程序应该输出:.........1 ........2.2 .......3...2 ......4.....2 .....5.......1 ....6.........2 ...7...........0 ..8.............2 .9...............9 1011121314151617181
输入:
15..............1 .............2.3 ............3...2 ...........4.....3 ..........5.......1 .........6.........3 ........7...........0 .......8.............3 ......9...............9 .....1.................2 ....0...................8 ...1.....................2 ..1.......................7 .1.........................2 21314151617181920212223242526
此题我们使用 C++11 标准写(蓝桥杯并不允许,并且使用数组的思想). . .
#include <iostream> #include <algorithm> #include <string> using namespace std; int main() { int num; cin >> num; // 输入三角形的高度 string str; for (int i = 1; i < num * num; i++) str += to_string(i); int arr[500][500] = { 0 }; // 存放三角形 int row = 0; // 第一个元素所在的位置 int col = num - 1; int tmpR = row, tmpC = col; int k = 0; while (tmpR != num - 1) // 没有到底 { arr[tmpR][tmpC] = str[k++]; ++tmpR; --tmpC; } while (tmpC != col * 2) { arr[tmpR][tmpC] = str[k++]; ++tmpC; } while (tmpR != 0) { arr[tmpR][tmpC] = str[k++]; --tmpR; --tmpC; } for (int i = 0; i < num; i++) { for (int j = num * 2 - 1; j >= 0; j--) { if (arr[i][j] != 0) { for (int k = 0; k < j; k++) { if (arr[i][k] == 0) arr[i][k] = '.'; } } } } for (int i = 0; i < num; i++) { for (int j = 0; j < num * 2; j++) cout << (char)arr[i][j]; cout << endl; } return 0; }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算