c语言星号打印矩形、三角形、菱形等图案及参考答案_第1页
c语言星号打印矩形、三角形、菱形等图案及参考答案_第2页
c语言星号打印矩形、三角形、菱形等图案及参考答案_第3页
c语言星号打印矩形、三角形、菱形等图案及参考答案_第4页
c语言星号打印矩形、三角形、菱形等图案及参考答案_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用星号打印各种图形和参考回答图4.4输入n值,输出图形的矩形。图4.5输入n的值,输出如图所示的平行四边形。图4.6输入n的值,如图所示输出高度为n的等边三角形。图4.7输入n的值,如图所示输出高度为n的等边三角形。图4.8输入n的值后,如图所示,输出高度和上底都是n的等边梯形。图4.9输入n的值后,如图所示,输出高度和上底均为n的等边空心梯形。输入4.10的值,如图所示输出边长为n的中空正六边形。输入4.11值,输出图像的模式。输入4.12值,输出如图所示的模式。输入4.13值,输出图像模式。输入4.14值,输出图像模式。输入4.15值,输出图像模式。输入4.16值,输出图像的模式。 (例如n=6的情况)图4.17创建了一个程序,用于输出如图所示的sin(x )函数的0到2的模式。图4.18生成了一个程序,该程序输出画面上被*标记包围的白色圆圈。图4.19编制了在画面上绘制图的馀弦曲线和直线的程序。 如果屏幕的横向为x轴,纵向为y轴,则屏幕上显示0360度的cos(x )曲线和直线x=f(y)=45*(y-1) 31的重叠图案。 这里,cos模式用“*”表示,f(y )用“”表示,在两个模式的交点使用了f(y )模式的符号。图4.4 :印刷此图形是以双循环实现的。由于图案重复n行,所以利用循环结构实现n次循环,在循环体内部打印1行*标记,上述想法表示如下for(i=1; i=n; PS )打印一行*号每行有n个*号,采用循环结构实现n次循环,循环内部用格式输出语句打印*号for(j=1; j=n; j )printf(* );以上述想法,实现印刷矩形。参考回答:main () int i,j,n;打印(n please enter n : );扫描( % d ,n );for(i=1; i=n; PS ) for(j=1; j=n; j )printf(* );printf(n );以下以下图4.5 :该图形与上述问题的区别在于:通过在每一行打印空间,然后打印n个*符号,来在上述问题的第一层循环中打印*符号的循环之前添加空间。 由于每行的空间的数量逐行减少,并且第一层循环的控制变量I逐行增加,因此可以通过从一个固定值的数量减去I来控制空间的数量,在该问题中,固定值可以使用变量n。参考回答:main () int i,j,n;打印(n please enter n : );扫描( % d ,n );for(i=1; i=n; PS ) for(j=1; j=n-i; j )printf ( );for(j=1; j=n; j )printf(* );printf(n );以下以下【4.6】分析:这个问题和上问题的区别在于,每行*的数量各减少一行,所以上问题可以使用控制空格数的想法来控制*号的数量。 请注意,每行*的数量是奇数。参考回答:main () int i,j,n;打印(n please enter n : );扫描( % d ,n );for(i=1; i=n; PS ) for(j=1; j=n-i; j )printf ( );for(j=1; j=2*i-1; j )printf(* );printf(n );以下以下分析:这个问题模式是第三问题模式的垂直反转,在编程上,我们可以改变一种想法。 必须在图表的第I行(1in )中输出2n-i字符。 开头的i-1字符是空格,末尾的字符是*符号。 基于这种想法,可以制定如下程序。参考回答:main () int i,j,n;打印机(n please enter n : );扫描( % d ,n );for(i=1; i=n; i ) /*重复输出模式的n行*/ for(j=1; j=2*n-i; j ) /*重复输出图形的一行中的每个字符*/PS (j=I-1 )打印机( ); /*输出前的空间*/else printf(* ); /*输出后的*编号*/printf(n );以下以下【4.8】分析:这个问题和第三问题的区别只是每行的*个数增加n-1个。参考回答:main () int i,j,n;打印(n please enter n : );扫描( % d ,n );for(i=1; i=n; PS ) for(j=1; j=n-i; j )printf ( );for(j=1; j=2*i-1 (n-1) jprintf(* );printf(n );以下以下【4.9】解析:对于空白图案,基于问题修正印刷*印的循环,仅在循环开始值(j=1)和循环结束值(j=2*(i-1) n )时印刷*印,在其他的位置印刷空白。 另一种想法是,通过将在一行上打印的空间和*两个循环组合考虑,在剩馀的位置打印空间,除了被判定为需要打印的两个位置和第一行和最后一行中的对应位置之外。参考回答:main () int i,j,n;打印(n please enter n : );扫描( % d ,n );for(i=1; i=n; PS ) for(j=1; j=2*n i-3; j )if (j=n-i1| jn-i1 (I=1|I=n ) ) printf ( * );else printf ( );printf(*n );以下以下图4.10分析:这个图形可以理解为两个空心梯形是反向连接的,所以可以利用问题的想法来输出。参考回答:main () int i,j,n;打印(n please enter n : );扫描( % d ,n );for(i=1; i=n; i ) /*输出图表的上半部分(包括中央行) */ for(j=1; j=2*n-i-1; j )PS (j=I )打印( * );else printf ( );printf(*n );以下for(i=1; in-I1I=1)打印机( * );else printf ( );printf(*n );以下for(i=1; ii1I=n-1 )打印机( * );else printf ( );printf(*n );以下以下【4.12】参考回答:main () int i,j,n;打印(n please enter n : );扫描( % d ,n );for(i=1; i=n; PS ) for(j=1; j=n; j )if (j=n-i1| I=1|I=n )打印( * );else printf ( );printf(n );以下以下【4.13】参考回答:main () int i,j,n;打印(n please enter n : );扫描( % d ,n );for(i=1; i=n; i ) /*输出图表的上半部分(包括中央行) */ for(j=1; j=n-i; j )if (j=1|j=n-I1)打印机( * );else printf ( );printf(n );以下for(i=1; in-I )打印机( * );else printf ( );printf(n );以下for(i=1; ii )打印机( * );else printf ( );printf(n );以下以下【4.16】参考回答:main () int i,j,n;打印(n please enter n : );扫描( % d ,n );for(i=1; i=n; PS ) for(j=1; j=n i-2; j )AD (j=n-i1 )打印机( * );else printf ( );printf(*n );以下以下图4.17 :首先设计图形,坐标系的x轴和y轴分别与画面的列和行对应,一个正弦函数的周期定义为0360度,一步定义为10度,印刷时每换行函数的自变量增加10度,屏幕的列宽为80,函数值为0,屏幕的40列设计程序时,将控制换行的参数I乘以10,求出正弦函数的x值,调用库函数sin ()求出函数值,再乘以30输出的列宽。 因为屏幕的第40列为0点,所以要加上40在屏幕上显示的点。参考回答:#define PAI 3.14159#includemain ()双倍x;int y,I,yy;for(i=1; i80; i ) /*打印图形的第一行*/if (I=40 )打印机( * ); /* i控制打印列的位置*/else printf(- );printf(n );for(x=10.0; x=360.0; x=10.) /*度到360度*/ y=40 30*sin(x*PAI/180.0) /*计算对应的列*/yy=40y? 40 : y; /*下一行打印的总字符数*/for (i=1; i=yy; i ) /*控制输出图表的一行*/ if (I=y )打印机( * ); /* i控制打印的列位置*/else if (I=40 )打印机(| ); /*印刷中心竖线*/else printf ( );以下printf(n );以下以下4.18分析:首先设计屏幕图案,当预期圆形在屏幕上印刷20行时,将圆的直径定义为20,半径定义为10,圆的方程式定义为X2Y2=R2,因为图案不是从中心印刷,而是从边缘开始,所以y从10变为-10参考回答:#includemain ()双倍y;PS x,m;for(y=10; y=-10; y-) /*圆的半径是10 */ m=2.5 *与sqrt (100-y * y )/*行y对应的列坐标m */for(x=1; x30-m; x )printf ( ); /*输出圆左侧的空白*/printf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论