资源描述
北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(北京理工大学乐学 C 语言编程汇编(word 版可编辑修改))的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)的全部内容。北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)2018 学年第一学期 C 语言试题汇编目录:(O(_)O 同学们乐学 C 语言学习的好助手来啦!)19。判断三角形形状20.【小学生】计算时钟的夹角22.【小学生】找出最大素数24。再算日期(根据星期求日期)25。【小学五年级】确定母亲节27。【中学】寻找特殊偶数28。【中学】寻找阿姆斯特朗数30。【中学】求最后 3 位数值31。【图形】数字菱形32.【图形】空心的倒三角型34。【日期】计算后续日期35.【中学】零钱换整钱36。【图形】空心数字梯形37.晕(回形方阵)38。【中学】科学记数法39.【中学】整数问题40.数制转换41。计算通用产品代码(UPC)的校验位42.五年级小学生的题目43.【日期】黑色星期五(数组)H【日期】身份证的奥秘H 高精度加减法44.判断二进制对称数45。【字符】合并字符串46.猜数字47。【大学】北理工的恶龙48。【数列】等值数列段49。扫雷50.【字符】压缩文本文件H。安全的密码H.子数整除*51。小蜜蜂52.回文字符串-递归53。计算子字符串个数54.【小学递归】杀鸡用牛刀要用递归啊!55。【中学】求最大公约数递归56。【大学递归】求解平方根57。【数列递归】求序列之和-递归H 铺地板*(之字方阵)58.车辆限行59。采用指针对数组进行排序*60.合并排序61。对一个整数数组排序北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)H 二维数组排序*62。全能战士63。三角形是一个永不过时的话题64。学生成绩排序65.大家一起做游戏*66。【大学】恭喜发财 利是窦来67。建立正序链表68。链表排序69。链表移动70.求循环节H。链表处理*其它:1。期中测试 12。期中测试 23。期中测试 34。期中测试(周青班)15.期中测试(周青班)26.期中测试(周青班)37。计算字符串中某字符串出现次数8。编写程序:从键盘输入两个字符串,找出其中没有同时出现在两个字符串中的字符.9.合并删除并排序10.拱猪积分11。合并果子12.大数分解(分解质因数)13.在指定字符后添加字符串14.合伙捕鱼15。统计字符串中各字符的数量16.从指定位置开始删除字符17。按要求生成矩阵18。谁能出线19.数列 Sum20。李仲君小组:排列字符串21.字符 M22。数字三角形23。另一种空心数字梯形24.字符 X25。字符 X 升级版26。矩阵转置 4527。hybest:A+B28。寻找矩阵鞍点29.洗牌30.整数拆分正文部分:正文部分:北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)19.判断三角形形状:19.判断三角形形状:要求:输入三角型的三条边,判断三角形的形状。假设输入的三边边长均0。(提示:本题中应该要用到 if 语句嵌套)输入:三角型的 3 条边的长度(int 型).输出:等边三角形:equilateral triangle。等腰三角形:isoceles triangle.不构成三角形:nontriangle.一般三角形:triangle。测试输入测试输入期待的输出期待的输出以文本方式显示1.2 2 2以文本方式显示1.equilateral triangle.以文本方式显示1.3 2 2以文本方式显示1.isoceles triangle。以文本方式显示1.1 3 1以文本方式显示1.nontriangle.以文本方式显示1.3 4 5以文本方式显示1.triangle。#includestdio.hmain()int a,b,c;scanf(%d%d d,a,b,c);if(a+b=c|a+c=bb+c=a)printf(”non-triangle。n);elseif(a=b|b=c|a=c)if(a=b&b=c&c=a)printf(equilateral triangle。n);else printf(”isoceles triangle.n”);else printf(”triangle。n”);北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)20。计算时钟夹角:20。计算时钟夹角:输入:输入:每组测试数据包含两个数字:第一个数字代表小时(大于 0 小于等于 12),第二个数字代表分(在区间 0,59 上)。输出:输出:对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。输出格式如下所示。再看一看,想一想:是否可以不用 if 语句,只使用 printf 函数来简化你的程序?#includestdio。h#includestdlib.hmain()int a,b;float c,e;scanf(”d%d,a,&b);if(b=0)e=180-30abs(a-6);printf(”At%d:00 the angle is。1f degrees.n,a,e);else c=30*a5.5b;if(c=180&c=0&c=180)printf(”At%d:%02d the angle is%.1f degrees.n”,a,b,c);if(c180)e=360c;printf(”At d:%02d the angle is%.1f degrees.n”,a,b,e);北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)22。找出最大素数:22。找出最大素数:输入:输入:取值范围输出:输出:该范围内的最大素数#includestdio.hmain()int a,b,c;scanf(%d”,a);b=a-1;while(b=2)c=ab;if(c=0)a-;b=a1;else b-;printf(The max prime number is d.n”,a);24。再算日期:24。再算日期:再次给出任意一个年月日(年1900),现在我们不能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几.输入:输入:年 月 日输出:输出:06。星期日用 0 表示,星期一用 1 表示,星期二用 2 表示。.。.星期六用 6 表示。假设年份大于 1900。先想一想:我们现在只会使用 if 语句,该如何建立数学模型?include31|c1)s=0;if(b=4|b=6|b=9|b=11)if(c30c1)s=0;if(b=2)if(g=0f!=0&e=0)if(c29|c1)s=0;else if(c28|c1)s=0;if(s=0)printf(”day is error。n);break;s+;c-;if(c=0)if(b=5|b=7|b=10|b=12)c=30;if(b=1|b=2|b=4|b=6b=8b=9|b=11)c=31;if(b=3)if(g=0f!=0&e=0)c=29;elsec=28;b-;if(b=0)b=12;a-;北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)if(s!=0)printf(ldn,s%7);25.确定母亲节:25.确定母亲节:母亲节是每年的五月第二个星期天,针对输入的年份,计算该年的哪一天是母亲节。输入:输入:年份输出:输出:日期(5 月的哪一天)includestdio.hmain()int a,ri,c;int d,f,g,e;scanf(d”,a);d=(a1900)4;f=(a1900)100;g=(a-1600)400;if(g=0|f!=0&d=0)ri=365*(a-1900)+(a1900)/4(a-1900)/100+(a-1600)/400+121;e=ri7;if(e!=0)c=15-e;else c=8;printf(”%dn”,c);else ri=365*(a-1900)+(a-1900)/4-(a-1900)/100+(a-1600)/400+121;e=ri%7;if(e!=0)c=15e;else c=8;printf(dn,c);27.寻找特殊偶数:27.寻找特殊偶数:北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)背景背景有一种特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间内的这类偶数。输入输入所要寻找的四位偶数的范围.每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到 0,输入结束。输出输出列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。#includestdio.h main()int a,b,i,j=0;int d,e,f,g;scanf(d%d”,&a,&b);while(a!=0b!=0)if(a1000|b9999|ab)printf(Errorn);else i=a;while(i=b)g=i10;f=i/10%10;e=i/100%10;d=i/1000;if(g=f|g=e|g=df=e|f=de=d)i=i+2;else j+;printf(%d ,i);i=i+2;printf(n”);printf(”counter=dn”,j);j=0;scanf(%d%d”,a,b);28。寻找阿姆斯特朗数:28。寻找阿姆斯特朗数:北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)请编写一个程序寻找一种特殊整数:一个 n 位的正整数等于其各位数字的 n 次方之和n 次方之和。例如:407=444+000+777。所以 407 就是一个特殊数.输入:正整数的位数 n(n=6).输出:所有此 n 位特殊数.每个数占一行。若不存在符合条件的特殊数,则输出提示:No output。”;若存在,则从小到大进行输出.#include main()int a,b,c,d,e,f,g;int o=1,p=1,q=1,r=1,s=1,t=1;int n;int shang,xia;int i=1,j,h=0,k=1,l=1;scanf(”d”,&n);while(i=n)k=10k;i+;shang=k-1;xia=k/10;j=xia;while(j=shang)a=j%10;b=j/10%10;c=j/100%10;d=j/1000%10;e=j/1000010;f=j/100000%10;while(l=n)o=ao;p=pb;q=q*c;r=rd;s=s*e;t=t*f;l+;g=o+p+q+r+s+t;if(j=g)printf(”dn”,j);h+;j+;北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)l=1;o=1,p=1,q=1,r=1,s=1,t=1;if(h=0)printf(No output。n);31。打印数字菱形:31。打印数字菱形:这是非信息类 2013 年出的题目,大家来看看,你会做吗?输入 n 的值,输出如下例(n=4)所示的数字菱形.4 434 43234 4321234 43234 434 4 输入:输入:n输出:输出:数字菱形友情提示:友情提示:同学们总结一下打印星号组成的实心图形程序的编程思路:第一步,打印星号组成的正方形;第二步,改变每行星号的个数,打印每行星号数量不一样的图形;如果是空心图形,每行第一个和最后一个位置输出星号,其他位置输出空格。现在我们练习输出变化的字符,在打印星号图形的基础上,原来输出号的位置,将 printf(”);改为 printf(”%2d,x);当然,原来输出一个号的地方只占一个字符的位置,现在都要改为 2 个字符的位置,如果输出的是数字且多于 2 个,则要是3d 或4d 了。x 是多少呢?则要寻找其规律,就是该输出位置与所在行列的关系。注意给出的测试用例,输出的数字是左对齐啊。不用数组就可以完成。includemain()int i=1,j=1,n,m;scanf(”%d”,n);m=n;while(i=2*n1)for(;i=n;i+)for(;j=n-i;j+)printf();for(m=n ;jni&j=n;j+)printf(-2d”,m);m;for(m=n+1i ;jn&j=n+i-1;j+)m+;printf(”%2d”,m);北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)printf(”n”);j=1;for(;in&i=2*n-1;i+)for(;ji-n&j=n;j+)printf(2d,m);m-;for(m+;jn&j=3*n1i;j+)m+;printf(%-2d”,m);printf(n);j=1;32.打印空心倒三角形:32.打印空心倒三角形:测试输入测试输入期待的输出期待的输出测试用例 1以文本方式显示1.3以文本方式显示1.*2.*3.测试用例 2以文本方式显示1.5以文本方式显示1.*2.*3.*4.5.#includemain()int i=2,j=1,h;scanf(%d”,h);for(;j=2*h1;j+)printf(*”);printf(”n);if(h1)while(i=h)for(j=1;ji;j+)printf(”);for(;j=i;j+)printf(”);for(;ji&j2*h-i;j+)printf(”);for(;j=2hi;j+)printf(”*);北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)printf(”n”);i+;34.计算后续日期:34.计算后续日期:我们经常要计算,从今天往后 N 天之后是哪一天(哪年哪月哪日)。现在我们就可以编写一个程序,推算指定日期之后的第 N 天是什么日期。输入:年 月 日 N输出:(年月日+N 天后的)年。月。日includemain()int a,b,c;int nian,yue,ri;int m;scanf(”d d%d d,a,&b,c,&m);nian=a;yue=b;ri=c;while(m0)switch(yue)case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(ri=31)ri+;if(ri31)ri=1;yue+;break;case 4:case 6:case 9:case 11:if(ri=30)ri+;if(ri30)ri=1;yue+;break;case 2:if(nian400=0|nian100!=0&nian4=0)if(ri29)ri=1;yue+;else if(rimain()int i,j,k,n,m;/k 为操作数 scanf(d d,n,&m);/n 行,m 首for(i=0;in;i+)if(i=0)for(j=0;j=(3n3)/2;j+)printf(2d”,(m+j)%10);北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)if(n2=1)j-=2;elsej-;for(;j=0;j)if(j!=0)printf(%-2d”,(m+j)10);elseprintf(%dn”,m);elseif(i=n-1)for(j=1;jn;j+)printf();for(j=0;j=(n1)/2;j+)printf(%2d”,(m+i+j)10);if(n2=1)j=2;elsej-;for(;j=0;j-)if(j=0)printf(”dn,(m+i)%10);elseprintf(”2d”,(m+i+j)10);elsefor(j=0;ji;j+)printf();printf(”%-2d,(m+i)10);for(j=1;j=3*n42i;j+)printf(”);printf(%dn,(m+i)%10);37.晕(回形方阵):37.晕(回形方阵):n。正方形的边长输出:输出:边长为 n 的数字回形方阵。北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)期待的输出期待的输出时间限制以文本方式显示1.3以文本方式显示1.1 2 32.8 9 43.7 6 5以文本方式显示1.4以文本方式显示1.1 2 3 42.12 13 14 53.11 16 15 64.10 9 8 7#includestdio.hmain()int a1010;int i=0,j=0,n,k,b,m=1;/i、j 行列,m 计数字,k 为循环总数,b 为循环次数。scanf(d”,n);k=(n+1)/2;for(b=1;b=k;b+)for(i=b1,j=b-1;j=n-b;m+,j+)ai j=m;i+;for(j=n-b;i=b-1;m+,j)aij=m;i-;for(j=b1;i=b;m+,i-)aij=m;j+;for(i=0,j=0;i=n1;i+)for(j=0;j=n1;j+)if(jn-1)printf(”3d,aij);if(j=n1)printf(3dn”,aij);38。科学记数法:38。科学记数法:对于非常大或者非常小的数据,我们通常用科学记数法来表示。例如在科技文献和电脑中经常遇到的 2。3106(计算机中的科学记数法表示为:2.3E6),或者 9。18105(科学记树法表示:9.18E-5)这种类型的数据。北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)输入:输入:用科学记数法表示的数据.即为符合 C 语言表示的科学记数法表示。输出:输出:该数据的双精度表示说明:说明:输入数据的精度不高于小数点后 50 位。输入数据时,在实数实数和幂幂之间有空格空格进行分隔,空格个数不定。结果保留到小数点后 8 位,如不足 8 位用 0 补足,超过 8 位则截断,不进行四舍五入的处理。输入输入输出输出以文本方式显示1.1.2345 E 3以文本方式显示1.1234.50000000以文本方式显示1.1.2345 e-3以文本方式显示1.0.00123450以文本方式显示1.2。23456789123456789123456789 e 20以文本方式显示1.223456789123456789123.45678900以文本方式显示1.1 E 0以文本方式显示1.1.00000000以文本方式显示2。2345678901234567890 E 1以文本方式显示22。34567890#includemain()char a100;char temp;int i,j,k;scanf(”s*c d”,&a,i);k=strlen(a);for(j=k;j=99;j+)aj=0;/注意变量范围 if(i0)for(j=1;j=1+i;j+)aj=aj+1;a1+i=.;for(j=0;j=9+i;j+)printf(”c,aj);if(i0)i=-i;for(j=k1;j=2;j-)北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)aj+i=aj;ai+1=a0;for(j=0;j=i;j+)aj=0;a1=。;for(j=0;jmain()int w,i=0;/w 为位数,i 为计数器 long powerf(int);long p,h,k,x,t,n;/h 为操作数,k 为余数,x 为前 t 位操作数 scanf(”%d”,w);if(w3)for(h=p=powerf(w-1);h1;x=x/10,t-)k=x%(tt);if(k!=0)break;if(t=1)i+;printf(”dn,i);long powerf(int n)/n 是位数 long i=1;if(n=0)return i;elsefor(n-;n0;n-)i*=10;return i;40。数制转化40。数制转化:我们通常使用的都是十进制的数字,但其实在生活中也经常会使用其它进制。这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如 12 和 5,在十进制下它们是不等的,但若 12 使用 3 进制而 5 使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制,12 和 5 就可以是相等的。程序的输入是两个数字 M 和 N(其十进制的值不超过 1000000000),它们的进制在 236 之间。对于十以下的数字,用 09 表示,而十以上的数字,则使用大写的 AZ 表示。求出分别在 236 哪种进制下 M 和 N 相等。若相等则输出相应的进制,若不等则输出错误信息。当然了,对于多种可能成立的情况,找出符合要求的进制最小的一组就行了.信息的格式见测试用例。期待的输出期待的输出时间限制时间限制以文本方式显示1.12 5以文本方式显示1.12(base 3)=5(base 6)以文本方式显示1.123 456以文本方式显示1.123 is not equal to 456 in any base。北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)#includeincludemath。h#includestring.hmain()char a50,b50;/数组名和变量名不要重复!int c50,d50;int i,j,m,n;long hec,hed;int p,q,max,k,l;/k,l 作进制的循环变量 scanf(ss,a,b);m=strlen(a);/m,n 为数组内循环提供控制 n=strlen(b);for(i=0;i=max)max=ci;p=max+1;for(i=0,max=d0;i=n-1;i+)/排序,减少进制运算复杂程度;p,q 为最低进制数,max 为最大数 if(di=max)max=di;q=max+1;for(k=p;k=36;k+)/k,l 作进制的循环变量 for(l=q;l=36;l+)for(j=0,hec=0;j=m1;j+)hec=hec+cj(pow(k,j);for(j=0,hed=0;j=n1;j+)hed=hed+dj(pow(l,j));if(hec=hed)break;if(hec=hed)北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)break;if(hec=hed)for(i=0;i=m1;i+)printf(c,ai);printf((base%d)=”,k);for(i=0;i=n1;i+)printf(c,bi);printf(”(base%d)n,l);elsefor(i=0;imain()int a11;int i,b=0,c=0,d;/累加器、乘器勿忘赋初始值 for(i=0;i=10;i+)scanf(”1d,ai);for(i=0;i=10;i+=2)b+=ai;for(i=1;i=10;i+=2)c+=ai;d=9-(3*b+c-1)%10;printf(”dn,d);42.五年级小学生的题目:42.五年级小学生的题目:那两个小朋友在不断进步,他们已经学会了负数和多位数,于是他们又开始进行游戏了。小明给出一堆整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。输入:输入:用逗号分隔的整数序列,及其运算符和等号输出:输出:最大数 op 最小数=结果说明:说明:本题目应该可以不使用数组就可以完成,关键是如何处理负数和减法。#include#includemain()char a100000,fu;int b1000;int i,j=0,k,l,lei=0,max,min;/如果是 long 的话 编译全线飘红 gets(a);k=strlen(a);fu=ak-3;for(i=0;ik;i+)if(ai=0)ai=ai-0;for(j=0,i=0;ibj)min=bj;switch(fu)case+:if(max=0 min=0&min0)printf(”d (d)=dn,max,min,max-min);if(min=0)printf(”d d=%dn,max,min,max-min);break;case:if(max=0&min=0)printf(”d*d=%dn,max,min,max*min);break;case/:if(max=0&min=0)printf(”d/%d=dn”,max,min,max/min);break;case:if(max0)printf(%d)(%d)=dn,max,min,max%min);if(max=0&min=0)printf(”%d%d=dn”,max,min,maxmin);break;43.黑色星期五43.黑色星期五在西方,星期五和数字 13 都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的十三日又恰逢星期五就叫”黑色星期五”。输入:输入:年份输出:输出:判断该年是否包含黑色星期五,如包含,给出具体日期#include /注意结构可以紧凑些/main()int a,b=1,c=13;int d,e,f,g,ri;/a 位年份,b 为月,c 为日;ri 为距离 1900 年 1 月 1 日有几日;d,f,g,为辅助变量;e 为星期几;int hei12;/用作存放符合要求的月份北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)int i=0,t=1;/i 作黑色星期 5 的计数器,scanf(%d”,a);d=(a1900)%4;f=(a-1900)%100;g=(a-1600)400;for(b=1;b=12;b+)/求星期部分 if(g=0|f!=0&d=0)/闰年部分 ri=365(a-1900)+c+(a-1900)/4-(a1900)/100+(a1600)/4001;if(b=1b=3|b=5|b=7|b=8b=10|b=12)switch(b)case 1:ri=ri ;e=ri7;break;case 3:ri=ri+60 ;e=ri7;break;case 5:ri=ri+121;e=ri7;break;case 7:ri=ri+182;e=ri7;break;case 8:ri=ri+213;e=ri%7;break;case 10:ri=ri+274;e=ri%7;break;case 12:ri=ri+335;e=ri%7;break;if(b=4b=6b=9|b=11)switch(b)case 4:ri=ri+91 ;e=ri7;break;case 6:ri=ri+152;e=ri%7;break;case 9:ri=ri+244;e=ri%7;break;case 11:ri=ri+305;e=ri7;break;if(b=2)ri=ri+31;e=ri%7;else /非闰年部分 ri=365*(a1900)+c+(a-1900)/4(a-1900)/100+(a-1600)/400;if(b=1|b=3|b=5|b=7|b=8b=10|b=12)switch(b)case 1:ri=ri;e=ri%7;break;case 3:ri=ri+59;e=ri7;break;case 5:ri=ri+120;e=ri7;break;case 7:ri=ri+181;e=ri7;break;case 8:ri=ri+212;e=ri7;break;case 10:ri=ri+273;e=ri7;break;case 12:ri=ri+334;e=ri7;break;if(b=4|b=6b=9|b=11)switch(b)case 4:ri=ri+90 ;e=ri7;break;case 6:ri=ri+151 ;e=ri%7;break;case 9:ri=ri+243 ;e=ri7;break;case 11:ri=ri+304;e=ri7;break;if(b=2)ri=ri+31;e=ri7;/判断部分 if(e=5)北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)i+;heit=b;t+;/输出部分 if(i1)printf(”There are%d Black Fridays in year%d.n”,i,a);printf(They are:n”);for(t=1;t=i;t+)printf(%d/%d/13n,a,heit);if(i=1)printf(”There is d Black Friday in year d.n,i,a);printf(It is:n”);for(t=1;t=i;t+)printf(d/%d/13n,a,heit);H:身份证的奥秘:H:身份证的奥秘:18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB116431999公民身份号码中做了明确的规定.GB116431999公民身份号码 为 GB11643-1989社会保障号码 的修订版,其中指出将原标准名称社会保障号码更名为”公民身份号码”,另外 GB11643-1999公民身份号码从实施之日起代替 GB116431989。GB116431999公民身份号码主要内容如下:一、范围该标准规定了公民身份号码的编码对象、号码的结构和表现形式,使每个编码对象获得一个唯一的、不变的法定号码.二、编码对象公民身份号码的编码对象是具有中华人民共和国国籍的公民。三、号码的结构和表示形式1、号码的结构公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。2、地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按 GB/T2260 的规定执行。3、出生日期码表示编码对象出生的年、月、日,按 GB/T7408 的规定执行,年、月、日代码之间不用分隔符。4、顺序码表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性.5、校验码(1)十七位数字本体码加权求和公式S=Sum(Ai*Wi),i=0,.。,16,先对前 17 位数字的权求和 Ai:表示第 i 位置上的身份证号码数字值 北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)Wi:表示第 i 位置上的加权因子 Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2(2)计算模Y=mod(S,11)(3)通过模得到对应的校验码Y:0 1 2 3 4 5 6 7 8 9 10 校验码:1 0 X 9 8 7 6 5 4 3 2四、举例如下:北京市朝阳区:11010519491231002X 广东省汕头市:44052418800101001415 位的身份证号升级办法:15 位的身份证号:dddddd yymmdd xx p18 位的身份证号:dddddd yyyymmdd xx p y其中 dddddd 为地址码(省地县三级)yyyymmdd yymmdd 为出生年月日xx 顺号类编码p 性别15 位的 yy 年升为 18 位后,变成 19yy 年,但对于百岁以上老人,则为 18yy 年,此时,他们的最后三位顺序码为 996,997,998 或 999 来标记。输入输入输入 n 组身份证号码,第一行为个数,以后每行为身份证号码。输出输出如果输入的身份证号码为 15 位,则将其升级为 18 位后显示输出;否则判断其是否为合法身份证号,并逐行输出。#includeint main()char a20019,b19;int n,i,j,Y,len200,s,w=7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2;scanf(dn,&n);for(i=0;in;i+)scanf(%s,ai);for(i=0;in;i+)leni=strlen(ai);if(leni!=15&leni!=18)printf(”Invalidn”);else if(leni=15)for(j=0;j6;j+)bj=aij;b6=1;if(ai13=9)b7=8;else北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)b7=9;for(j=8;j17;j+)bj=aij2;s=0;for(j=0;j17;j+)s=wj*(bj-48)+s;Y=s%11;switch(Y)case 0:b17=1;break;case 1:b17=0;break;case 2:b17=X;break;case 3:b17=9;break;case 4:b17=8;break;case 5:b17=7;break;case 6:b17=6;break;case 7:b17=5;break;case 8:b17=4;break;case 9:b17=3;break;case 10:b17=2;break;printf(sn,b);elses=0;for(j=0;jincludestdio。hmain()char a500,b500;int c500;int i,j,k,n,p,K,len,flag,d,bi,J,I;/n 为几个算式,p 为符号;scanf(%d”,n);for(d=1;d=n;d+)scanf(”%s,&a);len=strlen(a);for(j=0;jlen;j+)if(aj=+|aj=-)break;p=j;/符号所处位置;for(j=p+1,i=0;j-1)ck=aj,j-,k+;ck=0;/*很重要的啊/K=k;/c0是个位 for(k=0;k=b;flag=1,ba,ba if(plen-p-1)flag=0;/a 位数多,公式不对吗?!!if(plen-p1)flag=1;/b 位数多 if(p=lenp1)/你的 else 出了什么状况??ap=0;bI+1=0;/给 b 加终止符啊!bi=strcmp(a,b);if(bi0)flag=0;if(bi=0)printf(”0n);flag=-1;/没出效果,输出了符号 if(bi0)flag=1;if(flag=0)while(i!=-1&j!=-1)ck=ajbi;k+,i-,j-;if(j=0)while(j-1)ck=aj,j,k+;北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)K=k1;/c0是个位,cK是首位 for(k=0;k=K;k+)/退位 if(ck 0)ck=ck+10;ck+1=ck+1-1;for(k=K;ck=0;k-)for(;k=0;k-)printf(”%d,ck);printf(”n”);if(flag=1)while(i!=-1&j!=1)ck=bi-aj;k+,i-,j;if(i=0)while(i1)ck=bi,i,k+;K=k1;/c0是个位,cK是首位 for(k=0;k=K;k+)/退位 if(ck=0;k-)printf(”%d”,ck);printf(n”);44.判断二进制回文数:44.判断二进制回文数:一个数的等于它的反序数,则为对称数,编程:从键盘输入一个整数,判断其二进制是否为对称数,若是,输出 Yes,并输出该数和对应的二进制,否则输出 No.例如:输入 5 输出 Yes!5=101includemain()char a1000;北京理工大学乐学 C 语言编程汇编(word 版可编辑修改)int x,n,k=0,K,i=0,flag=0;scanf(”%d,&n);x=n;while(x!=0)ai=x%2;x=x/2;i+;ai=0;k=i1;K=i-1;for(i=0;ik;i+,k-)if
展开阅读全文