在屏幕上输出以下图案: * *** ***** ******* ********* *********** ************* ********

来源:互联网 发布:led显示屏制作软件 编辑:程序博客网 时间:2024/04/30 13:02
1在屏幕上输出以下图案:
      *
     ***
    *****
   *******
  *********
 ***********
*************
 ***********
  *********
   *******
    *****
     ***

      *

#include<stdio.h>#include<stdlib.h>void print1(char arr1[], char arr2[], int sz)//输出菱形上半部分(包括中间最长的一行){int j = 0;int i = 0;int x = sz/2;//找到最中间的下标(x要向左移动)int y = sz/2;//找到最中间的下标(y要向右移动)for(i = 0; i<(sz/2)+1; i++){int tmp1=0;//第三变量int tmp2=0;tmp1    = arr2[x];arr2[x] = arr1[x];arr1[x] = tmp1;if(x == y)         /*因为第一遍循环的时候x与y的值相等,                为了避免 * 与空格再被换回来,使用goto语句跳过去*/{goto leap;}tmp2    = arr2[y];arr2[y] = arr1[y];arr1[y] = tmp2;leap:for(j = 0; j < sz; j++){printf("%c",arr2[j]);}printf("\n");x = x-1;y = y+1;}}void print2(char arr1[],char arr2[],int sz)//输出菱形下半部分(不包括中间最长的一行){   //注意:经过菱形上半部分的输出,已经将原来arr1[]与arr2[]数组的内容交换了int j = 0;int i = 0;int left = 0;int right = sz-1;for(i = 0; i<sz/2; i++){arr2[left] = arr1[left];arr2[right] = arr1[right];for(j = 0; j<sz-1; j++){printf("%c",arr2[j]);}printf("\n");left++;right--;}}int main(){char arr1[100] = {0};//这个数组保存 *char arr2[100] = {0};//这个数组保存空格int i = 0;int sz;//sz表示最长一行 * 的个数printf("请输入一个小于100的奇数:\n");scanf("%d",&sz);for(i = 0; i<sz; i++)//arr1[]="*************";arr2[]="               ";{arr1[i] = '*';arr2[i] = ' ';}print1(arr1,arr2,sz);//输出菱形上半部分(包括中间最长的一行)print2(arr1,arr2,sz);//输出菱形下半部分(不包括中间最长的一行)system("pause");return 0;}


2 0
原创粉丝点击