鱼C论坛

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

[已解决]一个问题求助

[复制链接]
发表于 2018-9-22 16:51:46 | 显示全部楼层 |阅读模式
5鱼币
这里有1,2,3,4四句话,其中1,2,3已经显示出来了,现在想把3删掉替换为4,而且1和2完全没变化,怎么做啊?
  1. #include <stdio.h>

  2. void s_face();
  3. void c_face();

  4. int main()
  5. {
  6.         s_face();
  7.         c_face();
  8.        
  9.         getchar();

  10. }

  11. void s_face()
  12. {
  13.         char s_face[12][29] = { "■                        ■","■                        ■","■■                    ■■","■■■□□□□□□□□■■■",\
  14.         "■□□□□□□□□□□□□■","□□□□□□□□□□□□□□","□□                    □□","□□■■■        ■■■□□",\
  15.         "□□■■□        □■■□□","□□■■■        ■■■□□","□                        □","□□□                □□□"};

  16.         int i, j;
  17.         for (i = 0; i < 12; i++)
  18.         {
  19.                 for (j = 0; j < 29; j++)
  20.                 {
  21.                         ;''
  22.                         printf("%c", s_face[i][j]);
  23.                 }
  24.                 printf("\n");
  25.         }
  26. }

  27. void c_face()
  28. {
  29.         char c1_face[29] = { "□□       ■■■       □□" };
  30.         char c2_face[29] = { "□□         ■         □□" };
  31.         char x_face[29] = { "  □□□□□□□□□□□□" };
  32.         int i = 1;
  33.         while (1)
  34.         {
  35.                 if (i == 1)
  36.                 {
  37.                         printf("%s\n", c1_face);
  38.                         printf("%s", x_face);
  39.                         i++;
  40.                         system("cls");
  41.                 }
  42.                 else
  43.                 {
  44.                         printf("%s\n", c2_face);
  45.                         printf("%s", x_face);
  46.                         i = 1;
  47.                         system("cls");
  48.                 }
  49.         }

  50. }
复制代码


上面这个是想显示出一个小脑袋,然后嘴动,但是因为学识有限,不知道怎么处理了。
正常应该是↓这个

  1. ■                       ■
  2. ■                       ■
  3. ■■                   ■■
  4. ■■■□□□□□□□□■■■
  5. ■□□□□□□□□□□□□■
  6. □□□□□□□□□□□□□□
  7. □□                   □□
  8. □□■■■        ■■■□□
  9. □□■■□        □■■□□
  10. □□■■■        ■■■□□
  11. □                       □
  12. □□□               □□□
  13. □□       ■■■      □□
  14.    □□□□□□□□□□□
复制代码
最佳答案
2018-9-22 16:51:47
三千芳华 发表于 2018-9-22 20:09
这个是再次打开时不知道怎么就这样了,不是这的问题,这个删除掉,下面c_face最后加上system("cls")才是 ...
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. void s_face(void)
  4. {
  5.         char *data[] =
  6.         {
  7.                 "■                        ■",
  8.                 "■                        ■",
  9.                 "■■                    ■■",
  10.                 "■■■□□□□□□□□■■■",
  11.                 "■□□□□□□□□□□□□■",
  12.                 "□□□□□□□□□□□□□□",
  13.                 "□□                    □□",
  14.                 "□□■■■        ■■■□□",
  15.                 "□□■■□        □■■□□",
  16.                 "□□■■■        ■■■□□",
  17.                 "□                        □",
  18.                 "□□□                □□□",
  19.                 NULL
  20.         };

  21.         for(int i = 0; data[i]; ++i)
  22.         {
  23.                 puts(data[i]);
  24.         }
  25. }

  26. void c_face(void)
  27. {
  28.         char c1[] = {"□□       ■■■       □□"};
  29.         char c2[] = {"□□         ■         □□"};
  30.         char x[] = {"  □□□□□□□□□□□□"};
  31.        
  32.         int flag = 0;
  33.         while(1)
  34.         {
  35.                 system("cls");

  36.                 s_face();
  37.                 flag = !flag;
  38.                 if(flag)
  39.                 {
  40.                         puts(c1);
  41.                         puts(x);
  42.                 }
  43.                 else
  44.                 {
  45.                         puts(c2);
  46.                         puts(x);
  47.                 }
  48.         }
  49. }

  50. int main(void)
  51. {
  52.         c_face();
  53.         return 0;
  54. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-22 16:51:47 | 显示全部楼层    本楼为最佳答案   
三千芳华 发表于 2018-9-22 20:09
这个是再次打开时不知道怎么就这样了,不是这的问题,这个删除掉,下面c_face最后加上system("cls")才是 ...
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. void s_face(void)
  4. {
  5.         char *data[] =
  6.         {
  7.                 "■                        ■",
  8.                 "■                        ■",
  9.                 "■■                    ■■",
  10.                 "■■■□□□□□□□□■■■",
  11.                 "■□□□□□□□□□□□□■",
  12.                 "□□□□□□□□□□□□□□",
  13.                 "□□                    □□",
  14.                 "□□■■■        ■■■□□",
  15.                 "□□■■□        □■■□□",
  16.                 "□□■■■        ■■■□□",
  17.                 "□                        □",
  18.                 "□□□                □□□",
  19.                 NULL
  20.         };

  21.         for(int i = 0; data[i]; ++i)
  22.         {
  23.                 puts(data[i]);
  24.         }
  25. }

  26. void c_face(void)
  27. {
  28.         char c1[] = {"□□       ■■■       □□"};
  29.         char c2[] = {"□□         ■         □□"};
  30.         char x[] = {"  □□□□□□□□□□□□"};
  31.        
  32.         int flag = 0;
  33.         while(1)
  34.         {
  35.                 system("cls");

  36.                 s_face();
  37.                 flag = !flag;
  38.                 if(flag)
  39.                 {
  40.                         puts(c1);
  41.                         puts(x);
  42.                 }
  43.                 else
  44.                 {
  45.                         puts(c2);
  46.                         puts(x);
  47.                 }
  48.         }
  49. }

  50. int main(void)
  51. {
  52.         c_face();
  53.         return 0;
  54. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-22 19:46:11 | 显示全部楼层
1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-9-22 20:09:07 | 显示全部楼层

这个是再次打开时不知道怎么就这样了,不是这的问题,这个删除掉,下面c_face最后加上system("cls")才是,虽然直接清屏是能做到变脸,但不清s_face,而做到变脸这个我没搞出来。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-9-22 20:20:01 | 显示全部楼层

厉害了,我的人造人大佬,太厉害了(大拇指)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-22 20:23:38 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>

  4. static void GotoXY(int x, int y)
  5. {
  6.         COORD position = {x, y};
  7.         SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), position);
  8. }

  9. static void HideCursor()
  10. {
  11.         CONSOLE_CURSOR_INFO cci;
  12.         cci.bVisible = FALSE;
  13.         cci.dwSize = sizeof(cci);
  14.         HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
  15.         SetConsoleCursorInfo(handle, &cci);
  16. }

  17. void s_face(void)
  18. {
  19.         char *data[] =
  20.         {
  21.                 "■                        ■",
  22.                 "■                        ■",
  23.                 "■■                    ■■",
  24.                 "■■■□□□□□□□□■■■",
  25.                 "■□□□□□□□□□□□□■",
  26.                 "□□□□□□□□□□□□□□",
  27.                 "□□                    □□",
  28.                 "□□■■■        ■■■□□",
  29.                 "□□■■□        □■■□□",
  30.                 "□□■■■        ■■■□□",
  31.                 "□                        □",
  32.                 "□□□                □□□",
  33.                 NULL
  34.         };

  35.         for(int i = 0; data[i]; ++i)
  36.         {
  37.                 puts(data[i]);
  38.         }
  39. }

  40. void c_face(void)
  41. {
  42.         char c1[] = {"□□       ■■■       □□"};
  43.         char c2[] = {"□□         ■         □□"};
  44.         char x[] = {"  □□□□□□□□□□□□"};
  45.        
  46.         int flag = 0;
  47.         while(1)
  48.         {
  49.                 GotoXY(0, 12);
  50.                 flag = !flag;
  51.                 if(flag)
  52.                 {
  53.                         puts(c1);
  54.                         puts(x);
  55.                 }
  56.                 else
  57.                 {
  58.                         puts(c2);
  59.                         puts(x);
  60.                 }

  61.                 Sleep(500);
  62.         }
  63. }

  64. int main(void)
  65. {
  66.         HideCursor();

  67.         s_face();
  68.         c_face();
  69.         return 0;
  70. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-22 20:27:37 | 显示全部楼层
  1. void c_face(void)
  2. {
  3.         char c1[] = {"□□       ■■■       □□"};
  4.         char c2[] = {"□□         ■         □□"};
  5.         char x[] = {"  □□□□□□□□□□□□"};
  6.        
  7.         int flag = 0;
  8.         while(1)
  9.         {
  10.                 GotoXY(0, 12);
  11.                 flag = !flag;
  12.                 if(flag)
  13.                         puts(c1);
  14.                 else
  15.                         puts(c2);
  16.                 puts(x);

  17.                 Sleep(500);
  18.         }
  19. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-9-22 20:34:08 | 显示全部楼层

请教一下,那个NULL的意义和作用还有flag=!flag这个的意思,这两处没看懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-22 20:38:48 | 显示全部楼层
  1.         char *data[] =
  2.         {
  3.                 "■                        ■",
  4.                 "■                        ■",
  5.                 "■■                    ■■",
  6.                 "■■■□□□□□□□□■■■",
  7.                 "■□□□□□□□□□□□□■",
  8.                 "□□□□□□□□□□□□□□",
  9.                 "□□                    □□",
  10.                 "□□■■■        ■■■□□",
  11.                 "□□■■□        □■■□□",
  12.                 "□□■■■        ■■■□□",
  13.                 "□                        □",
  14.                 "□□□                □□□",
  15.                 NULL
  16.         };
复制代码


data是一个数组,数组里面的元素是指针,指向char类型的指针
data最后一个指针是NULL,标志着结束
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-22 20:39:56 | 显示全部楼层
三千芳华 发表于 2018-9-22 20:34
请教一下,那个NULL的意义和作用还有flag=!flag这个的意思,这两处没看懂

感叹号是逻辑取反
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-9-22 20:45:03 | 显示全部楼层
人造人 发表于 2018-9-22 20:38
data是一个数组,数组里面的元素是指针,指向char类型的指针
data最后一个指针是NULL,标志着结束

想明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-9-22 20:53:18 | 显示全部楼层
人造人 发表于 2018-9-22 20:39
感叹号是逻辑取反

第一次看到这个符号,一直当他是!=了
这个操作符的意思就是0变1再赋值,第二遍是1变0再赋值吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-22 20:58:07 | 显示全部楼层
三千芳华 发表于 2018-9-22 20:53
第一次看到这个符号,一直当他是!=了
这个操作符的意思就是0变1再赋值,第二遍是1变0再赋值吧 ...

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-11 12:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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