C语言图形输出习题解析

温柔似野鬼°
591次浏览
2021年02月12日 21:48
最佳经验
本文由作者推荐

-

2021年2月12日发(作者:关云长)



4.4


】输入


n


值,输出如图所示矩形。





4.5


】输入


n


值,输出如图所示平行四边形。



< p>


4.6


】输入


n


值,输出如图所示高为


n


的等腰三角形。





4.7


】输入


n


值,输出如图所示高为

< p>
n


的等腰三角形。



< /p>



4.8


】输入


n


值,输出如图所示高和上底均为


n


的 等腰梯形。




4.9


】输入


n


值,输出如图所示 高和上底均为


n


的等腰空心梯形。





4.10


】输入


n


值,输出如图所示边长为


n< /p>


的空心正六边型。



< br>【


4.11


】输入


n

< p>
值,输出如图所示图形。




4.12


】输入


n


值,输出如图所示图形。





4.13


】输入


n


值,输出如图所示图形。





4.14


】输入


n

< br>值,输出如图所示图形。





4.15


】输入


n

值,输出如图所示图形。




< /p>



4.16


】输入


n


值,输出如图所示图形。


(例为


n =6


时)






4.17


】编写程序,输出如图所示


sin(x)


函数


0



2


π


的图形。





< br>4.18


】编写程序,在屏幕上输出一个由


*

< p>
号围成的空心圆。





4.19


】编写程序,在屏幕上绘制如图余弦曲线和直线。若屏 幕的横向为


x


轴,纵向为


y

< p>
轴,



在屏幕上显



0



360


度的< /p>


cos(x)


曲线与直线


x=f(y)= 45*(y-1)+31


的迭加图形。


其中

cos


图形用



表示,


f(y)




表示,


在两个图形的交点处则用


f(y)


图形的符号。



4.20


】编写程序,输出如图所示 高度为


n


的图形。




4.21


】编写程序,输出如图所示 高度为


n


的图形。




4.22


】输入

n


值,输出如图所示图形。













< /p>



4.23


】输入


n


值,输出如图所示的


n


×


n(n<10)


阶螺旋方阵。



1 2 3 4 5


16 17 18 19 6


15 24 25 20 7


14 23 22 21 8


13 12 11 10 9



4.19 n=5


时的螺旋方阵





4.24


】输入


n


值,输出如图所示回型方阵。



< p>


4.25


】输出如图所示的数字金字塔







4.26


】输入


n


值,输出如图所示图形。






4.27


】输入顶行字符和图形的高,输出如图所示图形。







4.2 8


】输入首字符和高后,输出如图所示回型方阵。



A A A A A



A B B B A



A B C B A



A B B B A



A A A A A





4.24


首字符为


'A'

< p>
、高为


5


的方阵





4.29


】输入中心字符和高后,输出如图所示回型方阵。



X X X X X



X Y Y Y X



X Y Z Y X



X Y Y Y Y


X X X X X



4.25


中心字符为


'Z'


、高为


5


的方阵





4.30< /p>


】编写程序,输出如图所示上三角形式的乘法九九表。






4.3 1


】编写程序,输出如图所示下三角乘法九九表。






4.4


】分析:打印此图形用两重循环实现。



图形要重复


n


行,故采用循环结构实现循环

< br>n


次,循环体内部打印一行


'*'



,


把上述思路表


示为:

< p>


for(i=1



i< =n



i++)


打印一行

< p>
'*'


号;



每行有


n



'*'


号,再 采用循环结构实现


n


次循环,循环内部用格式输出语句打印一个


'*'


号,


即:



for(j=1



j<=n



j++)


printf(




按照上述思路,实现打印矩形。



参考答案:



main()


{ int i,j,n




printf(




scanf(



for(i=1



i<=n



i++)


{ for(j=1



j<=n



j++)


printf(




printf(




}


}



4 .5


】分析:此图形和上题的区别在于在每一行先要打印空格,然后再打印


n



'*'



,


在上


题第一层循环体内打印


'*'


号的循环前面增加一个循环打印空格。


每行空格的个数 是逐行减少


的,由于第一层循环的控制变量


i

< br>是逐行增


1


,所以用一个固定值的数减去


i


就可实现对空


格个数的控制,在此题中固定值可使用 变量


n




参考答案:




main( )


{ int i,j,n




printf(




scanf(



for(i=1



i<=n



i++)


{ for(j=1



j<=n-i



j++)


printf(



< br>for(j=1



j<=n


;< /p>


j++)


printf(




printf(




}


}



4 .6


】分析:此题和上题的区别在于每行


'*'


的数量逐行减少,可以使用上题控制空格个数


的思路来控制

'*'


号的个数,请注意每行


'*'


的个数都是奇数。



参考答案:



main( )


{ int i,j,n




printf(




scanf(



for(i=1



i<=n



i++)


{ for(j=1



j<=n-i



j++)


printf(



< br>for(j=1



j<=2*i-1


j++)


printf(




printf(




}


}



4 .7


】分析:此题图形是第


3


题图形的 垂直反转,在编程上我们可以变换一个思路。对于


图形中的第


i


行(


1



i< /p>



n



,共需要 输出


2n-i


个字符,其中前面的


i- 1


个字符为空格,后面


的字符为


'*'


号。按照这一思路可以编写出如下程序。



参考答案:



main( )


{ int i,j,n




printf(




scanf(




for( i=1



i<=n



i++ ) /*


重复输出图形的


n




*/


{ for( j=1



j<=2*n -i



j++ ) /*


重复输出图形一行中的每个字符



*/


if(j<=i-1) printf(




/*


输出前面的空格



*/


else printf(




/*


输出后面的


*

< br>号



*/


printf(




}


}



4 .8


】分析:此题和第


3


题的区别仅是 每行的


'*'


个数增加


n-1


个。



参考答案:



main( )


{ int i,j,n




printf(




scanf(



for(i=1



i<=n



i++)


{ for(j=1



j<=n-i



j++)


printf(



< br>for(j=1



j<=2*i-1+(n-1)



j++)


printf(




printf(




}


}



4 .9


】分析:对于空心图形,我们可以在上题的基础上,对于打印


'*'


号的循环进行修改,


仅在循环开始值

< br>(j=1)


和循环结束值


(j=2*(i-1)+n)< /p>


时打印


'*'


号,其它位置都打印空格。 另一种


思路是将每行打印的空格和


'*'


的两个循环合为一体考虑,


在判断出需要打印


'*'


的两个位置及


第一行和最后一行相应位置外,其余位置都打印空格。



参考答案:



main( )


{ int i,j,n




printf(




scanf(



for(i=1



i<=n



i++)


{ for(j=1



j<=2*n+i-3



j++)


if(j==n-i+1 || j>n-i+1 && (i==1||i==n)) printf(




else printf(




printf(




}


}



4 .10


】分析:此图形可以理解为两个空心梯形反向连接而成,因此可以利用上题的思路 进


行输出。



参考答案:



main( )


{ int i,j,n




printf(




scanf(



for(i=1



i<=n



i++) /*


输出图形的上半部分


(< /p>


含中心行


) */


{ for(j=1



j<=2*n-i-1


< p>
j++)


if(j==i) printf(




else printf(




printf(




}


for(i=1



i



i++) /*


输出图形的下半部分(不含中心行)



*/


{ for(j=1



j<=n+i



j++)


if(j==n-i) printf(




else printf(




printf(




}


}















































4.1 1


】分析:此题与上题的区别在于打印


'*'

< br>号的位置不同,编程时要找出应打印


'*'


号的位


置和两个循环变量


i



j


以及行数


n


的关系。


-


-


-


-


-


-


-


-