在屏幕上输出以" * "构成的菱形

来源:互联网 发布:淘宝客服主要做什么 编辑:程序博客网 时间:2024/05/20 13:18

     

思考思路:

1:  图像里星星最多的一行有13个' * ',其他行的' * '都是与它有一定关系的锐减(相邻两行' * '相差2)

        那么我们是否可以创建一个13个元素的数组?每一行的最中间开始向两边输出' * '

2:按照这个思路,我们考虑怎么让每一行输出我们想要的' * '

     /*    考虑第一行     星星出现在第7个的位置  

    /*            第二行     星星出现在第6 7 8 三个位置

                   。。。。。。。。

     那么我们可以定义一个13个空格的数组,再设定字符 ' * '(后面统称星号) 

    /*    考虑第一行     把星号赋给第一行的第7个位置的地方  即数组的下标为6的元素

    /*            第二行     星星赋给第二行6 7 8 三个位置的地方  即数组的下标为5 6 7的元素

                                          。。。。。。。。。。

3:采用for循环,定义下标为i  j ,同时从中间位置向两边输出,每次 i++,j--

      那么for循环中的初始化部分该怎么写呢?

      每一行中心位置在数组中的下标为6,那么i = 6 ,j = 6 

      循环次数的控制怎么实现?

      当 i  j向两边移动到最左和最右时,i = 0 ,j = 12

      并且两者呈对称的!即当 i =0 时  j =12   所以只需要一个来控制就好 

4:重点问题(\0的使用):

           定义13个元素均为空格的数组

       很多人这样定义:   char arr1[13]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '} ; 

                        或者

                                        char arr1[13]="                       ";     //  含13个空格

      兄弟姐妹们,那你们就GG拉,眼见为实

                           

     输出的结果为:

                 

  这是为什么呢?

                  其实很简单,字符型数组呢,vS2008在输出的时候是呢 是从数组元素的第一个数组开始输出,并且还看下一个元素是否为' \0 ',如果为'\0'则停止输出,在我们的定义中13个元素均为空格,电脑一个个查,查到最后一个空格,它发现没有'\0',那就继续输出,但是已经超出数组大小,于是就出现了乱码!

VS2008对于'\0'的处理是这样的!

             当你定义一个数组  

                                          char arr[7]="abcd";  很显然只有四个元素,我们的编程系统会默认后面的元素为'\0'

               或者这样也可以定义一个四元素数组 

                                          chararr[5]={'a','b','c','d'}; 人为的在元素里面定义一个'\0'的元素,电脑查到'\0'就终止往下输出啦



代码实现:



#include<stdio.h>

int main()
{
        int i = 0 ,j = 0 ,a = 0 ;
        char arr1[14]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','\0'} ;  //  输入13个空格

       for(i=6,j=6;j>=0;i++,j--)
        {
              arr1[i]='*';
              arr1[j]='*';
             printf("%s\n",arr1);

        }
     for(i=0,j=12;i<=j;i++,j--)

       {   

            arr1[i]=' ';
            arr1[j]=' ';
            printf("%s\n",arr1);
      }
       system("pause");
       return 0;
}
0 0
原创粉丝点击