鱼C论坛

 找回密码
 立即注册
查看: 950|回复: 12

[已解决]老师的作业,不知道怎么做

[复制链接]
发表于 2020-11-24 15:05:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
屏幕截图 2020-11-24 150501.png 这个怎么做啊兄弟们
最佳答案
2020-11-24 16:46:15
本帖最后由 jitianmoshen 于 2020-11-24 16:48 编辑

2 、3楼说的我还没学到,可以这样搞
  1. #include <stdio.h>
  2. void xinghaoup(int n);
  3. void xinghaodown(int n);
  4. int main(void)
  5. {
  6.         int height;
  7.         printf("请输入高度(大于或等于5的奇数:");
  8.         scanf("%d", &height);
  9.         xinghaoup(height);
  10.         xinghaodown(height - 2);
  11.         return 0;
  12. }
  13. void xinghaoup(int n)
  14. {
  15.         int i, j;
  16.         for (i = 0; i * 2 < n + 1; i++)
  17.         {
  18.                 for (j = 0; j < i * 2 + 1; j++)
  19.                 {
  20.                         printf("*");
  21.                 }
  22.                 for (j = 0; j < (n - (i * 2 + 1)) * 2; j++)
  23.                 {
  24.                         printf(" ");
  25.                 }
  26.                 for (j = 0; j < i * 2 + 1; j++)
  27.                 {
  28.                         printf("*");
  29.                 }
  30.                 printf("\n");
  31.         }
  32. }
  33. void xinghaodown(int n)
  34. {
  35.         int i, j;
  36.         for (i = 0; i * 2 < n + 1; i++)
  37.         {
  38.                 for (j = 0; j < n - i * 2; j++)
  39.                 {
  40.                         printf("*");
  41.                 }
  42.                 for (j = 0; j < (i + 1) * 2 * 2; j++)
  43.                 {
  44.                         printf(" ");
  45.                 }
  46.                 for (j = 0; j < n - i * 2; j++)
  47.                 {
  48.                         printf("*");
  49.                 }
  50.                 printf("\n");
  51.         }
  52. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-24 15:16:43 From FishC Mobile | 显示全部楼层
不知道你们什么版本的教材,也不知道你们学到了什么语法。c++现在接受用参数定义数组长度,你可以直接定义二维字符数组arr[h][2h],用两层循环把字符'*'和' '放进去,这个规律也很简单。最后用两层循环遍历输出字符数组。如果你学习到了堆区开辟内存的语法,可以用指针实现题目要求。如果学习到了stl编程,可以用vector容器实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 16:03:38 | 显示全部楼层
使用线性规划
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 16:37:19 | 显示全部楼层
  1. n = int(input() . strip())
  2. for x in range(1 , n + 1):
  3.     if x < n // 2 + 2 :
  4.         i , j = 2 * x - 1 , 2 * n - (2 * x - 1) * 2
  5.     else :
  6.         i , j = 2 * n - (2 * x - 1) , 2 * (2 * x - 1) - 2 * n
  7.     print('*' * i + ' ' * j + '*' * i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 16:44:26 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 16:46:15 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jitianmoshen 于 2020-11-24 16:48 编辑

2 、3楼说的我还没学到,可以这样搞
  1. #include <stdio.h>
  2. void xinghaoup(int n);
  3. void xinghaodown(int n);
  4. int main(void)
  5. {
  6.         int height;
  7.         printf("请输入高度(大于或等于5的奇数:");
  8.         scanf("%d", &height);
  9.         xinghaoup(height);
  10.         xinghaodown(height - 2);
  11.         return 0;
  12. }
  13. void xinghaoup(int n)
  14. {
  15.         int i, j;
  16.         for (i = 0; i * 2 < n + 1; i++)
  17.         {
  18.                 for (j = 0; j < i * 2 + 1; j++)
  19.                 {
  20.                         printf("*");
  21.                 }
  22.                 for (j = 0; j < (n - (i * 2 + 1)) * 2; j++)
  23.                 {
  24.                         printf(" ");
  25.                 }
  26.                 for (j = 0; j < i * 2 + 1; j++)
  27.                 {
  28.                         printf("*");
  29.                 }
  30.                 printf("\n");
  31.         }
  32. }
  33. void xinghaodown(int n)
  34. {
  35.         int i, j;
  36.         for (i = 0; i * 2 < n + 1; i++)
  37.         {
  38.                 for (j = 0; j < n - i * 2; j++)
  39.                 {
  40.                         printf("*");
  41.                 }
  42.                 for (j = 0; j < (i + 1) * 2 * 2; j++)
  43.                 {
  44.                         printf(" ");
  45.                 }
  46.                 for (j = 0; j < n - i * 2; j++)
  47.                 {
  48.                         printf("*");
  49.                 }
  50.                 printf("\n");
  51.         }
  52. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-11-24 16:55:09 | 显示全部楼层
不知道为啥粘贴过来tab就变成8个空格的长度了,你也可以把那两个函数都弄到main()里面,就是很乱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 17:23:10 | 显示全部楼层
本帖最后由 jackz007 于 2020-11-24 19:41 编辑
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         char s[256]                                                           ;
  5.         int d , i , j , k , m                                                 ;
  6.         scanf("%d" , & m)                                                     ;
  7.         if(m > 1 && m % 2) {
  8.                 for(i = 0 ; i < m ; i ++) {
  9.                         j = (2 * i < m) ? 2 * i + 1 : 2 * m - (2 * i + 1)     ;
  10.                         for(d = 0 , k = 0 ; k < j ; k ++) s[d ++] = '*'       ;
  11.                         for(k = 0 ; k < 2 * m - 2 * j ; k ++) s[d ++] = ' '   ;
  12.                         for(k = 0 ; k < j ; k ++ , s[d] = '\0') s[d ++] = '*' ;
  13.                         printf("%s\n" , s)                                    ;
  14.                 }
  15.         }   
  16. }
复制代码

        编译、运行实况:
  1. D:\0002.Exercise\C>g++ -o x x.c

  2. D:\0002.Exercise\C>x
  3. 5
  4. *        *
  5. ***    ***
  6. **********
  7. ***    ***
  8. *        *

  9. D:\0002.Exercise\C>x
  10. 7
  11. *            *
  12. ***        ***
  13. *****    *****
  14. **************
  15. *****    *****
  16. ***        ***
  17. *            *

  18. D:\0002.Exercise\C>x
  19. 19
  20. *                                    *
  21. ***                                ***
  22. *****                            *****
  23. *******                        *******
  24. *********                    *********
  25. ***********                ***********
  26. *************            *************
  27. ***************        ***************
  28. *****************    *****************
  29. **************************************
  30. *****************    *****************
  31. ***************        ***************
  32. *************            *************
  33. ***********                ***********
  34. *********                    *********
  35. *******                        *******
  36. *****                            *****
  37. ***                                ***
  38. *                                    *

  39. D:\0002.Exercise\C>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-11-25 16:24:17 | 显示全部楼层
jitianmoshen 发表于 2020-11-24 16:46
2 、3楼说的我还没学到,可以这样搞

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-25 16:25:02 | 显示全部楼层
jackz007 发表于 2020-11-24 17:23
编译、运行实况:

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-25 16:32:57 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-25 16:33:35 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-25 16:34:10 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-16 17:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表