想得有点久,后来自己画图了才会头绪
先画一个模型图:
源代码:
其实也不知道怎么讲,自己摸索一下就能搞出来的。
// tcs2.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include <windows.h> #include<stdio.h> #include<conio.h> void gotoxy(int x, int y) { COORD pos = { x, y }; HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标准输出设备句柄 SetConsoleCursorPosition(hOut, pos);//两个参数分别是指定哪个窗体,具体位置 } int main() { int i = 0; int a, b,t, n, d; char c[20]; char e[20]; char f[20]; char h[20]; scanf("%d", &n); for (i = 0; i < n; i++) { *(c + i) = i; a = *(c + i); if (i == (n - 1)) { for (t = 1; t < (n + 1); t++) { d = n - t; //d=2,1,0 *(e + t - 1) = *(c + d); b = *(e + t - 1); } } } for (i = (n - 1); i < (2 * n - 1); i++) *(f + i - (n - 1)) = i;//3,4,5,6... for (i = (n - 1); i < (2 * n - 1); i++) { *(f + i - (n - 1)) = i;//3,4,5,6... //printf("%d\n", *(f + i - (n - 1))); d = i - n + 1;//0,1,2,3... if (i == (2 * n - 2)) { for (t = 0; t < n; t++) { *(h + t) = *(f + n - t - 1); //printf("t = %d\n", t); //printf("*(h + t)=%d\n", *(h + t)); } } } for (i = 0; i < n; i++) { a = *(c + i); b = *(e + i); gotoxy(a, b); printf("*"); } for (i = 0; i < n; i++) { a = *(c + i); b = *(f + i); gotoxy(a, b); printf("*"); } for (i = 0; i < n; i++) { a = *(f + i); b = *(c + i); gotoxy(a, b); printf("*"); } for (i = 0; i < n; i++) { a = *(h + i); b = *(f + i); gotoxy(a, b); printf("*"); } getch(); return 0; }
输入18: