开发软件时,界面总会生用户输入的局部,这个时段前端开发人员都见面想在吃用户输入的内容加以一个格式校验。比如说为用户输入手机号码,那么就算要求对方但能够输入11各数字,当然要做到最好还要判断前方三个是否合法。那么对用户输入校验有啊通用的国策也?下面先由开发者的角度来拘禁,可以以用户输入分成两栽。
36:二进制分类
- 查看
- 提交
- 统计
- 提问
说到底时间限定:
1000ms
内存限制:
65536kB
描述
倘若以一个恰好整数化为二向前制数,在这个二迈入制数中,我们将数字1的个数多于数字0的个数的立即类二上前制数称为A类数,否则就如该也B类数。
例如:
(13)10 =
(1101)2,其中1之个数为3,0之个数为1,则称此数为A类数;
(10)10 =
(1010)2,其中1的个数为2,0之个数也为2,称此数为B类数;
(24)10 =
(11000)2,其中1的个数为2,0之个数为3,则称此数为B类数;
先后要求:求来1~1000内部(包括1暨1000),全部A、B两好像数之个数。
输入
无。
输出
一行,包含两个整数,分别是A类数和B类数的个数,中间用么空格隔开。
样例输入
(无)
样例输出
(不提供)
来源
NOIP1995复赛 普及组 第三题
1 #include<iostream>
2 using namespace std;
3 int alei;
4 int blei;
5 int main()
6 {
7 for(int i=1;i<=1000;i++)
8 {
9 int yi=0;
10 int ling=0;
11 int now=i;//记录i的值
12 while(now!=0)
13 {
14 int r=now%2;
15 if(r==1)yi++;
16 else if(r==0)ling++;
17 now=now/2;
18 }
19 if(yi>ling)alei++;
20 else blei++;
21 }
22 cout<<alei<<" "<<blei;
23 return 0;
24 }
- 用户之输入不会见于代码当中以,只是略的出入库和界面显示,比如说QQ用户写了一个签名,这个签名本身就是没啊格式限制,各种火星文都可以,同时代码当中也无关心这个,用户怎么输入的,将来本封不动的在界面显示出来就是执行了。
- 用户之输入会于代码当中给用到,比如说用户填入了协调之出生年月日,后面来只力量,需要针对用户的年做各种统计排序、做图做表。对于这种用户输入的校验就设就格外细,稍不留意,就会被自己背后的效力带来十分累。比如说有私房非要是说好是2010年20月80日诞生之,这虽是伪数据,后面的统计排序、做图做表都会产生问题。
对第一栽情形,尽量做校验就实行,也就是是自及一个好提醒的企图就是执行了。对于第二种植情况,要水到渠成准确校验,一定要是包用户的数据未可知对软件之旁功能造成麻烦。当然,再好之校验也避免不了用户乱来,比如说用户不说自己身高3米,这为只能接受了,你也非可能做更的校验。
说到底加几个小贴士
- 正规的输入校验,网上发出成的,一定要以史为鉴,不要自己再次发明轮子
- 尽量用控件被用户输入信息,比如说时间信息,位置信息,将用户犯错的恐怕降低到低
- 实质上没啊好校验的时候,就变瞎校验
- 别时候都要判用户输入的情节的尺寸,一定要是装一个长短限制,避免恶意用户之攻击