C语言必会100题(7)。输入星期的第一个字母来判断一下是星期/Press any key to change color/学习gotoxy()与clrscr()函数/练习函数调用/文本颜色设置

特此鸣谢:鱼C_小甲鱼(B站up主)不二如是(鱼C论坛大佬)
题目来源:https://fishc.com.cn
注:这些题在网上都可以搜到,题下面的代码大多是流传下来的答案(我重新排了一下版,增加了可读性),部分是本人经过深思熟虑后编写的。

31,输入星期的第一个字母来判断一下是星期

  • 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母
  • 程序源代码:
  1. 第一种解:
    // 星期一:Monday
    // 星期二:Tuesday
    // 星期三:Wndnesday
    // 星期四:Thursday
    // 星期五:Friday
    // 星期六:Saturday
    // 星期日:Sunday
    
    #include <stdio.h>
    
    void secondLetter_T();
    void secondLetter_S();
    
    int main() {
        char first;
    
        printf("请输入第一个字母:");
        scanf("%s", &first);
    
        switch (first) {
            case 'M':
                printf("Monday!");
                break;
            case 'T':
                secondLetter_T();
                break;
            case 'W':
                printf("Wndnesday!");
                break;
            case 'F':
                printf("Friday!");
                break;
            case 'S':
                secondLetter_S();
                break;
            default:
                printf("输入错误!!!");
                break;
        }
    
        return 0;
    }
    
    void secondLetter_T() {
        char two;
    
        printf("请输入第二个字母:");
        scanf("%s", &two);
    
        switch (two) {
            case 'u':
                printf("Tuesday!");
                break;
            case 'h':
                printf("Thursday!");
                break;
            default:
                printf("输入错误!!!");
                break;
        }
    }
    
    void secondLetter_S() {
        char two;
    
        printf("请输入第二个字母:");
        scanf("%s", &two);
    
        switch (two) {
            case 'a':
                printf("Saturday!");
                break;
            case 'u':
                printf("Sunday!");
                break;
            default:
                printf("输入错误!!!");
                break;
        }
    }
  2. 第二种解:
    #include <stdio.h>
    
    int main()
    {
    	char letter;
        printf("please input the first letter of someday\n");
        
        while((letter = getch()) != 'Y')//当所按字母为Y时才结束
        {
            switch (letter)
            {
                case 'S': printf("please input second letter\n");
                    if((letter = getch()) == 'a')
                        printf("saturday\n");
                    else if ((letter = getch()) == 'u')
                        printf("sunday\n");
                    else printf("data error\n");
                    break;
                case 'F': printf("friday\n");break;
                case 'M': printf("monday\n");break;
                case 'T': printf("please input second letter\n");
                    if((letter = getch()) == 'u')
                        printf("tuesday\n");
                    else if ((letter = getch()) == 'h')
                        printf("thursday\n");
                    else printf("data error\n");
                    break;
                case 'W':printf("wednesday\n");break;
                default: printf("data error\n");
            }
        }
        
        return 0;
    }

32,Press any key to change color

  • 题目:Press any key to change color, do you want to try it. Please hurry up!(按任意键更改颜色,你想要尝试一下吗?。那么就赶快开始吧!)
  • 程序源代码:
    // 我是在Codeblocks里面运行的,好像是conio文件里面东西不全,所以刚开始不能运行,报错。
    // 网上搜发现codeblocks里面要自己写。所以在不同的编译器里面运行会发生不同的情况,不懂的自行百度。
    // 后来从网上搜到了textbackground函数并添加上面才可以运行了。
    // 里面很多东西我也不太了解,所以能写的注释也就那么多了,虽然都是从网上搜的。
    
    #include <conio.h>
    #include <stdio.h>
    #include <windows.h>
    
    int textbackground(short iColor)
    {
        // 从一个特定的标准设备(标准输出)中取得一个句柄(用来标识不同设备的数值)
    	HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE);
    
        // 结构体,该结构体包含控制台屏幕缓冲区的信息。设置名称位csbInfo的结构体。
    	CONSOLE_SCREEN_BUFFER_INFO csbInfo;
    
        // 函数,获取特定的控制台屏幕缓冲区信息。
    	GetConsoleScreenBufferInfo(hd, &csbInfo);
    
        // SetConsoleTextAttribute()函数是一个API设置字体颜色和背景色的函数。
        // 有两个属性,第一个属性获得句柄,就是hd,也就是GetStdHandle(STD_OUTPUT_HANDLE),看这个函数的第一行;
        // 第一个属性和第二个属性中间用“,”隔开。
        // 第二个属性是设置颜色,中间有|
        // 结构体里面有wAttributes存储了绘制文本、背景的颜色等属性,在调用输出函数输出到控制台的时候就会作用。
        // 可以看一下这篇文章https://blog.csdn.net/weixin_30443731/article/details/99245800
        return SetConsoleTextAttribute(hd, (iColor<<4)|(csbInfo.wAttributes&~0xF0));
    }
    
    int main()
    {
        int color;
    
        for(color = 0; color < 8; color++)
        {
            //设置文本的背景颜色
            textbackground(color);
    
            printf("this is color%d\n", color);
            printf("press any key to continue\n");
    
            // 设置用户输入的字符在控制台不显示
            getch();
        }
    }

33,学习gotoxy()与clrscr()函数

  • 题目:学习gutoxy()与clrscr()函数
  • 程序源代码:
    #include <conio.h>
    #include <stdio.h>
    #include <windows.h>
    
    void gotoxy(int x, int y);
    int textbackground(short iColor);
    
    int main(void)
    {
        // clrscr();清屏函数,但是在codeblocks里面无法调用,百度上说可以用下面的代替。
        system("cls");
    
        // 定位函数,定位光标到指定位置
        gotoxy(1, 5);
        // 设置输出字体的背景颜色
        textbackground(3);
        // 这里原来的是cprintf,很显然,在odeblocks里面无法运行,改变成了printf
        printf("Output at row 5 column 1\n");
    
        gotoxy(20, 10);
        textbackground(2);
        printf("Output at row 10 column 20\n");
    
        getch();
    }
    
    void gotoxy(int x, int y)
    {
        COORD coord;
    
        coord.X = x; coord.Y = y;
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
    }
    
    int textbackground(short iColor)
    {
        // 从一个特定的标准设备(标准输出)中取得一个句柄(用来标识不同设备的数值)
        HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE);
        // 结构体,该结构体包含控制台屏幕缓冲区的信息。设置名称位csbInfo的结构体。
        CONSOLE_SCREEN_BUFFER_INFO csbInfo;
        // 函数,获取特定的控制台屏幕缓冲区信息。
        GetConsoleScreenBufferInfo(hd, &csbInfo);
        // SetConsoleTextAttribute()函数是一个API设置字体颜色和背景色的函数。
        // 有两个属性,第一个属性获得句柄,就是hd,也就是GetStdHandle(STD_OUTPUT_HANDLE),看这个函数的第一行;
        // 第一个属性和第二个属性中间用“,”隔开。
        // 第二个属性是设置颜色,中间有|
        // 结构体里面有wAttributes存储了绘制文本、背景的颜色等属性,在调用输出函数输出到控制台的时候就会作用。
        // 可以看一下这篇文章https://blog.csdn.net/weixin_30443731/article/details/99245800
        return SetConsoleTextAttribute(hd, (iColor<<4)|(csbInfo.wAttributes&~0xF0));
    }

34,练习函数调用

  • 题目:练习函数调用(发动你的小脑袋瓜,随便写一个函数然后调用就可以了~)
  • 程序源代码:
    #include <stdio.h>
    #include <conio.h>
    
    void three_hellos(void);
    void hello_world(void);
    
    int main(void)
    {
        three_hellos();//调用此函数
        getch();
    }
    
    void three_hellos(void)
    {
        int counter;
        for (counter = 1; counter <= 3; counter++) {
            hello_world();//调用此函数
        }
    
    }
    
    void hello_world(void)
    {
        printf("Hello, world!\n");
    }

35,文本颜色设置

  • 题目:文本颜色设置
  • 程序源代码:
    #include <stdio.h>
    #include <conio.h>
    #include <windows.h>
    
    void textcolor(int color);
    
    int main(void)
    {
        int color;
    
        for (color = 1; color < 16; color++) {
    
            textcolor(color);// 设置文本颜色
            printf("This is color %d\r\n", color);
    
        }
    
        textcolor(128 + 15);
        printf("This is blinking\r\n");
    
        getch();
    }
    
    void textcolor(int color) // 更改字体颜色
    {
        //在文本模式中选择新的字符颜色
        HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE); // 得到标准输出的句柄
        SetConsoleTextAttribute(hOutput, color);//Attribute:属性
    }
    

     

posted @ 2022-03-20 17:41  炸天帮帮主  阅读(241)  评论(0)    收藏  举报