鱼C论坛

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

[已解决]一个问题求助

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

void s_face();
void c_face();

int main()
{
        s_face();
        c_face();
        
        getchar();

}

void s_face()
{
        char s_face[12][29] = { "■                        ■","■                        ■","■■                    ■■","■■■□□□□□□□□■■■",\
        "■□□□□□□□□□□□□■","□□□□□□□□□□□□□□","□□                    □□","□□■■■        ■■■□□",\
        "□□■■□        □■■□□","□□■■■        ■■■□□","□                        □","□□□                □□□"};

        int i, j;
        for (i = 0; i < 12; i++)
        {
                for (j = 0; j < 29; j++)
                {
                        ;''
                        printf("%c", s_face[i][j]);
                }
                printf("\n");
        }
}

void c_face()
{
        char c1_face[29] = { "□□       ■■■       □□" };
        char c2_face[29] = { "□□         ■         □□" };
        char x_face[29] = { "  □□□□□□□□□□□□" };
        int i = 1;
        while (1)
        {
                if (i == 1)
                {
                        printf("%s\n", c1_face);
                        printf("%s", x_face);
                        i++;
                        system("cls");
                }
                else
                {
                        printf("%s\n", c2_face);
                        printf("%s", x_face);
                        i = 1;
                        system("cls");
                }
        }

}

上面这个是想显示出一个小脑袋,然后嘴动,但是因为学识有限,不知道怎么处理了。
正常应该是↓这个
■                       ■
■                       ■
■■                   ■■
■■■□□□□□□□□■■■
■□□□□□□□□□□□□■
□□□□□□□□□□□□□□
□□                   □□
□□■■■        ■■■□□
□□■■□        □■■□□
□□■■■        ■■■□□
□                       □ 
□□□               □□□
□□       ■■■      □□
   □□□□□□□□□□□
最佳答案
2018-9-22 16:51:47
三千芳华 发表于 2018-9-22 20:09
这个是再次打开时不知道怎么就这样了,不是这的问题,这个删除掉,下面c_face最后加上system("cls")才是 ...
#include <stdio.h>
#include <stdlib.h>

void s_face(void)
{
        char *data[] =
        {
                "■                        ■",
                "■                        ■",
                "■■                    ■■",
                "■■■□□□□□□□□■■■",
                "■□□□□□□□□□□□□■",
                "□□□□□□□□□□□□□□",
                "□□                    □□",
                "□□■■■        ■■■□□",
                "□□■■□        □■■□□",
                "□□■■■        ■■■□□",
                "□                        □",
                "□□□                □□□",
                NULL
        };

        for(int i = 0; data[i]; ++i)
        {
                puts(data[i]);
        }
}

void c_face(void)
{
        char c1[] = {"□□       ■■■       □□"};
        char c2[] = {"□□         ■         □□"};
        char x[] = {"  □□□□□□□□□□□□"};
        
        int flag = 0;
        while(1)
        {
                system("cls");

                s_face();
                flag = !flag;
                if(flag)
                {
                        puts(c1);
                        puts(x);
                }
                else
                {
                        puts(c2);
                        puts(x);
                }
        }
}

int main(void)
{
        c_face();
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

void s_face(void)
{
        char *data[] =
        {
                "■                        ■",
                "■                        ■",
                "■■                    ■■",
                "■■■□□□□□□□□■■■",
                "■□□□□□□□□□□□□■",
                "□□□□□□□□□□□□□□",
                "□□                    □□",
                "□□■■■        ■■■□□",
                "□□■■□        □■■□□",
                "□□■■■        ■■■□□",
                "□                        □",
                "□□□                □□□",
                NULL
        };

        for(int i = 0; data[i]; ++i)
        {
                puts(data[i]);
        }
}

void c_face(void)
{
        char c1[] = {"□□       ■■■       □□"};
        char c2[] = {"□□         ■         □□"};
        char x[] = {"  □□□□□□□□□□□□"};
        
        int flag = 0;
        while(1)
        {
                system("cls");

                s_face();
                flag = !flag;
                if(flag)
                {
                        puts(c1);
                        puts(x);
                }
                else
                {
                        puts(c2);
                        puts(x);
                }
        }
}

int main(void)
{
        c_face();
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-22 19:46:11 | 显示全部楼层
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

使用道具 举报

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

厉害了,我的人造人大佬,太厉害了(大拇指)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

static void GotoXY(int x, int y)
{
        COORD position = {x, y};
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), position);
}

static void HideCursor()
{
        CONSOLE_CURSOR_INFO cci;
        cci.bVisible = FALSE;
        cci.dwSize = sizeof(cci);
        HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleCursorInfo(handle, &cci);
}

void s_face(void)
{
        char *data[] =
        {
                "■                        ■",
                "■                        ■",
                "■■                    ■■",
                "■■■□□□□□□□□■■■",
                "■□□□□□□□□□□□□■",
                "□□□□□□□□□□□□□□",
                "□□                    □□",
                "□□■■■        ■■■□□",
                "□□■■□        □■■□□",
                "□□■■■        ■■■□□",
                "□                        □",
                "□□□                □□□",
                NULL
        };

        for(int i = 0; data[i]; ++i)
        {
                puts(data[i]);
        }
}

void c_face(void)
{
        char c1[] = {"□□       ■■■       □□"};
        char c2[] = {"□□         ■         □□"};
        char x[] = {"  □□□□□□□□□□□□"};
        
        int flag = 0;
        while(1)
        {
                GotoXY(0, 12);
                flag = !flag;
                if(flag)
                {
                        puts(c1);
                        puts(x);
                }
                else
                {
                        puts(c2);
                        puts(x);
                }

                Sleep(500);
        }
}

int main(void)
{
        HideCursor();

        s_face();
        c_face();
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-22 20:27:37 | 显示全部楼层
void c_face(void)
{
        char c1[] = {"□□       ■■■       □□"};
        char c2[] = {"□□         ■         □□"};
        char x[] = {"  □□□□□□□□□□□□"};
        
        int flag = 0;
        while(1)
        {
                GotoXY(0, 12);
                flag = !flag;
                if(flag)
                        puts(c1);
                else
                        puts(c2);
                puts(x);

                Sleep(500);
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

请教一下,那个NULL的意义和作用还有flag=!flag这个的意思,这两处没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-22 20:38:48 | 显示全部楼层
        char *data[] =
        {
                "■                        ■",
                "■                        ■",
                "■■                    ■■",
                "■■■□□□□□□□□■■■",
                "■□□□□□□□□□□□□■",
                "□□□□□□□□□□□□□□",
                "□□                    □□",
                "□□■■■        ■■■□□",
                "□□■■□        □■■□□",
                "□□■■■        ■■■□□",
                "□                        □",
                "□□□                □□□",
                NULL
        };

data是一个数组,数组里面的元素是指针,指向char类型的指针
data最后一个指针是NULL,标志着结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

感叹号是逻辑取反
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

想明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

第一次看到这个符号,一直当他是!=了
这个操作符的意思就是0变1再赋值,第二遍是1变0再赋值吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-30 10:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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