今天是光棍节……这个光棍节终于不是光棍了。
好吧 这都是题外话,进入正题。
我上一篇发表的1108的习题,现在开始一个一个分析与解答(怎么整的我跟老湿似的,哈哈)
1请用户输入身份证号,然后推断出其出生年月:
这道题主要考验的是string的一个方法subString,以及convert的运用,只要在数身份证号的生日、月份、日期的时候没有失误,这道题还是非常easy的,以下是代码:
console.writeline("请输入身份证号");
string id = console.readline();
string year = id.substring(6,4);
string month = id .substring(10,2);
string day = id.substring(12,2);//这三行是截取身份证号中的年,月,日;
int year1 = convert.toint32(year);
int month1 = convert.toint32(month);
int day1 = convert.toint32(day);//这三句是把截取出来的年月日转换为整形,可以在datetime中运用。
datetime birth = new datetime(year1,month1,day1);//这是将出生年月转换为datetime,方便设置格式
console.writeline("你的生日是{0}",birth.tostring("yyyy-MM-dd"));//设置birth的格式
2输入邮箱账号,截取邮箱的用户名:
这道题主要考验的是字符串中某个字符的定位,邮箱号的用户名肯定是在@这个符号的前面,只要找到@的位置,将@前面的字符截取出来就是用户名。
代码如下:
console.writeline("请输入你的邮箱账号");
string mail = console.readline();
int position = mail.indexof("@");//找出@的位置,以截取用户名
string name = mail.substring(0,position);//这是截取出来的邮箱名,以@为界限截取出@以前的所有字符
console.writeline("welcome!{0}",name);
3请用户输入出生年月,然后算出到现在的天数:
这道题用到了一直没有学过的timespan类型,当时做着道题也是用了不少的精力,不过最后做出来的时候还是挺有成就感的,这道题的难点就在于如何计算两段时间间隔的差,subtract这个方法的运用。代码如下:
console.writeline("请输入你的出生年份");
int year = convert.toint32(console.readline);
console.writeline("请输入你的出生月份");
int month = convert.toint32(console.readline);
console.writeline("请输入你的出生日");
int day = convert.toint32(console.readline);//前面代码是将用户输入的年月日转换为datetime可以识别的整型
datetime birth = new datetime(year,month,day);
datetime today = datetime.now;//上面两句话是的到两个时间,一个是生日,一个是当前时间
timespan span1 = today.subtract(birth);//timespan是表示一个时间间隔,subtract是将一个时间减去另一个时间,所以就等于将今天减去生日那一天,得出这两个时间的差
console.writeline("你的生日是{0},自{1}已经在这个世界度过了{2}天",birth.tostring("yyyy年MM月dd日"),today.tostring("yyyy年MM月dd"),span1.days);
//最后这句话是将用户的生日已经当前时间经格式化字符串输出,最后的span1.days是将这两个时间的差以天数打印出来,如果不设置格式的话,他会精确到毫秒……
4用取余的方法随机获取0-24的数字
这道题用到了random,所谓random,字如其意,随机的整型数字,如果用取余的方法的话,就不用直接设置random的值,而是用random的值去除以24得到的余数自然就是0到24的任何一个数字。
代码如下:
random rand = new random;
int num = rand.next();//next的作用是让rand返回一个int整型数字,括号里填的数字是他所生成数字的上限(不包括这个数字),当然,直接在括号里写上25更简单。。
console.writeline(num%24+1);//除以24是不能有24这个余数的,所以可以+1,或者除以25……
5用456这个数字依次吧4.5.6输出到屏幕上
这个题好像我没有描述的很清楚,不过我语文很差的,你懂得 - -,就是说用取余或者除法的办法取得这个数字的百,十,个位数字,并依次打印在屏幕上,就这么简单。但是这道题的难点就在于怎么取得十位的数字。代码如下:
int x = 456;
console.writeline(x/100);//输入百位数,so easy!
console.writeline(x%100/10);//十位数相对比较麻烦,我用的是先将456除以100取余,得到的余数再除以10,这样就提取出十位数了,个位数也是如此。
console.writeline(x%100%10);//这个就是将除以10变为取余,就能得到个位数了
6让用户输入性别和年龄,男性大于十八岁小于三十岁可以去当兵,剩下的不可以
这句话就开始用到判断语句了 就是所谓的if else语句,这道题看似只有两个判断条件,但是仔细分析还是需要一点细心的。
代码如下:
console.writeline("请输入你的性别");
string sex = console.readline();
console.writeline("请输入你的年龄");
int age = convert.toint32(console.readline);
if(sex=="男")
{
if(age<18)
{
console.writeline("你的年龄还太小。");
}else if(age>=18&&age<30)
{
console.writeline("抓去当兵");
}else
{
console.writeline("你太老了");
}
}else
{
console.writeline("女的就不要来凑热闹了");
}
这道题还是总结一下吧,这段语句中用到了嵌套语句,就是在if的语句中再嵌套一套if语句,不过相对也是非常好理解的,只要用户输入的性别为男,就再去判断他输入的年龄是否复合,在进行判断,如果输入的为女,那就直接输出性别不合适的语句。
7将用户输入的24小时制转换为12小时制打印在屏幕上
这道题相对也是非常简单,只要判断用户输入的数字是否大于12,然后减去12输出就可以了,也是一个if语句
代码如下:
console.writeline("请输入24小时时间:");
int hour = convert.toint32(console.readline());
if(hour<12)
{
console.writeline("现在是{0}时",hour);
}else if(hour>12&&hour<24)
{
console.writeline("现在是{0}时",hour-12);
}else if(hour == 24)
{
console.writeline("现在是0时");
}else
{
console.writeline("您输入的时间有误,请重新输入");
}
8判断平年闰年
这道题主要考验的是对平年闰年判断条件的把握,闰年是年份被400整除,还有一个就是被4整除,但不被100整除,这两个条件在c#里面写出来这道题就OK了
代码如下:
console.writeline("请输入年份");
int year = convert.toint32(console.readline());
if(year%400==0||year%4==0&&year%100!=0)//这是这一题的关键,这句话判断了平年闰年的条件
{
console.writeline("{0}年是闰年",year);
}else
{
console.writeline("{0}年是平年",year);
}
这是我在八号出的题目的前半部分,后半部分下午再整理。
PS:代码都是我手打的,请无视大小写。。还有一些语法小错误。。。