c语言c语言for循环输出图形形

用C语言输出菱形图形的分析_中华文本库
第1页/共2页
科技信息○IT技术论坛○SCIENCE&TECHNOLOGYINFORMATION2008年第17期
用C语言输出菱形图形的分析
马丽娟1王义卿2
(1.河南科技学院信息工程学院河南新乡453003;2.无锡南洋职业技术学院
江苏无锡214028)
【摘要】本文介绍了C语言中输出菱形图形的五种方法,主要从基本思想、输出过程、代码实现等方面对这几种方法进行分析。
【关键词】C语言;菱形;输出
AnalysisOfUsingCLanguageToPrintTheRhombus
MaLi-juan
HenanInstituteofScienceandTechnology,HenanXinxiang453003
【Abstract】ThistextintroducedfivekindsofmethodsofprintingtherhombuswighClanguage,andAnalyzedthebasicthought,theprocessofprinting,realizationwithcode,etc.
【Keywords】CLanguage;therhombus;printing很多人在初学C语言的时候都会遇到下面类似的题目:在屏幕上
*”构成的菱形。输出如下“*************************
如果要求该题目不能直接调用printf函数来输出,初学者往往对
对于该类题目只给出代码,这种题目感到头疼,而大多数C语言教材,
并没有过多的解释。使得初学者即使能看懂程序,也不会自己编程。下面,我给出该题目的五种解法。
printf("");
for(j=1;j<=-2*i+7;j++)/*每行需要输出的*号数为-2*i+7
printf("*");
printf("\n");/*输完空格和*号后要换行*/}/*第二个循环嵌套输出后3行的倒三角形*/
第一种方法很简单,最主要的是它给出了公式模型,以后遇到类似题目,都可以套用公式来做。
2.忽略菱形中的空格,只控制输出图形中的*号
这种方法同样把图形分成上下两部分,但是没有把空格当作要输
出的符号。该种方法用到了gotoxy函数。该函数的功能是在在文本窗口中设置光标,即把光标移动到X列Y行。用法是voidgotoxy(intx,inty);下面给出程序:
#include<stdio.h>#include<conio.h>voidmain(){inti,j;
4行共循环4次*/for(i=1;i<=4;i++)/*变量i表示行数,
{gotoxy((10-i),i);/*光标移到10-i列,i行*/
for(j=1;j<=2*i-1;j++)/*每行需要输出的*号数为2*i-1个
printf("*");
printf("\n");/*输完*号后要换行*/
}/*第一个循环嵌套输出前4行的三角形*/for(i=3;i>=0;i--)
{gotoxy((10-i),8-i);/*光标移到10-i列,8-i行*/
for(j=1;j<=2*i-1;j++)/*每行需要输出的*号数为2*i-1
printf("*");
printf("\n");/*输完*号后要换行*/
}/*第二个循环嵌套输出后3行的倒三角形*/}
这种方法和第一种方法类似。
1.根据图形中要输出符号的递增递减情况,把图形分成上下两个三角形
对于上述图形,我们可以把它分成前4行的正三角形和后3行的
在此,选倒三角形,或者分成前3行的正三角形和后4行的倒三角形。
我们可以发现,每一行所做的事情是类似择前者分法。先输出前4行,
最后重复性的工作,对于每一行来说,都是先输出空格,再输出*号,
输出换行,所以我们用循环结构来实现,4行一共循环4次。对于某一行来说,输出多个空格和*号也都是重复性的工作,也可以用循环输出,这样,输出整个三角形就需要用循环的嵌套。
但是令人头疼的问题是,每行输出的空格数和*的数目并不相同,所以内层循环中空格和*号的数目是与行数有关的。而且细心的
而随着行数的增人不难发现随着行数的增加,空格数依次递减1个,
加,*号数依次递增2个。也就是说每行所要输出的符号数和行数之间是线性关系。在此,假设行数用变量i表示,所要输出的符号数用变
则i和j之间存在线性关系:j=a*i+b。那么系数a和b怎么量j表示,
确定呢?方法很简单,如果随着行数的增加,符号数依次递增,则a是个正数。如果随着行数的增加,符号数依次递减,则a是个负数。如果一次递增或递减1个,则a的绝对值就是1,如果一次递增或递减2个,则a的绝对值就是2,依此类推。这样系数a就确定了。对于b,我们可以观察图形,看第一行输出的符号数目是几个,以此来计算出b的值。例如上题中,第一行需要输出空格数3个,我们把i=1,j=3和a-
可以分析出1代入线性关系表达式j=a*i+b,就可以计算出b=4。同理,
每行输出的*号数。下面给出程序:
#include<stdio.h>voidmain(){inti,j;
4行共循环4次*/for(i=1;i<=4;i++)/*变量i表示行数,
{for(j=1;j<=-i+4;j++)/*每行需要输出的空格数为-i+4个*/
printf("");
for(j=1;j<=2*i-1;j++)/*每行需要输出的*号数为2*i-1个*/
printf("*");printf("\n");/*输完空格和*号后要换行*/}/*第一个循环嵌套输出前4行的三角形*/for(i=1;i<=3;i++)/*变量i表示行数,3行共循环3次*/{for(j=1;j<=i;j++)/*每行需要输出的空格数为i个*/
3.利用图形的上下对称性输出[4]
这种方法是根据图形的上下对称性来输出,图形一共7行,此时
我们往往把最中间的那行设为0行。因为图形一共7行,所以行数为-
更容易找到每行输出的符号数与行数的关3到3行。这样表示行数,
系。我们把行数和每行输出的符号数用表1列出:
表1行数和每行输出的符号数
行数-3-2-101
输出的空格数
32101
输出的*号数
13575
第1页/共2页
寻找更多 ""文档分类:
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,
下载前请先预览,预览内容跟原文是一样的,在线预览图片经过高度压缩,下载原文更清晰。
您的浏览器不支持进度条
下载文档到电脑,查找使用更方便
还剩?页未读,继续阅读
播放器加载中,请稍候...
该用户其他文档
下载所得到的文件列表C语言图形输出习题.doc
文档介绍:
DJKHFKJSHJKHG JSHGLS HGLSHL GHLSH GLSGHLSH GLSHLKSHGKHSL GHSKLHGLKSHGL SHGL HSLGHLSJHGSKLJHG JKLSHLK JHSLK J【4.4】输入 n 值,输出如图所示矩形。【4.5】输入 n 值,输出如图所示平行四边形。【4.6】输入 n 值,输出如图所示高为 n 的等腰三角形。【4.7】输入 n 值,输出如图所示高为 n 的等腰三角形。【4.8】输入 n 值,输出如图所示高和上底均为 n 的等腰梯形。DJKHFKJSHJKHG JSHGLS HGLSHL GHLSH GLSGHLSH GLSHLKSHGKHSL GHSKLHGLKSHGL SHGL HSLGHLSJHGSKLJHG JKLSHLK JHSLK J【4.9】输入 n 值,输出如图所示高和上底均为 n 的等腰空心梯形。【4.10】输入 n 值,输出如图所示边长为 n 的空心正六边型。【4.11】输入 n 值,输出如图所示图形。【4.12】输入 n 值,输出如图所示图形。【4.13】输入 n 值,输出如图所示图形。DJKHFKJSHJKHG JSHGLS HGLSHL GHLSH GLSGHLSH GLSHLKSHGKHSL GHSKLHGLKSHGL SHGL HSLGHLSJHGSKLJHG JKLSHLK JHSLK J【4.14】输入 n 值,输出如图所示图形。【4.15】输入 n 值,输出如图所示图形。【4.16】输入 n 值,输出如图所示图形。(例为 n=6 时)【4.17】编写程序,输出如图所示 sin(x) 函数 0 到 2π的图形。DJKHFKJSHJKHG JSHGLS HGLSHL GHLSH GLSGHLSH GLSHLKSHGKHSL GHSKLHGLKSHGL SHGL HSLGHLSJHGSKLJHG JKLSHLK JHSLK J【4.18】编写程序,在屏幕上输出一个由*号围成的空心圆。【4.19】编写程序,在屏幕上绘制如图余弦曲线和直线。若屏幕的横向为 x 轴,纵向为 y 轴, 在屏幕上显示 0~360 度的 cos(x)曲线与直线 x=f(y)=45*(y-1)+31 的迭加图形。其中 cos 图形用&*&表示,f(y)用&+&表示,在两个图形的交点处则用 f(y)图形的符号。DJKHFKJSHJKHG JSHGLS HGLSHL GHLSH GLSGHLSH GLSHLKSHGKHSL GHSKLHGLKSHGL SHGL HSLGHLSJHGSKLJHG JKLSHLK JHSLK J【4.20】编写程序,输出如图所示高度为 n 的图形。【4.21】编写程序,输出如图所示高度为 n 的图形。【4.22】输入 n 值,输出如图所示图形。【4.23】输入 n 值,输出如图所示的 n×n(n&10)阶螺旋方阵。1 2 3 4 516 17 18 19 6DJKHFKJSHJKHG JSHGLS HGLSHL GHLSH GLSGHLSH GLSHLKSHGKHSL GHSKLHGLKSHGL SHGL HSLGHLSJHGSKLJHG JKLSHLK JHSLK J15 24 25 20 714 23 22 21 813 12 11 10 9图 4.19 n=5 时的螺旋方阵【4.24】输入 n 值,输出如图所示回型方阵。【4.25】输出如图所示的数字金字塔【4.26】输入 n 值,输出如图所示图形。DJKHFKJSHJKHG JSHGLS HGLSHL GHLSH GLSGHLSH GLSHLKSHGKHSL GHSKLHGLKSHGL SHGL HSLGHLSJHGSKLJHG JKLSHLK JHSLK J【4.27】输入顶行字符和图形的高,输出如图所示图形。【4.28】输入首字符和高后,输出如图所示回型方阵。A A A A AA B B B AA B C B AA B B B AA A A A A图 4.24 首字符为'A'、高为 5 的方阵【4.29】输入中心字符和高后,输出如图所示回型方阵。X X X X XDJKHFKJSHJKHG JSHGLS HGLSHL GHLSH GLSGHLSH GLSHLKSHGKHSL GHSKLHGLKSHGL SHGL HSLGHLSJHGSKLJHG JKLSHLK JHSLK JX Y Y Y XX Y Z Y XX Y Y Y YX X X X X图 4.25 中心字符为'Z'、高为 5 的方阵【4.30】编写程序,输出如图所示上三角形式的乘法九九表。【4.31】编写程序,输出如图所示下三角乘法九九表。【4.4】分析:打印此图形用两重循环实现。图形要重复 n 行,故采用循环结构实现循环 n 次,循环体内部打印一行'*'号,把上述思路表示为:for(i=1;i&=n;i++)打印一行'*'号;每行有 n 个'*'号,再采用循环结构实现 n 次循环,循环内部用格式输出语句打印一个'*'号,DJKHFKJSHJKHG JSHGLS HGLSHL GHLSH GLSGHLSH GLSHLKSHGKHSL GHSKLHGLKSHGL SHGL HSLGHLSJHGSKLJHG JKLSHLK JHSLK J即:for(j=1;j&=n;j++)printf(&*&);按照上述思路,实现打印矩形。参考答案:main(){ int i,j,n;printf(&\nPlease Enter n:&);scanf(&%d&,&n);for(i=1;i&=n;i++){ for(j=1;j&=n;j++)printf(&*&);printf(&\n&);}}【4.5】分析:此图形和上题的区别在于在每一行先要打印空格,然后再打印 n 个'*'号,在上题第一层循环体内打印'*'号的循环前面增加一个循环打印空格。每行空格的个数是逐行减少的,由于第一层循环的控制变量 i 是逐行增 1,所以用一个固定值的数减去 i 就可实现对空格个数的控制,在此题中固定值可使用变量 n。参考答案:main( ){ int i,j,n;printf(&\nPlease Enter n:&);scanf(&%d&,&n);for(i=1;i&=n;i++){ for(j=1;j&=n-i;j++)printf(& &);for(j=1;j&=n;j++)printf(&*&);printf(&\n&);}}【4.6】分析:此题和上题的区别在于每行'*'的数量逐行减少,可以使用上题控制空格个数的思路来控制'*'号的个数,请注意每行'*'的个数都是奇数。参考答案:main( ){ int i,j,n;printf(&\nPlease Enter n:&);scanf(&%d&,&n);for(i=1;i&=n;i++){ for(j=1;j&=n-i;j++)printf(& &);for(j=1;j&=2*i-1;j++)printf(&*&);DJKHFKJSHJKHG1
内容来自淘豆网转载请标明出处.
浏览:18次

我要回帖

更多关于 c语言for循环打印图形 的文章

 

随机推荐