控制台文字矩阵、菱形排列(充分展示用逻辑替代内循环的处理技巧)

来源:互联网 发布:王者荣耀优化安卓7.0 编辑:程序博客网 时间:2024/06/04 19:08

那个矩阵排列确费不少脑力哦,菱形用数组倒序填,这些例子都是给初学参考。

            var 数组 = Enumerable.Repeat(0, 7).ToArray();            string[] 字符组 = new string[7];            int 数 = 7, 序 = 0, 填 = 0;            foreach (var 矩 in Enumerable.Range(1, 7))            {                if (矩 <= 4) 填++; else 填--;                foreach (var 阵 in Enumerable.Range(序, 数)) { 数组[阵] = 填; 字符组[阵] = " 阿弥陀佛"[填].ToString(); }                if (矩 < 4) { 数 -= 2; 序++; } else { 数 += 2; 序--; }                //Console.WriteLine(string.Join(" ", 数组));                Console.WriteLine(string.Concat(字符组));            }

菱形

            string 啊啊啊 = ""; string[] 啊啊 = new string[15];            foreach (var 啊 in Enumerable.Range(1, 8))            {                啊啊[啊 - 1] = "        ".Remove(8 - 啊) + 啊啊啊 + "☆\r";                啊啊[15 - 啊] = "        ".Remove(8 - 啊) + 啊啊啊 + "☆\r";                啊啊啊 += "☆";            }            foreach (var 啊啊啊啊 in 啊啊) Console.WriteLine(啊啊啊啊);

c++

int 层(8), 数(1), 计(8);do{if (计 > 数) cout << " ";elsecout << " " << 数;if (!--计){cout << endl;计 = 8;数++;层--;}} while (层);层 = 计 = 7; 数 -= 2;do{if (计 == 7)cout << " ";if (计 > 数)cout << " ";elsecout << " " << 数;if (!--计){cout << endl;计 = 7;数--;层--;}} while (层);


优化代码:

int 层(8), 数(1), 计 = 层; bool 控制(false);do/*数字菱形*/{if (控制)if (计 == 7)cout << " ";if (计 > 数) cout << " ";elsecout << " " << 数;if (!--计){cout << endl;计 = 控制 ? 7 : 8;控制 ? 数-- : 数++;层--;}if (!控制)if (!层){控制 = true;层 = 计 = 7;数 -= 2;}} while (层);


点击打开链接

/*C语言基础:for循环嵌套,这段代码该怎样写更简练*/int i, j, k, z;for (i = 0, z = -4; ; ++i, z++){if (z > 0) i -= 2;for (k = 0; k <= 3 - i; ++k)printf_s(" ");for (j = 0; j <= 2 * i; ++j)printf_s("*");printf_s("\n");if (i == 0 && z > 0)break;}


VB:

        '2-9范围内自动生成菱形        Dim 数 = 9, 个 = 0, 空格 = String.Join(" ", New String(数) {})        For 序 As Integer = 1 To 数 Step 1            空格 = 空格.Remove(空格.Length - 1)            Console.WriteLine(空格 + String.Join("", Enumerable.Repeat(序, 序 + 个)))            个 += 1        Next        个 -= 1        For 序 As Integer = 数 - 1 To 1 Step -1            空格 += " "            个 -= 1            Console.WriteLine(空格 + String.Join("", Enumerable.Repeat(序, 序 + 个)))        Next


c++字符数组形式:

/*用C++编写程序,用数组char a[][]显示宽瘦菱形,设置维度公式第一项值,如果显示数字则在2-9单字范围,如果显示单字符则任意长度范围内自动生成*/const int 维(9 * 2 - 1);int 数(0), 计(0), 反(维 - 1), 层((维 + 1) / 2);char 菱形[维][维] = { {} };do{菱形[计][数] = (数 + 计 < 层 - 1 || 数 + 计 >= 层 + 计 + 计) ? ' ' : '*';if (计 <= !(层 % 2) ? 层 / 2 : 层 / 2 + 1)菱形[反 - 计][数] = 菱形[计][数];/*生成反向*/if (++数 >= 维){数 = 0;计++;}} while (计 < 层);数 = 计 = 0;do{std::cout << 菱形[计][数];if (++数 >= 维){std::cout << std::endl;数 = 0;计++;}} while (计 < 维);数 = 计= 0;do{std::cout << 菱形[计][数] << " ";/*拉宽*/if (++数 >= 维){std::cout << std::endl;数 = 0;计++;}} while (计 < 维);



输出倒梯形

cout << endl;int 层(7), 计(7), 数(7);do{if (计 == 7)cout << " ";if (计 > 数)cout << " ";elsecout << "**";if (!--计){cout << endl;计 = 7;数--;层--;}} while (层 > 1);cout << endl;

按输入的整数输出图形的2种写法

int 输入整数(0), 层(8), 数(1), 计(8);std::cin >> 输入整数;层 = 计 = 输入整数;do{cout << (计 > 数 ? " " : "* ");//cout << (计 > 数 ? " " : "*") << (计 > 数 - 1 ? "" : "*");if (!--计){cout << endl;计 = 输入整数;数++;层--;}} while (层);

int 位(5), 个(1), 数(0), 量(18), 起(0), 转(1);cout << "http://ask.csdn.net/questions/338810 java只用两个for循环输出N个菱形。请输入层数:" << endl;cin >> 量;//do//{//cout << ((数 < 位 || 数 >= 位 + 个) ? " " : "*");//if (++数 > 10)//{//cout << endl;//数 = 0;//++起;//位 += 转 ? -1 : 1;//个 += 转 ? 2 : -2;//}//if (位 <= 0 && 转) 转 = 0;//if (位 >= 5 && !转) 转 = 1;//} while (起 < 量);for (起 = 0; 起 < 量; 起++){for (数 = 0; 数 <= 10; 数++)cout << ((数 < 位 || 数 >= 位 + 个) ? " " : "*");cout << endl;位 += 转 ? -1 : 1;个 += 转 ? 2 : -2;if (位 <= 0 && 转) 转 = 0;if (位 >= 5 && !转) 转 = 1;}




1 0
原创粉丝点击