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