黑马程序员——C语言基础——用printf函数、数组和循环结构输出特殊图形

来源:互联网 发布:2303am网络打印 编辑:程序博客网 时间:2024/06/05 06:37

   -----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

用printf函数、数组和循环结构输出特殊图形

     printf函数是C语言中最常用到的函数之一。下面通过三个例子总结如何使用printf函数和其它函数输出一些图形,例子出现的顺序是由简单到复杂。


示例1:输出一个如下的菱形  

               *   
     ***    
    *****   
  *******  
*********
  ******* 
   *****   
     ***   
       *     

程序如下:

#include<stdio.h>
#include<stdlib.h>
void main()
{
printf("        *      \n");
printf("      ***    \n");
printf("    *****   \n");
printf(" *******  \n");
printf("*********\n");
printf("  ******* \n");
printf("   *****   \n");
printf("     ***    \n");
printf("       *     \n");
system("pause");
}


示例2:输入正整数n<=20,输出一个n层的倒三角形。

#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;
scanf_s("%d", &n);


char a[200][200] = {"\0"};
for (int i = 0; i < n;i++)
for (int j = i; j < 2 * n - i - 1; j++)
{
a[i][j] = '#';
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 2 * n - 1; j++)
{
printf("%c", a[i][j]);
}
printf("\n");
}
system("pause");
return 0;

}

示例3:给定正整数n和m,输出n*m的矩形图案,要求图形最外层由‘#’构成,里层由‘*’构成。

输入格式:第一行为行为测试数据T(T<=20),表示一共要输入多少组数据进行测试;

                    第二行为n m,表示长方形的长和宽。

输入样例:

3

1 1

2 2 

3 3

输出样例:

#


##

##


###

#*#

###

程序如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{
int T, M[20], N[20];
scanf_s("%d", &T);
for (int i = 0; i < T; i++)
{
scanf_s("%d", &M[i]);
scanf_s("%d", &N[i]);
}
for (int i = 0; i < T; i++)
{
for (int j = 0; j < M[i]; j++)
{
for (int k = 0; k < N[i]; k++)
{
if (j == 0 || j == M[i] - 1 || k == 0 || k == N[i] - 1)
printf("#");
else
        printf("*");
}
printf("\n");
}
}
system("pause");
return 0;
}


    综上三个例子,我们可以看出,当要求输出一个小范围特定的图形是,我们可以直接把图像原样写入到printf函数中即可,但当要求输入一个任意行的图形是,我们只能通过寻找规律,利用循环来写相应的程序。以上两种都属于比较简单的情形,当要求输入T个图形,每个图形有n行m列时,无疑增加了我们的难度,这时我们就不得不用数组了,如示例三,我们能想到用数组,但是用二维数组呢?还是用三维数组呢?或者一维数组就可以完成输出?我们最简单的做法是先假设它只有一个图形(即循环的内层是只有一个图形的情形),那么我们再对这个图形的每一行每一列进行for循环,看它是否满足条件,满足则执行循环,不满足则不执行。这三个例子主要是为了探讨和说明到底怎样用数组使程序更简洁易懂。

(本人初学者,C语言的学习还存在很多的疑惑,本文如有错误和需要改进的地方望大家指出!)感谢您的阅读!





0 0