牛客网刷题 | BC69 HTTP状态码

目前主要分为三个专栏,后续还会添加:

        专栏如下:                 C语言刷题解析       C语言系列文章       我的成长经历

感谢阅读!

初来乍到,如有错误请指出,感谢!


描述

KiKi访问网站,得到HTTP状态码,但他不知道什么含义,BoBo老师告诉他常见HTTP状态码:200(OK,请求已成功),202(Accepted,服务器已接受请求,但尚未处理。)400(Bad Request,请求参数有误),403(Forbidden,被禁止),404(Not Found,请求失败),500(Internal Server Error,服务器内部错误),502(Bad Gateway,错误网关)。

输入描述:

多组输入,一行,一个整数(100~600),表示HTTP状态码。

输出描述:

针对每组输入的HTTP状态,输出该状态码对应的含义,具体对应如下:
200-OK
202-Accepted
400-Bad Request
403-Forbidden
404-Not Found
500-Internal Server Error
502-Bad Gateway


思路 : 

定义一个变量

用户输入

要注意数值的范围

以及输出的格式 一定不要忘记换行符


代码 1 :

# include <stdio.h>
int main ()


{
    int sum = 0;
    
    while (scanf("%d",&sum)!=EOF) 
    {
         if (sum>=100&&sum<=600) //if 语句判断是否 在(100~600)之间
    {
        switch (sum) 
        {
            case 200:
            printf("OK\n");
            break;
            case 202:
            printf("Accepted\n");
            break;
            case 400:
            printf("Bad Request\n");
            break;
            case 403:
            printf("Forbidden\n");
            break;
            case 404:
            printf("Not Found\n");
            break;
            case 500:
            printf("Internal Server Error\n");
            break;
            case 502:
            printf("Bad Gateway\n");
            break;
        }
    }
         else 
        {
            printf("输入错误\n");
        }
    }
   
    return 0;
}

代码 2:


int main()
{
	int a = 0;

	while ((scanf("%d", &a)) != EOF)
	{
		if (a == 200)
		{
			printf("OK\n");
		}
		else if (a == 202)
		{
			printf("Accepted\n");
		}
		else if (a == 400)
		{
			printf("Bad Request\n");
		}
		else if (a == 403)
		{
			printf("Forbidden\n");
		}
		else if (a == 404)
		{
			printf("Not Found\n");
		}
		else if (a == 500)
		{
			printf("Internal Server Error\n");
		}
		else if (a == 502)
		{
			printf("Bad Gateway\n");
		}
	}
	return 0;
}

以下来自 AI 回答

知识点:

  1. 输入输出处理

    • 使用 scanf 函数读取输入,printf 函数输出结果。
    • 例子:scanf("%d", &statusCode); 用于读取一个整数状态码。
  2. 条件语句

    • 使用 if-else 或 switch-case 语句根据条件执行不同的代码块。
    • 例子:switch (statusCode) { ... } 用于根据状态码选择不同的输出。
  3. 循环控制

    • 使用 while 循环来处理多组输入,直到输入结束。
    • 例子:while (scanf("%d", &statusCode) == 1) { ... } 循环处理每一组输入。
  4. 整数范围判断

    • 检查输入的整数是否在特定的范围内(题目中给定的是100到600)。
    • 例子:如果需要检查,可以添加一个 if 语句来跳过不在这个范围内的输入。
  5. 格式化输出

    • 使用 printf 的格式化输出功能来输出特定格式的字符串。
    • 例子:printf("200-OK\n"); 输出状态码和对应的描述。
  6. 默认情况处理

    • 使用 default 选项来处理 switch-case 语句中未明确列出的情况。
    • 例子:default: printf("Unknown Status Code\n"); 用于输出未知的状态码。
  7. 多组数据输入

    • 理解如何连续处理多组输入数据,直到遇到文件结束符(EOF)。
    • 例子:循环中的 scanf 调用将读取直到没有更多的输入。
  8. 错误处理

    • 对于不符合要求的输入,如不在指定范围内的HTTP状态码,进行适当的错误处理。
    • 例子:可以添加逻辑来忽略或报告非法输入。
  9. 编程风格

    • 保持代码的可读性和结构化,使用适当的缩进和空格。
    • 例子:在 switch 语句的每个 case 后面添加 break 语句来避免代码块的意外合并。
  10. 函数的单一职责

    • 尽量使每个函数(即使在这个简单的例子中是主函数)只负责一个单一的任务。
    • 例子:main 函数只负责读取输入和输出结果,不涉及其他复杂的逻辑。

附 AI 生成代码 

不正确哈 有点瑕疵 但基本原理没错

#include <stdio.h>

int main() {
    int statusCode;

    // 循环直到输入结束
    while (scanf("%d", &statusCode) == 1) {
        // 使用switch-case根据状态码输出对应的描述
        switch (statusCode) {
            case 200:
                printf("200-OK\n");
                break;
            case 202:
                printf("202-Accepted\n");
                break;
            case 400:
                printf("400-Bad Request\n");
                break;
            case 403:
                printf("403-Forbidden\n");
                break;
            case 404:
                printf("404-Not Found\n");
                break;
            case 500:
                printf("500-Internal Server Error\n");
                break;
            case 502:
                printf("502-Bad Gateway\n");
                break;
            // 如果需要处理不在100到600之间的状态码
            default:
                // 输出错误信息或忽略
                printf("Unknown Status Code\n");
                break;
        }
    }

    // 返回0表示程序正常结束
    return 0;
}

  

  • 23
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值