奇怪的 switch() case 题目

本文探讨了如何使用Switch语句来判断整数变量X的范围,并给出相应的输出结果。通过具体的案例,展示了不同条件下X的输出,例如X小于1、X等于1、X是2到4之间的数以及X大于4的情况。
给出一值X,用Case判断其值:
X小于1
X等于1
X是2,3,4
X大于4

类似这段代码:

public class siwtch
{
public static void main(String[] args)
{
int x = -2;

switch (x)
{
//case int x<1:
case 1:
System.out.println("x is less than 1");
break;

//case x==1:
case 2:
System.out.println("x is 1");
break;

//case x<=4:
case 3:
System.out.println("x is 2,3,4");
break;

case 4:
System.out.println("x is greater than 4");
break;
}

}
}


怎样写的这个case,才能有正确的输出?
-1 输出 X小于1
1 输出 X等于1
2 输出 X是2,3,4
5 输出 X大于4

:wink:
#include <stdio.h> unsigned arr[200000]; int main() { int T; scanf("%d",&T); int t=T; while(T--){ int y,m,d; scanf("%d%d%d\n",&y,&m,&d); while(y>=1583&&y<=9999){ switch(m){ case 1: arr[T]=d; break; case 2: arr[T]=31+d; break; case 3: arr[T]=60+d; break; case 4: arr[T]=91+d; break; case 5: arr[T]=121+d; break; case 6: arr[T]=152+d; break; case 7: arr[T]=182+d; break; case 8: arr[T]=213+d; break; case 9: arr[T]=244+d; break; case 10: arr[T]=274+d; break; case 11: arr[T]=305+d; break; case 12: arr[T]=335+d; break; } while(y%4!=0||(y%100==0&&y%400!=0)){ arr[T]--; }}} for(int i=t;i>=1;i--){ printf("%d\n",arr[i]); } return 0; } 分析为什么这串代码不符合题意: 题目描述 求 y 年 m 月 d 日是这一年的第几天。 我们认为每一年的 1 月 1 日是这一年的第 1 天。 输入 第一行一个数为数据组数 T 。 接下来 T 行,每行 3 个整数 y,m,d ,空格分隔。 保证 1≤T≤2×105,1583≤y≤9999,1≤m≤12,1≤d≤days(y,m) ,其中 days(y,m) 表示 y 年 m 月所拥有的天数。也就是说,我们保证输入一定是 [1583,9999] 年中的一个合法日期。 输出 对于每组数据,输出一行一个整数表示答案。 可以证明,答案一定在 [1,366] 之间。 建议使用输出格式:printf("%d\n",answer) 等; 对于本题这种多测题目,你应该在输出一组数据后输出有且仅有一个换行符,否则会 Presentation Error,即 PE。 输入样例 6 2025 10 14 2025 3 1 2024 3 1 2024 2 28 1900 3 1 2000 3 1 输出样例 287 60 61 59 60 61
10-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值