Wind咨讯南京高校算法竞赛试题:输入ID号,提取出生日期
2014-05-28 14:42
393 查看
本来5分钟就写完的程序,后来在输入设计的测试用例时发现了严重的BUG,即年月日没有判断。
好吧,这又花了我十几分钟构思逻辑结构,考虑了所有的情况之后,将逻辑结构简化到最精简,程序如下:
#include <iostream>
#include <cstring>
using std::cin;
using std::cout;
using std::endl;
#define N 100
#define ID_LEN 18
int main(int argc, char *argv[])
{
char str
;
int str_len,i=0;
cout<<"Input your ID numer, 18-word string: " <<endl;
cin>>str;
str_len = strlen(str);
if(str_len != ID_LEN)
{
cout<<"Input string number is not 18!"<<endl;
exit(1);
}
while(i<ID_LEN)
{
// 合法字符识别
if( (i <= ID_LEN-1 && (str[i] >='0' && str[i] <='9')) || (i == ID_LEN-1 && str[i] =='X') )
{
// ID合法并输出日期
if( i==ID_LEN-1 )
{
cout<<"Your Birthday Info is: "<<std::endl;
for(int j=6;j<=13;j++)
{
cout<<str[j];
}
cout<<endl;
}
// 月判别
if( (i==10 && str[i]>'1') || (i==11 && str[i-1]=='0' && str[i]=='0') || (i==11 && str[i-1]=='1' && str[i]>'2') )
{
cout<<"Wrong Month Info!"<<endl;
exit(1);
}
// 日判别
if( (i==12 && str[i]>'3') || (i==13 && str[i-1]=='0' && str[i]=='0') || (i==13 && str[i-1]=='3' && str[i]>'1') )
{
cout<<"Wrong Data Info!"<<endl;
exit(1);
}
++i;
}
else
{
cout<<"Exist Unavailable Words!"<<endl;
exit(1);
}
}
return 0;
}
好吧,这又花了我十几分钟构思逻辑结构,考虑了所有的情况之后,将逻辑结构简化到最精简,程序如下:
#include <iostream>
#include <cstring>
using std::cin;
using std::cout;
using std::endl;
#define N 100
#define ID_LEN 18
int main(int argc, char *argv[])
{
char str
;
int str_len,i=0;
cout<<"Input your ID numer, 18-word string: " <<endl;
cin>>str;
str_len = strlen(str);
if(str_len != ID_LEN)
{
cout<<"Input string number is not 18!"<<endl;
exit(1);
}
while(i<ID_LEN)
{
// 合法字符识别
if( (i <= ID_LEN-1 && (str[i] >='0' && str[i] <='9')) || (i == ID_LEN-1 && str[i] =='X') )
{
// ID合法并输出日期
if( i==ID_LEN-1 )
{
cout<<"Your Birthday Info is: "<<std::endl;
for(int j=6;j<=13;j++)
{
cout<<str[j];
}
cout<<endl;
}
// 月判别
if( (i==10 && str[i]>'1') || (i==11 && str[i-1]=='0' && str[i]=='0') || (i==11 && str[i-1]=='1' && str[i]>'2') )
{
cout<<"Wrong Month Info!"<<endl;
exit(1);
}
// 日判别
if( (i==12 && str[i]>'3') || (i==13 && str[i-1]=='0' && str[i]=='0') || (i==13 && str[i-1]=='3' && str[i]>'1') )
{
cout<<"Wrong Data Info!"<<endl;
exit(1);
}
++i;
}
else
{
cout<<"Exist Unavailable Words!"<<endl;
exit(1);
}
}
return 0;
}
相关文章推荐
- 求出此人的年龄。 C语言编程输入某人出生日期(y1:m1:d1:)和今天的日期(y2:m2:d2)
- 用JS实现自动提取身份证的出生日期
- 【算法竞赛练习题】提取拼音首字母
- 输入某人出生日期,计算年龄和距60岁的天数
- 基础算法8:提取出输入字符串中的域名或IP字符串
- access中[身份证号]字段有效性规则的代码实现,以及自动从[身份证号]提取出生日期和性别
- 根据出生日期得到是该年的第几天,带一点算法,不用一个月份一个月份的加
- 匹配身份证,并提取出生日期
- 例题:输入您的出生日期,判断你的星座,主要练习使用datetime类及if else语句。很实用
- 要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到 Student 类中作为类的私有属性。创建一个 Student 类型的对象数组,对学号进行 升序排序并输出
- SQL根据出生日期计算年龄的两种算法
- 、输入某人出生日期(以字符串方式输入,如1987-4-1)使用DateTime和TimeSpan类,(1)计算其人的年龄;(2)计算从现在到其60周岁期间,总共多少天。
- 输入身份证自动生成出生日期(2)
- 【随笔】关于算法竞赛中使用文件输入输出和文件名的规定等问题
- EXCEL中如何提取身份证出生日期和性别信息以及检验身份证号码的正确性
- 用JS实现自动提取身份证的出生日期
- JAVA 通过输入的出生日期,计算出岁数
- JS根据身份证号提取出生日期并计算年龄
- 根据输入显示一个人的出生日期(我的第二个python程序)
- 一道简单的算法题:输入日期(JAVA)