C语言图形输出习题解析

温柔似野鬼°
772次浏览
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


的关系。


-


-


-


-


-


-


-


-