c - 如果有人能找到我可以修复我的 switych c 代码的方法?
问题描述
您好,我刚开始学习 C,我正在尝试编写一个代码,它的值是一天一个月和一年的数字,它以文字显示月份并限制天数,但如果你能告诉我,我无法成功我做错了什么
#include <stdio.h>
int main()
{
int a,b,c;
//day month year
scanf("%d%d%d",&a,&b,&c);
switch(b,a<=31)
{
case 1: printf("%d January %d",a,c+2000);
break;
case 2: printf("%d February %d",a,c+2000);
break;
case 3: printf("%d March %d",a,c+2000);
break;
case 4: printf("%d April %d",a,c+2000);
break;
case 5: printf("%d May %d",a,c+2000);
break;
case 6: printf("%d Juny %d",a,c+2000);
break;
case 7: printf("%d July %d",a,c+2000);
break;
case 8: printf("%d August %d",a,c+2000);
break;
case 9: printf("%d September %d",a,c+2000);
break;
case 10: printf("%d October %d",a,c+2000);
break;
case 11: printf("%d November %d",a,c+2000);
break;
case 12: printf("%d December %d",a,c+2000);
break;
default : printf("One of your numbers are wrong");
}
}
解决方案
switch
条件只能取一个变量。因为, a
&c
在这里是常量,所以它们应该按原样使用。
#include <stdio.h>
int main()
{
int a,b,c;
//day month year
scanf("%d%d%d",&a,&b,&c);
// date validation should be done before and if it is valid. then only process further
if (a < 1 || a > 31) {
cout << "Invalid date.";
exit(1);
}
switch(b)
{
case 1: printf("%d January %d",a,c+2000);
break;
case 2: printf("%d February %d",a,c+2000);
break;
case 3: printf("%d March %d",a,c+2000);
break;
case 4: printf("%d April %d",a,c+2000);
break;
case 5: printf("%d May %d",a,c+2000);
break;
case 6: printf("%d Juny %d",a,c+2000);
break;
case 7: printf("%d July %d",a,c+2000);
break;
case 8: printf("%d August %d",a,c+2000);
break;
case 9: printf("%d September %d",a,c+2000);
break;
case 10: printf("%d October %d",a,c+2000);
break;
case 11: printf("%d November %d",a,c+2000);
break;
case 12: printf("%d December %d",a,c+2000);
break;
default : printf("One of your numbers are wrong");
}
}
注意:日期未正确验证。最好先创建一个函数并对其进行验证。前任。像二月一样检查不能超过 29 天。
推荐阅读
- c++ - 检查 Windows 版本
- javascript - html5 canvas制作的图片如何下载?并且图片可以是圆角矩形而不仅仅是矩形?
- javascript - 调用属于联合类型的函数?
- neo4j - 使用 Spring Data Rest 和 neo4j 创建节点之间的关系
- java - Sring-boot 日志文件无法与 logbak-spring.xml 一起正常工作
- android - Xamarin、Android、PCL SQLLite、SQLite.NET 混乱
- soap - 如何在不检查 Content-Type 标头的情况下进行 jaxws 解析响应
- r - 使用 plotly 中的按钮对数据进行多项更改
- r - 哪个 Spark 包适合使用插入符号?
- c - 如何通过蒙特卡罗模拟充分利用多线程?