标签:
一、程序要求
对于输入的年份,判断是否是闰年。
是闰年则输出“该年份为闰年”,不是闰年则输出“该年份不是润年”。
对于非法的输入,返回错误信息。
二、测试用例
序号 | 测试用例 | 期望输出 | 实际输出 |
1 | 0 | 该年份为闰年 | 该年份为闰年 |
2 | 1999 | 该年份不是润年 | 该年份不是润年 |
3 | 2000 | 该年份为闰年 | 该年份为闰年 |
4 | 2008 | 该年份为闰年 | 该年份为闰年 |
三、关键代码
#include <cstdio>
#include <cstdlib>
int main()
{
int year;
while(~scanf("%d",&year))
{
printf(((year % 4 == 0 && year % 100 != 0) ||year%400==0) ? "该年份是闰年\n" : "该年份不是闰年\n");
system("pause");
}
return 0;
}
四、测试结果
从结果中可以看出,对于非法字符,程序没有做任何处理,因此造成了输出的错误。因此,下面将使用对程序进行改进。
五、非法输入检测的改进
对于字符串转换:
在C标准库里面,可以使用atoi函数。
在C++标准库里面,使用stringstream函数。
在java或者c#中,都可以使用parse函数。
这里以java中的parse函数为例:
public static boolean tryParse(String str){
try{
Integer.parseInt(str);
return true;
}
catch(NumberFormatException e){
e.printStackTrice();
return false;
]
}
用户输入的数字正确,将会返回true,输入非法字符,将会返回false,并且抛出NumberFormatException异常.
这将达到判断非法输入的功能。
标签:
原文地址:http://www.cnblogs.com/byzantine/p/4397827.html