C语言典型例题讲解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2.寻找特殊偶数成绩10开启时间2014年11月4日星期二08:00折扣0.8折扣时间2014年11月19日星期三08:00允许迟交否关闭时间2014年11月26日星期三08:00背景有一种特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间内的这类偶数。输入所要寻找的四位偶数的范围。每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到0,输入结束。输出列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.300030202.604060903.00以文本方式显示1.30123014301630182.counter=43.60426048605260546058607260746078608260844.counter=101秒64M0测试用例2以文本方式显示1.91012.87-13.00以文本方式显示1.Error2.Error1秒64M0Code:#includestdio.hintmain(){intmaxnum,minnum,n,g,s,b,q,count=0;while(1){scanf(%d%d,&minnum,&maxnum);if(minnum==0&&maxnum==0)return0;if((minnum999&&minnum10000)&&(maxnum999&&maxnum10000)&&(maxnum=minnum)){for(n=minnum;n=maxnum;n++){if(n%2==0){q=n/1000;b=n%1000/100;s=n%100/10;g=n%10;if(q!=b&&q!=s&&q!=g&&b!=s&&b!=g&&s!=g){count++;printf(%d,n);}}}printf(\n);printf(counter=%d\n,count);count=0;}elseprintf(Error\n);}return0;}3.求最小m值成绩10开启时间2014年11月4日星期二08:05折扣0.8折扣时间2014年11月19日星期三08:05允许迟交否关闭时间2014年11月26日星期三08:05求满足下列不等式的最小m。1+2+3+4+......+m≥n例如:n=100,当m=14时,满足:1+2+3+4+...+13=91100,而1+2+3+4+......+14=105100。输入:n输出:m测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.100以文本方式显示1.141秒64M0Code:#includestdio.hintmain(){intmax,i=0,sum=0;scanf(%d,&max);while(summax){i++;sum+=i;}printf(%d\n,i);}邮票组合成绩10开启时间2014年11月12日星期三06:20折扣0.8折扣时间2014年11月26日星期三06:20允许迟交否关闭时间2014年12月3日星期三06:20背景:我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或几张的组合,可以满足不同邮件的不同的邮资。现在,邮局有4种不同面值的邮票。在每个信封上最多能贴5张邮票,面值可相同,可不同。输入:四种邮票的面值。输出:用这四种面值组成的邮资最大的从1开始的一个连续的区间。说明:如结果为10,则表明使用4张邮票可组合出1、2、3、4、5、6、7、8、9、10这些邮资。名词解释:邮资:就是你寄东西需要花多少钱。邮票面额:是由国家发行的具有固定价格的花纸片,被称为邮票。如果你寄东西,邮局称了重量,告诉你要240分。这样你就要贴邮票了。如果现在邮局的邮票有面值为80分、50分、20分和10分的四种,你就可以采用不同的组合得到240的邮资,例如:采用3张80分的可以凑出240分;或者24张10分的凑起来240分也可以。显然不同邮票的组合都可以得到同样一种邮资。测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.141221以文本方式显示1.Themaxis71.1秒64M0测试用例2以文本方式显示1.13712以文本方式显示1.Themaxis46.1秒64M0Code:#includestdio.hintmain(){inti[5],t[3126],n,n1,n2,n3,n4,temp=0;i[0]=0;for(n=1;n5;n++)scanf(%d,&i[n]);for(n=0;n3126;n++)t[n]=0;for(n=0;n5;n++){for(n1=0;n15;n1++){for(n2=0;n25;n2++){for(n3=0;n35;n3++){for(n4=0;n45;n4++){t[temp]=i[n]+i[n1]+i[n2]+i[n3]+i[n4];temp++;}}}}}for(n=0;n3124;n++){for(n1=n;n13125;n1++){if(t[n]t[n1]){temp=t[n];t[n]=t[n1];t[n1]=temp;}}}temp=0;for(n=0;n3125;n++){if(t[n]t[n+1])temp++;if(temp!=t[n+1])break;}printf(Themaxis%d.\n,temp-1);return0;}程序讲解示例:整数排排序成绩0开启时间2014年10月19日星期日03:15折扣0.8折扣时间2014年12月31日星期三03:15允许迟交否关闭时间2014年12月31日星期三03:15有一组整数,要将它们从小到大排序,去掉其中重复的数值。输入:第1行,输入整数N,表明接下来将有N(=100)个整数读入。第2~N行,输入N个这个数。输出:排序后的整数(去掉重复的数值)例如:输入:3(回车)757(回车)输出:57(回车)测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.32.755以文本方式显示1.571秒64M0测试用例2以文本方式显示1.52.10022以文本方式显示1.0121秒64M0Code:#includestdio.hintmain(){intn,m,l,i[100],temp;scanf(%d,&n);for(m=0;mn;m++)scanf(%d,&i[m]);for(m=0;mn-1;m++)for(l=m+1;ln;l++){if(i[m]i[l]){temp=i[m];i[m]=i[l];i[l]=temp;}}printf(%d,i[0]);temp=i[0];for(m=1;mn;m++){if(tempi[m]){printf(%d,i[m]);temp=i[m];}}printf(\n);}临时题1.单词排序成绩10开启时间2014年11月27日星期四02:55折扣0.8折扣时间2014年12月10日星期三02:55允许迟交否关闭时间2014年12月17日星期三02:55输入5个单词,将它们按从大到小的顺序排列后输出。输入:5个单词输出:排序后的顺序测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.BASIC2.C++3.Pascal4.C5.Fortran以文本方式显示1.Pascal2.Fortran3.C++4.C5.BASIC1秒64M0测试输入期待的输出时间限制内存限制额外进程测试用例2以文本方式显示1.BASIC2.C++3.C4.Fortran5.Pascal以文本方式显示1.Pascal2.Fortran3.C++4.C5.BASIC1秒64M0Code:#includestdio.h#includestring.hintmain(){chars[5][100],t[100];inti,n;for(i=0;i5;i++)scanf(%s,s[i]);for(i=0;i4;i++){for(n=i+1;n5;n++){if(strcmp(s[i],s[n])0){strcpy(t,s[i]);strcpy(s[i],s[n]);strcpy(s[n],t);}}}for(i=0;i5;i++)printf(%s\n,s[i]);return0;}2.寻找矩阵的鞍点成绩10开启时间2014年11月27日星期四03:00折扣0.8折扣时间2014年12月10日星期三03:00允许迟交否关闭时间2014年12月17日星期三03:00二维数组中的鞍点,即该位置上的元素是所在行上的最大值,是所在列上的最小值。二维数组也可能没有鞍点。输入一个二维数组的行数n,列数m,二维数组的诸元素值;输出数组的鞍点,以及鞍点所在的行列号。输入:第一行为矩阵的行数和列数,从第二行开始,为矩阵本身(假设输入的矩阵只有0和1个鞍点)34135323413267输出:Point:a[1][2]==4(下标从0开始)测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.342.13533.23414.3267以文本方式显示1.Point:a[1][2]==41秒64M0测试用例2以文本方式显示1.342.12343.84364.9451以文本方式显示1.NoPoint1秒64M0Code:#includestdio.h#includestring.hintmain(){inti[100][100],m,n,x,y,temp,log=0;scanf(%d%d,&m,&n);for(y=0;ym;y++){for(x=0;xn;x++){scanf(%d,&i[y][x]);}}//将每行的最大值放入每行的最后;for(y=0;ym;y++){temp=0;for(x=0;xn;x++){if(i[y][x]temp)temp=i[y][x];}i[y][n]=temp;}//将每列的最小值放入每列的最后for(x=0;xn;x++){temp=0x7fffffff;for(y=0;ym;y++){if(i[y][x]temp)temp=i[y][x];}i[m][x]=temp;}for(y=0;ym;y++){for(x=0;xn;x++){if((i[y][x]==i[m][x])&&(i[y][x]==i[y][n])){printf(Point:a[%d][%d]==%d\n,y,x,i[y][x]);log=1;}}}if(log==0)printf(NoPoint\n);return0;}3.身份证的奥秘成绩10开启时间2014年11月27日星期四03:05折扣0.8折扣时间2014年12月10日星期三03:05允许迟交否关闭时间2014年12月17日星期三03:05背景18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称社会保障号码更名为公民身份号码,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。GB11643-1999《公民身份号码》主要内容如下:一、范围该标准规定了公民身份号码的编码对象、号码的结构和表现形式,使每个编码对象获得一个唯一的、不变的法定号码。二、编码对象公民身份号码的编码对象是具有中华人民共和国国籍的公民。三、号码的结构和表示形式1、号码的结构公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。2、地址码表示编码对象常住户口所

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功