1108习题答案与分析

今天是光棍节……这个光棍节终于不是光棍了。

好吧 这都是题外话,进入正题。

我上一篇发表的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:代码都是我手打的,请无视大小写。。还有一些语法小错误。。。

转载于:https://www.cnblogs.com/Dawn-z/archive/2012/11/11/2764862.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值