本文共 1293 字,大约阅读时间需要 4 分钟。
<1>第一种方法,利用字符数组定义一个空格数组和一个符号数组,
然后找到数组中间的元素,操作空格字符从中间开始向两边与符号数组的元素互换,
每互换一次进行一次输出,打印上半个菱形和下半个菱形需要两个for语句的支持。
源代码如下:
#include#include #include //为了使用延时语句Sleep而调用int main(){ char suu1[] = "*****************************************";//符号语句 char suu2[] = " ";//空格语句 int right, left=0, mid; right = strlen(suu2)-1; mid = left + (right - left) / 2; for (left = mid , right = mid ; left >= 0&&right<=strlen(suu2)-1 ; left--, right++)//上半部分打印 { suu2[left] = suu1[left]; suu2[right] = suu1[right]; printf("%s\n", suu2); Sleep(600);//延时操作 } for (left = 0, right = strlen(suu1)-1; left <=mid && right >=mid; left++, right--)//下半部分打印 { suu2[left] = ' '; suu2[right] = ' '; printf("%s\n", suu2); Sleep(600); } system("pause"); return 0;}
这种方法较为浅显易懂,但缺点是菱形的大小是通过所定义的字符数组的长度来定义的,不是特别灵活。
<2>
第二种方法算法上相比第一种较为复杂,但是可操控性比较高,主要是通关观察来得到所打印符号的行,列和符号个数之间的数学关系来打印。源代码如下:
#include#include int main(){ int line = 0,m,k; scanf("%d", &line);//通过输入来确定菱形的大小 int i = 0; for (i = 0; i < line; i++)//上半部分打印 { for (m = 0; m
运行结果实例:
转载于:https://blog.51cto.com/14232799/2368586