C语言 |
您所在的位置:网站首页 › java实验身份证号码的分析 › C语言 |
前言
为什么我这个萌新要来写这篇文章?事情还要从上周三说起。 在上周三的程序设计基础课上,我们老师给我们全班同学布置了一项题为《实验一:查验身份证》的实验作业,这也是我第一次接触到实验作业,作为一名开学不到一个月的大一新生,这项作业对我来说,还是不简单的。接到这项作业后的第二天,我怀着无比愧疚的心情打开CSDN,想要学(fu)习(zhi)一下前辈们解决这道题的代码,结果搜索无果,只搜到了用Python解决类似题目的方法,于是我陷入了沉思———— 我该怎么办 ,老师只给了一个星期的时间,完不成会影响期末考试的分数,万一挂科了。。。。。。 咦~,既然CSDN上还没有相应的文章,我为什么不能弥补它的空白,于是我花了几个小时去学习同学写的代码,并写了属于自己的代码,又自学用软件画出来程序框图,完成了我的作业。 这是我——一个萌新开始写文章的初衷,它会激励我不断地去成长。 接下来上—— ——正文 题目 实验一:查验身份证 一、实验目的: 正确定义一个能够存储非常大的整数的类型;熟练应用嵌套的if语句和switch语句实现多分支结构程序设计,能够根据不同状态取出不同值并做计算; 熟练应用for()、while()和do-while()三种语句实现循环结构的设计; 灵活运用break和continue语句控制循环过程的流向;能够利用循环结构取出一个整数各个位中的数字;熟悉简单的调试程序方法,如单步调试、设置信息的输出等;通过对身份证号的校验码了解信息系统编码中校验码的意义、原理及真伪的判定。 二、实验要求:一个合法的身份证号码共18位,由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值: Z: 0 1 3 4 5 6 7 8 9 10(删掉了2) M:1 0 9 8 7 6 5 4 3 2(删掉了2对应的X) 现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。 输入、输出格式:输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码,18位必须全部是数字。 不检验身份证前17位是否合理,只检查对前17位计算出的校验码是否与身份证第18位一致。如果一致,则输出“身份证号 passed”,否则输出“身份证号 Fail”。 输入、输出样例1:2 320124198808240056 320124198808240056 Passed 110108196711301866 110108196711301866 Fail 输入样例2:2 320124198808240056 320124198808240056 Passed 110108196711301862 110108196711301862 Passed 三、实验内容和结果:(将实验完成中的一些内容记录于此,包括算法流程图、程序源代码、测试用例、运行结果截图、调试过程等) 四、实验总结: (描述实验过程中的收获和遇到的困难) 五、思考与拓展:1.在没有学习一维数组之前,现在我们是如何存储一批相同类型的数据的?大概有两种方法,第1种,定义一个变量,所有数据都保存在这一个变量中;第2种,定义一批简单变量,不同数据存储在不同的变量中。试问,第1种方法在一批数据处理过程中有什么缺陷?如果这批数据要在循环结构中处理的话,第2种方法适合吗? 2.一般我们处理的整数定义为int类型即可,如果整数的位数超出了int类型所能表示的数据范围时,可以定义为long long int类型,为什么呢?还有其它数据类型可以提高数据的表示范围吗?它与整数的操作有什么不同吗? 3. 身份证号码的校验码末位实际包含字符“X”,在学习了字符数组后我们就可以对身份证按照字符串处理了,并且保存在数组中,保存在数组中的数据可以重复使用。届时,大家可以重新设计本实验,解决当前不能解决的问题。 ——————解答—————— 三、实验内容和结果:(将实验完成中的一些内容记录于此,包括算法流程图、程序源代码、测试用例、运行结果截图、调试过程等) 1.算法流程图(自己用 亿图图示 画的) 2.源代码 #include int main() { int QuanZhong[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; int z[10]={0,1,3,4,5,6,7,8,9,10}; int m[10]={1,0,9,8,7,6,5,4,3,2}; int x[18]; int n, i, j, k, l, sum, c; scanf("%d", &n); for(i=1;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |