Chinaunix首页 | 论坛 | 博客
  • 博客访问: 332876
  • 博文数量: 54
  • 博客积分: 446
  • 博客等级: 下士
  • 技术积分: 821
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-30 17:37
文章分类

全部博文(54)

文章存档

2015年(35)

2014年(19)

我的朋友

分类: C/C++

2015-03-19 19:21:02

编写函数diamond打印一个菱形。如果调用diamond(3, '*')则打印:

	*
*	*	*
	*

如果调用diamond(5, '+')则打印:

		+
	+	+	+
+	+	+	+	+
	+	+	+
		+

如果用偶数做参数则打印错误提示。


点击(此处)折叠或打开

  1. 1.    void diamond(int n, char ch)
  2. 2.    {
  3. 3.     //小于中(如5的中间值为3)时:
  4. 4.     //字符数 = 2k-1;k在0到中间值之间取值
  5. 5.     //空格数 = 中间值 -(字符数/2+1)
  6. 6.     //等于中间值,则字符数为n,空格数为0;可以归类到小于或大于的情况中
  7. 7.     //实际上把打印菱形分成前后两部分处理。
  8. 8.     //大于中间值时:
  9. 9.     //字符数的计算与上面类似,采用等差数列公式:
  10. 10.     //第n项=首项 + (n-1)×公差
  11. 11.     //空格数和上面计算相同。
  12. 12.     int mid_value = n / 2 + 1;
  13. 13.     int character = 0;
  14. 14.     int space = 0;
  15. 15.     if (n % 2 == 0) {
  16. 16.     printf("参数错误,必须是奇数!\n");
  17. 17.     return 0;
  18. 18.     } else {
  19. 19.     int i,j;
  20. 20.     for (i = 1; i <= n; i++) {
  21. 21.     if (i < mid_value) {
  22. 22.     character = i * 2 - 1;
  23. 23.     } else {
  24. 24.     character = n - 2 * (i - mid_value);
  25. 25.     }
  26. 26.     space = mid_value - (character / 2 + 1);
  27. 27.     for (j = 1; j <= space; j++)
  28. 28.     printf(" \t");
  29. 29.     for (j = 1; j <= character; j++)
  30. 30.     printf("%c\t", ch);
  31. 31.     printf("\n");
  32. 32.     }
  33. 33.     }
  34. 34.     return 0;
  35. 35.    }
  36. 36.    int main(void)
  37. 37.    {
  38. 38.     int n;
  39. 39.     char ch;
  40. 40.     printf("Input n, c:");
  41. 41.     scanf("%d %c", &n, &ch);
  42. 42.     return 0;
  43. 43.    }
Space变量指每一行开始时有几个空格,character表示一共打印多少个字符, mid_value表示中间行行号(注意:这里行号都是从1开始)

阅读(1862) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~