C语言典型例题_第1页
C语言典型例题_第2页
C语言典型例题_第3页
C语言典型例题_第4页
C语言典型例题_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.寻找特殊偶数成绩10开启时间2014年11月4日星期二08:00折扣0.8折扣时间2014年11月19日星期三08:00允许迟交否关闭时间2014年11月26日星期三08:00背景有一种特殊偶数,它每一位上的数字都两两不相同。我们现在需要找出四位数中某一区间内的这类偶数。输入所要寻找的四位偶数的范围。每组输入有两个数字:第一个数字是最小范围;第二个数字是最大范围。如果输入遇到0,输入结束。输出列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。

测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示3000

3020↵6040

6090↵0

0↵以文本方式显示3012

3014

3016

3018

↵counter=4↵6042

6048

6052

6054

6058

6072

6074

6078

6082

6084

↵counter=10↵1秒64M0测试用例2以文本方式显示9

101↵87

-1↵0

0↵以文本方式显示Error↵Error↵1秒64M0Code:#include<stdio.h>intmain(){intmaxnum,minnum,n,g,s,b,q,count=0;while(1){scanf("%d%d",&minnum,&maxnum);if(minnum==0&&maxnum==0)return0;if((minnum>999&&minnum<10000)&&(maxnum>999&&maxnum<10000)&&(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;}else printf("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=91<100,而1

+2+3+4+......+14=105>100。输入:n输出:m

测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示100↵以文本方式显示14↵1秒64M0Code:#include<stdio.h>intmain(){intmax,i=0,sum=0;scanf("%d",&max);while(sum<max){ 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

4

12

21↵以文本方式显示The

max

is

71.↵1秒64M0测试用例2以文本方式显示1

3

7

12↵以文本方式显示The

max

is

46.↵1秒64M0Code:#include<stdio.h>intmain(){ inti[5],t[3126],n,n1,n2,n3,n4,temp=0; i[0]=0; for(n=1;n<5;n++) scanf("%d",&i[n]); for(n=0;n<3126;n++) t[n]=0; for(n=0;n<5;n++) { for(n1=0;n1<5;n1++) { for(n2=0;n2<5;n2++) { for(n3=0;n3<5;n3++) { for(n4=0;n4<5;n4++) { t[temp]=i[n]+i[n1]+i[n2]+i[n3]+i[n4]; temp++; } } } } } for(n=0;n<3124;n++) { for(n1=n;n1<3125;n1++) { if(t[n]>t[n1]) { temp=t[n]; t[n]=t[n1]; t[n1]=temp; } } } temp=0; for(n=0;n<3125;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以文本方式显示3↵7

5

5↵以文本方式显示5

7↵1秒64M0测试用例2以文本方式显示5↵1

0

0

2

2↵以文本方式显示0

1

2↵1秒64M0Code:#include<stdio.h>intmain(){ intn,m,l,i[100],temp; scanf("%d",&n); for(m=0;m<n;m++) scanf("%d",&i[m]); for(m=0;m<n-1;m++) for(l=m+1;l<n;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;m<n;m++) { if(temp<i[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以文本方式显示BASIC↵C++↵Pascal↵C↵Fortran↵以文本方式显示Pascal↵Fortran↵C++↵C↵BASIC↵1秒64M0测试用例2以文本方式显示BASIC↵C++↵C↵Fortran↵Pascal↵以文本方式显示Pascal↵Fortran↵C++↵C↵BASIC↵1秒64M0Code:#include<stdio.h>#include<string.h>intmain(){ chars[5][100],t[100]; inti,n; for(i=0;i<5;i++) scanf("%s",s[i]); for(i=0;i<4;i++) { for(n=i+1;n<5;n++) { if(strcmp(s[i],s[n])<0) { strcpy(t,s[i]); strcpy(s[i],s[n]); strcpy(s[n],t); } } } for(i=0;i<5;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个鞍点)

34

1353

2341

3267输出:

Point:a[1][2]==4

(下标从0开始)

测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示3

4↵1

3

5

3↵2

3

4

1↵3

2

6

7↵以文本方式显示Point:a[1][2]==4↵1秒64M0测试用例2以文本方式显示3

4↵1

2

3

4↵8

4

3

6↵9

4

5

1↵以文本方式显示No

Point↵1秒64M0Code:#include<stdio.h>#include<string.h>intmain(){ inti[100][100],m,n,x,y,temp,log=0; scanf("%d%d",&m,&n); for(y=0;y<m;y++) { for(x=0;x<n;x++) { scanf("%d",&i[y][x]); } } //将每行的最大值放入每行的最后; for(y=0;y<m;y++) { temp=0; for(x=0;x<n;x++) { if(i[y][x]>temp) temp=i[y][x]; } i[y][n]=temp; } //将每列的最小值放入每列的最后 for(x=0;x<n;x++) { temp=0x7fffffff; for(y=0;y<m;y++) { if(i[y][x]<temp) temp=i[y][x]; } i[m][x]=temp; } for(y=0;y<m;y++) { for(x=0;x<n;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、地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。3、出生日期码表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。4、顺序码表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。5、校验码(1)十七位数字本体码加权求和公式S=Sum(Ai*Wi),i=0,...,16,先对前17位数字的权求和

Ai:表示第i位置上的身份证号码数字值

Wi:表示第i位置上的加权因子

Wi:7910584216379105842(2)计算模Y=mod(S,11)Y=S%11(3)通过模得到对应的校验码Y:012345678910

校验码:10X98765432四、举例如下:北京市朝阳区/p>

广东省汕头市:44052418800101001415位的身份证号升级办法:15位的身份证号:ddddddyymmddxxp18位的身份证号:ddddddyyyymmddxxpy其中dddddd为地址码(省地县三级)yyyymmddyymmdd为出生年月日xx顺号类编码p性别15位的yy年升为18位后,变成19yy年,但对于百岁以上老人,则为18yy年,此时,他们的最后三位顺序码为996,997,998或999来标记。输入输入n组身份证号码,第一行为个数,以后每行为身份证号码。输出如果输入的身份证号码为15位,则将其升级为18位后显示输出;否则判断其是否为合法身份证号,并逐行输出。

测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示411010519491231002X↵110105491231002↵110105491231996↵以文本方式显示Invalid↵Valid110105184912319965↵1秒64M0Code:#include<stdio.h>#include<string.h>intmain(){ intn,i,m,j,sumt,y; chars[100][19],temp[19],t; scanf("%d",&n); for(i=0;i<n;i++) scanf("%s",s[i]); for(i=0;i<n;i++) { m=0; while(s[i][m]!='\0') { m++; } if(m!=15&&m!=18) { printf("Invalid\n"); } if(m==15) { for(j=0;j<6;j++) temp[j]=s[i][j]; if(s[i][12]=='9'&&s[i][13]=='9'&&s[i][14]>'5') { temp[6]='1';temp[7]='8'; } else { temp[6]='1';temp[7]='9'; } for(j=6;j<16;j++) temp[j+2]=s[i][j]; strcpy(s[i],temp); sumt=(s[i][0]-'0')*7+(s[i][1]-'0')*9+(s[i][2]-'0')*10+(s[i][3]-'0')*5+(s[i][4]-'0')*8+(s[i][5]-'0')*4+(s[i][6]-'0')*2+(s[i][7]-'0')*1+(s[i][8]-'0')*6+(s[i][9]-'0')*3+(s[i][10]-'0')*7+(s[i][11]-'0')*9+(s[i][12]-'0')*10+(s[i][13]-'0')*5+(s[i][14]-'0') *8+(s[i][15]-'0')*4+(s[i][16]-'0')*2; //sumt=atoi(s[i][0])*7+atoi(s[i][1])*9+atoi(s[i][2])*10+atoi(s[i][3])*5+atoi(s[i][4])*8+atoi(s[i][5])*4+atoi(s[i][6])*2+atoi(s[i][7])*1+atoi(s[i][8])*6+atoi(s[i][9])*3+atoi(s[i][10])*7+atoi(s[i][11])*9+atoi(s[i][12])*10+atoi(s[i][13])*5+atoi(s[i][14]) *8+atoi(s[i][15])*4+atoi(s[i][16])*2; y=sumt%11; switch(y) { case0:s[i][17]='1';break; case1:s[i][17]='0';break; case2:s[i][17]='X';break; case3:s[i][17]='9';break; case4:s[i][17]='8';break; case5:s[i][17]='7';break; case6:s[i][17]='6';break; case7:s[i][17]='5';break; case8:s[i][17]='4';break; case9:s[i][17]='3';break; case10:s[i][17]='2';break; } s[i][18]='\0'; printf("%s\n",s[i]); } if(m==18) { sumt=(s[i][0]-'0')*7+(s[i][1]-'0')*9+(s[i][2]-'0')*10+(s[i][3]-'0')*5+(s[i][4]-'0')*8+(s[i][5]-'0')*4+(s[i][6]-'0')*2+(s[i][7]-'0')*1+(s[i][8]-'0')*6+(s[i][9]-'0')*3+(s[i][10]-'0')*7+(s[i][11]-'0')*9+(s[i][12]-'0')*10+(s[i][13]-'0')*5+(s[i][14]-'0') *8+(s[i][15]-'0')*4+(s[i][16]-'0')*2; y=sumt%11; switch(y) { case0:t='1';break; case1:t='0';break; case2:t='X';break; case3:t='9';break; case4:t='8';break; case5:t='7';break; case6:t='6';break; case7:t='5';break; case8:t='4';break; case9:t='3';break; case10:t='2';break; } if(t==s[i][17]) printf("Valid\n"); else printf("Invalid\n"); } } return0;}4.安全的密码(选做)成绩0开启时间2014年11月27日星期四03:10折扣0.8折扣时间2014年12月10日星期三03:10允许迟交否关闭时间2014年12月17日星期三03:10随着电子设备的广泛运用,密码也渐渐融入每个人的生活。保护好密码,不仅关系到个人隐私,更关系到个人的财产和安全。一个安全的密码,最好由大小写字母、数字或符号组成。包含越多种类的字符,其安全性就越高。同时密码还需要有一定的长度,通常至少要由六个以上的字符组成。并不是每个人都喜欢这样复杂的密码,很多人在设置密码的时候,喜欢使用自己的名字或者生日,但这是很大的安全隐患。任务林晓炜正在设计一个网络交易系统,为了保证用户的密码安全,他需要一个程序,判断用户自己设置的密码是否安全,如果不安全,则给出提示。现在他向你求助,请你帮忙设计一个程序来解决这个问题。应当按照以下的规则来判断密码是否安全:如果密码长度小于6位,则不安全如果组成密码的字符只有一类,则不安全如果组成密码的字符有两类,则为中度安全如果组成密码的字符有三类或以上,则为安全通常,可以认为数字、大写字母、小写字母和其它符号为四类不同的字符。输入输入的第一行是一个整数N,表明后面有多少组密码。随后的N行输入包括N个密码,每个密码的长度均小于20个字符。输出针对每一个密码判断并输出它是否安全。对于不安全的密码输出"NotSafe",对于中度安全的密码输出"MediumSafe",对于安全的密码输出"Safe"输入样例4

1234

abcdef

ABC123

1#c3Gh输出样例NotSafe

NotSafe

Medium

SafeSafe

测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示10↵abcDEF↵ABC↵qw↵`↵ABCDEFGHIJKLMNOPQRST↵12345678901234567890↵

1aB↵1

B↵a

X

↵qwe123%^&ABC↵以文本方式显示Medium

Safe↵Not

Safe↵Not

Safe↵Not

Safe↵Not

Safe↵Not

Safe↵Safe↵Not

Safe↵Safe↵Safe↵1秒64M0Code:#include<stdio.h>#include<string.h>intmain(){ intn,i,j,m,log1,log2,log3,log4; chars[100][21],t[10]; scanf("%d",&n); gets(t); for(i=0;i<n;i++) gets(s[i]); for(i=0;i<n;i++) { j=0; while(s[i][j]!='\0') { j++; } if(j<6) { printf("NotSafe\n"); continue; } j=0; log1=0; log2=0; log3=0; log4=0; while(s[i][j]!='\0') { if(s[i][j]>='0'&&s[i][j]<='9')log1=1; if(s[i][j]>='a'&&s[i][j]<='z')log2=1; if(s[i][j]>='A'&&s[i][j]<='Z')log3=1; if(!(s[i][j]>='0'&&s[i][j]<='9')&&!(s[i][j]>='a'&&s[i][j]<='z')&&!(s[i][j]>='A'&&s[i][j]<='Z'))log4=1; j++; } m=0; if(log1==1)m++; if(log2==1)m++; if(log3==1)m++; if(log4==1)m++; if(m==1)printf("NotSafe\n"); if(m==2)printf("MediumSafe\n"); if(m>=3)printf("Safe\n"); } return0; }期中考试测试题2.回文数成绩10开启时间2014年11月20日星期四02:50折扣0.8折扣时间2014年12月4日星期四02:50允许迟交否关闭时间2014年12月11日星期四02:50输出所有不超过n(取n<256)的、其平方具有对称性质的正整数(也称为回文数)。如:

1*1=1;

2*2=4;3*3=9;11*11=121

测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示3↵以文本方式显示1↵2↵1秒64M0测试用例2以文本方式显示25↵以文本方式显示1↵2↵3↵11↵22↵↵1秒64M0Code:#include<stdio.h>intmain(){intn,m,square,i,temp,log;chars[6];scanf("%d",&n);for(m=1;m<n;m++) { i=0; square=m*m; log=1; while(square!=0) { temp=square%10; s[i]='0'+temp; i++; square/=10; }

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论