编写函数diamond打印一个菱形(linux 上c语言编程)
此为c一站式学习书上的一道习题,想了很久终于有解,将方法贴出来,方便以后学习时用:
总结:
1。对于打印一类题目始终应该考虑字符的输出顺序,如此题中应该先输出空格再输出定义的字符,所以写时先考虑空格输出,再考虑特殊字符输出。
2.找出数字规律,按规律合理拆分。此图实际可以看成上,下两个部分;从中间输入数显示得到最长的行拆分开来,上半部分空格由大到小,字符由小到大;下半部分空格由小到大,字符由大到小。找到这个关键点将程序一分为二来做就简单了(我一开始没有找到这点,弄了半天无果);再者找到空格与实体输出字符的关系为:m=输出字符+2*空格字符。。这样此题就有解了。
就如此简单,看明白了吗
#include
void diamond(int m,char c){
int j,k,n;
for(k=(m-1)/2;k>0;k--){
for(n=k;n>0;n--)
printf(" ");
for(j=(m-2*k);j>0;j--)
printf("%c",c);
printf("\n");
}
for(k=0;k<=(m-1)/2;k++){
for(n=k;n>0;n--)
printf(" ");
for(j=(m-2*k);j>0;j--)
printf("%c",c);
printf("\n");
}
}
int main(void){
diamond(7,'*');
return 0;
}
运行结果:
[root@ethanTest cstudy]# ./6_2_excise.out
*
***
*****
*******
*****
***
*
阅读(2814) | 评论(0) | 转发(0) |