牛客网刷题 | BC68 牛牛的一周

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

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

感谢阅读!

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


描述

牛牛的一周有七天,从周一到周日对应的英文是

1、星期一:Monday

2、星期二:Tuesday

3、星期三:Wednesday

4、星期四:Thursday

5、星期五:Friday

6、星期六:Saturday

7、星期日:Sunday

牛牛知道今天是星期几,请输出这天的英文

输入描述:

输入今天是星期几

输出描述:

输出对应的英文


思路 : 

这题使用if else 语句判断也行

使用switch语句判断也行

我用的是switch语句来进行判断的


以下是AI给出的解题思路: 

读取输入:首先,你需要读取用户输入的数字,这个数字代表星期的序号。

映射关系:在代码中定义一个映射关系,将输入的数字映射到对应的英文星期名称。例如,1对应"Monday",2对应"Tuesday",以此类推。

条件判断:根据输入的数字,使用条件语句(如if-else或者switch-case)来判断它对应的星期名称。

输出结果:根据条件判断的结果,输出对应的英文星期名称。

处理边界情况:确保程序能够处理超出范围的输入值,即输入的数字不在1到7之间时,给出适当的提示或默认值。


代码1:

使用switch语句来进行判断

# include <stdio.h>
int main ()

{
    int input = 0;
    scanf("%d",&input);

    switch (input) 
    {
        case 1:
        printf("Monday");
        break;
        case 2:
        printf("Tuesday");
        break;
        case 3:
        printf("Wednesday");
        break;
        case 4:
        printf("Thursday");
        break;
        case 5:
        printf("Friday");
        break;
        case 6:
        printf("Saturday");
        break;
        case 7:
        printf("Sunday");
        break;
        default:
        printf("输入错误\n");
    }
    return 0;
}

 切记,千万不要忘记加break;

我就忘记了,题目提示出错......


代码2: 

if...else 语句进行判断

#include <stdio.h> 

int main()

{ 

int d; 

scanf("%d",&d); 

if(d==1)

printf("Monday"); 

if(d==2)

printf("Tuesday"); 

if(d==3)

printf("Wednesday"); 

if(d==4)

printf("Thursday"); 

if(d==5)

printf("Friday"); 

if(d==6)

printf("Saturday"); 

if(d==7)

printf("Sunday"); 

return 0; }

代码3: 

比较高级点的。

用的二维数组来进行判断

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	char whichDay[7][10] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
	int day = 0;

	scanf("%d", &day);

	//合法性判断
	if (day < 1 || day > 7)
	{
		printf("输入错误, 请输入数字1~7\n");
		return 1;
	}

	printf("%s\n", whichDay[day - 1]);

	return 0;
}

扩展:

switch语句: 

以下来自:菜鸟教程 C switch 语句 | 菜鸟教程 (runoob.com)

switch 语句是一种有限制的控制流语句,它用于根据表达式的值执行不同的代码块。

一个 switch 语句允许测试一个变量等于多个值时的情况,每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。

语法

C 语言中 switch 语句的语法:

switch(expression){
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
  
    /* 您可以有任意数量的 case 语句 */
    default : /* 可选的 */
       statement(s);
}

switch 语句说明:

  • switch 后面的表达式的值将会与每个 case 后面的常量值进行比较,直到找到匹配的值或者执行到 default(如果存在)。
  • 如果找到匹配的值,将执行相应 case 后面的代码块,然后跳出 switch 语句。
  • 如果没有匹配的值,并且有 default,则执行 default 后面的代码块。
  • 如果没有匹配的值,并且没有 default,则跳过整个 switch 语句直到结束。

switch 语句必须遵循下面的规则:

  • switch 表达式的类型: switch 语句中的表达式必须是整数类型(char、short、int或枚举),或者是能够隐式转换为整数类型的表达式。

  • case 标签的唯一性: 在 switch 语句中,每个 case 标签必须是唯一的,不能有重复的值。

  • 默认情况的可选性: switch 语句中的 default 标签是可选的。如果没有匹配的 case 标签,则会执行 default 标签下的代码块(如果存在)。

  • case 标签中的常量值: case 标签中只能是常量值,不能是变量或表达式。

  • case 标签的顺序: switch 语句中的 case 标签的顺序并不重要,它们可以按照任意顺序编写。程序会按照 case 标签出现的顺序依次匹配。

  • break 语句的使用: 在每个 case 标签的代码块结束处通常需要使用 break 语句来终止 switch 语句的执行。如果没有 break 语句,程序将会继续执行下一个 case 标签中的代码,直到遇到 break 语句或 switch 语句结束。

  • switch 语句的嵌套: switch 语句可以嵌套在其他 switch 语句中,但是需要注意代码的可读性和复杂性。

  • case 标签和表达式的范围: switch 语句的 case 标签可以是整数常量表达式,但不能是浮点数或字符串。

 

实例: 

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   char grade = 'B';
 
   switch(grade)
   {
   case 'A' :
      printf("很棒!\n" );
      break;
   case 'B' :
   case 'C' :
      printf("做得好\n" );
      break;
   case 'D' :
      printf("您通过了\n" );
      break;
   case 'F' :
      printf("最好再试一下\n" );
      break;
   default :
      printf("无效的成绩\n" );
   }
   printf("您的成绩是 %c\n", grade );
 
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

做得好
您的成绩是 B

 使用 switch 语句编程,根据输入的年份判断是否为闰年,根据输入的月份判断这月有多少天。

#include<stdio.h>

int main() {
    int year, month, ex;
    printf("请输入年份及月份(空格分隔):");
    scanf("%d %d", &year, &month);
    if(month < 1 || month > 12) {
        printf("输入有误!!");
    } else {
        if((year%4 == 0 && year%100 != 0) || year%400 == 0) {
            ex = 1;
            printf("%d年为闰年。\n", year);

        } else {
            ex = 0;
            printf("%d年不为闰年。\n", year);
        }

        switch(month) {
            case 4: case 6: case 9: case 11: printf("%d月有%d天。", month, 30); break;
            case 2: printf("%d月有%d天。", month, 27+ex); break;
            default: printf("%d月有%d天。", month, 31);
        }
    }
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值