黑马程序员——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语言的学习还存在很多的疑惑,本文如有错误和需要改进的地方望大家指出!)感谢您的阅读!
- 黑马程序员——C语言基础——用printf函数、数组和循环结构输出特殊图形
- ——黑马程序员——C语言基础--printf函数和scanf函数
- 黑马程序员——c语言基础:循环结构练习
- 黑马程序员——C语言基础---循环结构
- 黑马程序员——C语言基础学习(二)---分支结构和循环结构
- 黑马程序员——ios基础---C语言:循环结构、函数
- 黑马程序员—C语言结构控制和循环
- 黑马程序员—输出函数printf和出入函数scanf
- 黑马程序员——C语言中的printf函数
- 黑马程序员——C语言基础---流程控制(选择结构,循环结构)
- 黑马程序员—IOS之C语言基础—循环结构与分支结构
- 黑马程序员—c语言基础—Printf函数的介绍以及注意事项
- 黑马程序员——C语言基础--数组和字符串
- 黑马程序员——c语言基础:数组和字符串
- 黑马程序员———C语言 printf函数和scanf函数
- 黑马程序员——C语言基础篇---宏定义、数组、字符串和函数
- 黑马程序员——C语言之循环结构
- 黑马程序员——C语言的循环结构总结
- [Egret学习笔记 三]Bitmap Font(位图文字)的使用
- go 速学 - 11 - 结构
- zoj 3031 / cdoj 430 - Robotruck - Southwestern Europe 2007
- uva 10651 状态压缩DP
- TCP/IP详解笔记(9)
- 黑马程序员——C语言基础——用printf函数、数组和循环结构输出特殊图形
- 杭电 HDU ACM 1562 Guess the number
- 第二章第二十题
- 5.9.2 初始化块和构造器
- 写得很好
- 机器导论
- ZOJ 1002 Fire Net(基础dfs)
- ArrayList & LinkedList & Vector比较
- 经典回溯算法(八皇后问题)详解