《c语言试题完整版本.docx》由会员分享,可在线阅读,更多相关《c语言试题完整版本.docx(37页珍藏版)》请在课桌文档上搜索。
1、C语言试题第三题#inc1.udevoidmai0(intn,i,ma=0;inta20;scanf(%d,n);for(i=0;in;i+)scanf(%d,a(i);for(i=0;in;i+)(if(maai)ma=ai;)printf(%d,ma);)第四题#inc1.udedoub1.ef(int);voidmai0(intn;scanf(%d,n);printf(%.8f,f(n);)doub1.ef(intn)inti;doub1.eresu1.t=0.0;for(i=1.;i=n;i+)resu1.t=resu1.t+(doub1.e)1.i;returnresu1.t;6题目
2、:栽树题目描述:在某食堂门前有11(n200)个树坑,编号是从0n-1.,开始时是没有树的。每个月,园林工人都会在编号ab(0=a=b=n-:1.)之间栽树(包括a,b),如果树坑原来有树,则不需要从新栽树。请计算4个月后,食堂门前总共有多少棵树。输入描述:第一个整数是nf接下来有8个整数,分别为每个月栽树的编号。输出描述描述:食堂门前树的总数.第六题#inc1.udevoidmai0intn;inta1.,b1.,a2,b2,a3,b3,a4,b4;intresu1.t=O;inti;scanf(%dn);scanf(%d%da1.,8ib1.);scanf(n%d%dna2f8b2);sc
3、anf(n%d%da3,8b3);SCanf(%d%d,&a4,&b4);for(i=0;i=a1.&i=a2&i=a3&i=a4&i=b4)resu1.t+;)printf(%d,resu1.t);)7题目标题:密码破译题目描述:某组织欲破获一个外星人的密码,密码由一定长度的字串组成。此组织拥有一些破译此密码的长度不同的钥匙,若两个钥匙的长度之和恰好为此密码的长度,则此密码被成功被逐。现在就请你编程找出能破译此密码的两个钥匙。输入描述:输入第一行为钥匙的个数N(1N5OOO)输入第二行为密码的长度以下N行为每个钥匙的长度输出描述描述:若无法找到破译此密码的钥匙,则输出仅1行0。若找到两把破译
4、的钥匙,则输出有两行,分别为两把钥匙的编号。若有多种破译方案,则只输出一种即可。#indudevoidmai0(intn,s5000J,ij,sign=1.jm=0;scanf(%d,&n);scanf(%d,8i1.);for(i=0;in;i+)scanf(n%dsi);for(i=0;in;i+)if(sign=O)break;for(j=i+1.;jn;j+)if(si+sj=1.)printf(%dn%d,i+1.,j+1.);sign=O;break;if(sign)printfC%d,m);)#inc1.udevoidmain()intm,n,sum,ij,a5000;scanf
5、(n%d8in);scanf(%d,8tm);for(i=1.;i=n;i+)scanf(%dai);for(i=1.;in;i+)for(j=i+1.;j=n;j+)sum=ai+aj;p=sum-m;if(p=O)printfC%dn%dii,j);)#inc1.udevoidmai0(intN1Iength;intij,key(5000;intnum1.,num2,t;scanf(%dN);scanf(%d,8i1.ength);for(i=0;in;i+)sc/n;i+)/n;i+)/n;j+)/n;i+)/n;i+)/n;i+)ai)/n;i+)/n;i+)anf(%dkey(i);
6、t=1.;for(i=0;in&;&t=1.;i+)for(j=i+1.jnj+)(if(keyi+keyj=Iength)(num1.=i+1.;num2=j+1.;t=0;break;)if(t=1.)printf(0);e1.seprintf(%dn%d,num1.,num2);9题目标题:基因编码(闫博钊)题目描述:小可可选修了基础生物基因学.教授告诉大家SUPerSamue1.星球上Kitty猫的基因的长度都是2的正整数次幕2k(k8),全是由两种不同的基因单元组成的。这两种不同的基因单元分别记成0和1,于是Kitty猫的基因可以写成一个O1.串表达式So为了便于分析和降低数据存储量
7、,教授发明了ABC编码规则。该编码规则是不断地按照A(若S串全是0)T(三)=B(若S串全是1)CT(S1.)T(S2)(否则把S串分成两个等长的子串S1.和S2)对Kitty猫基因01串表达式S进行改写,直至最终被改写成只含有字符A、B、C的符号串。例如T(01001011)=CT(O1OO)T(1O11)=CCT(O1)T(OO)CT(1O)T(11)=CCCt(O)T(I)ACCT(I)T(O)B=CCCABACCBAB请你编写程序帮助小可可求出Kitty猫基因的ABC编码以协助教授开展科研工作。输入描述:测试以一行的形式存放Kitty猫基因的01串表达式,字符串长度不超过500输出描述
8、描述:对应测试数据,以一行的形式输出这个Kitty猫基因的ABC编码.#inc1.ude#inc1.udevoidf(charaQ,intbegin,intend);intmain()(chara500;int1.ength;gets(八);1.ength=str1.en(八);f(a,OJength);return0;)voidf(chara。,intbegin,intend)intnum_A=0,num_B=0;inti;for(i=begin;iend;i+)if(ai=O)num_A+;e1.seif(ai=)num_B+;)if(num_A=end-begin)printf(A);e
9、1.seif(num_B=end-begin)printf(B);e1.se(printf(C);f(a,begin,(end+begin)2);f(a,(end+begin)2,end);11题目标题:(有问题)大数相加(彭玉旭)题目描述:ab这个程序大家都会做,但是如果a和b都匕嫩大时该怎么办呢。其实我们可以把输入一个比较大的数用字符串表示,模拟人工加法方式。如12323,一个字符串是123另外一个字符串是23,从字符串的最后开始加彳国到146.结果最大是两个字符串最长的那个值加Ie现在请你计算两个不超过30位的十进制的数的和。知识点:字符串输入,字符的09的加法运算。提示:字符。的ASC
10、II是48,注意进位处理输入描述:包行四行,每一行包含不超过30个的由09的字符组成字符串.输出描述描述:第一行加第二行的和以及第三行加第四行的和。每一个和占一行#inc1.ude#inc1.ude/end;i+)/n;j+)str1.en(八))s=a;a=b;b=s;1.enma=str1.en(八);1.enmin=str1.en(b);for(i=1.;i=10)a1.enma-i=m%10+48;key=1.;)e1.se(a1.enma-i=m+48;key=0;)for(i=1.;i=10)(a1.enma-1.enmin-i=m%10+48;key=1.;)e1.sea1.en
11、ma-1.enmin-i=m+48;key=O;)if(key)(for(i=1.enmax;i=1.;i)ai=ai-1.;aO=;a(1.enma+1.=,O,;)returna;12题目标题:(有问题)字符串比对(讴海军)题目描述:有字符串a(长度=1OO),b(长度=10),计算b串在a串中出现的次数。解题思路:1、用gets语句从键盘输入两个字符串赋予a,b字符数组;2、建立两层嵌套循环,外循环至a串结束标志为止,内循环至b串结束标志为止;3、内循环中比对b串与a串的数据,满足条件时计数,否则break;4、所有循环结束后输出计数值。输入描述:输入为两个字符串,第一个字符串长度小于1
12、00,第二个字符串长度小于10;输出描述描述:输出为一个正整数;#inc1.ude#inc1.udevoidmai0chara(100,b10;intij,count,resu1.t;gets(八);gets(b);resu1.t=O;for(i=0;istr1.en(八);i+)for(j=0,count=0;jstr1.en(b);j+)(if(bj=ai+j)count+;e1.sebreak;)if(count=str1.en(b)resu1.t+;)printf(%d,resu1.t);)intmain()(chara40=0),b40=,0,jc40=,0,d40=,0,e40=,
13、0,f40=0;whi1.e(gets(八)!=NU1.1.&;&;gets(b)!=NU1.1.&;&;gets(c)!=NU1.1.&;&;gets(d)!=NU1.1.)/?x?Oi?a?(StrCPy(e,adC1.highJd(a,b);strcpy(f,add-highjd(c,d);puts(e);/?.puts(f);/?.)returnO;14题目标题:(有问题)星期几?(讴海军)题目描述:编一个程序,已知今天是星期几,计算出n天后是星期几。要求使用枚举变量。提示:枚举变量的赋值只能用枚举常量来表示,但是枚举常量均有一个整形数代表,可将改整形数存入枚举变量地址以实现外部赋值的
14、目的。如:enumdaySun,MonJue,Wed,Thu,Fri,Satd1.;scanf(%d,d1.);当键盘输入1时,相当于将d1.赋值为Mon,即d1.=Mon枚举变量的输出,只能输出其代表的整形数,如需输出其对应的枚举常量,可借助字符串数组的方式处理;如:char*p(=Sun,Mon,wTuewfWedThun,Fri,Saf;printf(%s(p+2);str1.en(b)J+)/str1.en(八);i+)其输出结果为:Tue输入描述:输入为两个正整数,第一个数n(n=6)表示今天是星期几,第二个数m(m=1000),表示求m天后是星期几;输出描述描述:输出为一个长度为3
15、的字符串,表示星期几的名称;#inc1.udevoidmai0(enumdaySun,Mon,TuefWedJhu,Fri,Satd;charp(=Sun,Mon,Tue,WedfThuFriSat);intm;scanf(%d%d,&d,&m);printf(%sXp+(d+m)%7);16题目标题:17题目标题:四位反序数(卜胜贤)题目描述:设N是一个四位数,它的n倍恰好是其反序数(例如:123的反序数是321),编程,输出一个满足条件的Ne(知识点:控制语句)输入描述:输入为一个整形数n(2=n=9)输出描述描述:输出为一个四位数的整形数#inc1.udeintnumber(intn);
16、voidmai0intn,i,t=O;scanf(%d,&;n);for(i=1000;i10000;i+)(if(i*n=number(i)(t=i;break;)printf(%dt);)intnumber(intn)(inta1.,a2,a3,a4;intresu1.t;a1.=n%10;a2=n10%10;a3=n100%10;a4=n1000;resu1.t=a1.*1000+a2*100+a3*10+a4;returnresu1.t;)19题目标题:字符串复制(卜胜贤)题目描述:有一个字符串,包括个字符。写一个函数,将此字符串从第m个字符开始的全部字符复制成另一个字符串。要求在主函
17、数输入字符串及m值并输出复制结果.(知识点:控制语句、字符串、指针)输入描述:输入为一个字符串(长度小于80)及一个整形数(小于字符串的实际长度)输出描述描述:输出为一个字符串#inc1.ude#inc1.udevoidmain()(intn,m,i;charstr80;char*p;p=str;gets(str);scanf(%d,&;n);m=StrIen(Str);for(i=n-1.;im;i+)printf(%c,*(p+i);)#indude#inc1.udevoidmain()(itifj,n;chara80;gets(八);scanf(%d,n);for(i=n-1.;istr
18、1.en(八);+i)printf(%c,ai);)20题目标题:二维字符数组转换(卜胜贤)题目描述:编写函数fun,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到-个字符串中.例如,二维数组中的数据为:WWWWSSSSHHHH则字符串中的内容应是:wshwshwsho(知识点:数组、指针)输入描述:输入为一个3行4列二维字符数组数据输出描述描述:输出为一个长度为12的字符数组;#inc1.udevoidmai0(chara34,s12;char(*p1.)4,*p2;inti;voidfun(char(*p1.)4,char*p2);for(i=0;i4;i+)(scan
19、f(%c,aOi);getchar();)for(i=0;i4;i+)(scanf(%c,&;a1.i);getchar();)for(i=0;i4;i+)scanf(%ci8/str1.en(八);+i)/m;i+)a2i);getchar();)p1.=a;p2=s;fun(p1.,p2);puts(三);voidfn(char(*p1.)4,char*p2)intij;for(i=0;i4;i+)for(j=0;j3;j+)(*p2=*(*(p1.+j)+i);P2+;*p2=0;)#inc1.udevoidmain()(chara38,b24;inti,j,k=O,t=O;for(i=
20、0;i3;+i)for(j=0;j8;+j)scanf(%cn,8t,aij);whi1.e(k24)(bk=ak%3t;k+;if(k%3=O)t+;)if(bi!=)printf(n%c,bi);if(bi)=n)break;)21题目标题:年龄分组(卜胜贤)题目描述:统计各年龄段的人数。N(N=20)个年龄通过键盘输入,并放在age数组中;要求函数把0至9岁年龄段的人数放在d中,把10至19岁年龄段的人数放在d1.中,把20至29岁年龄段的人数放在d2,其余依此类推,把100岁(含100)以上年龄的人数都放在d10中。依次输出d0至d10输入描述:输入为20个正整数;输出描述描述:输出为
21、11个正整数;#inc1.ude#defineN20voidmai0(inti,ageN,d1.1.;for(i=0;in;i+)scanf(%d,8agei);for(i=0;i1.1.;i+)d(i=0;for(i=0;i=0&;&;agei=10&;&;age(i=20&;&;agei=30&;&;age(i=40&;&;agei=50&;&;agei=60&;&;agei=70&;&;agei=80&;&;agei=90&;&;agei=100)d10+;)for(i=0;i10;i+)printf(%d,di);printf(%d,d10);)#inc1.udevoidmai0(in
22、ta20,b1.1.;inti,j;for(i=0;i20;+i)scanf(%d&;ai);for(i=0;i1.1.;+i)bi=O;for(i=0;i=G*10)&;&;ai=100)b10+;)for(i=0;i10;+i)printf(%dfbi);printf(n%d,b10);)22题目标题:分数数列求和(返海军)题目描述:有一个分数数列为:2/1,3/2,4/3,5/4求出这个数列的前n(11=20)项之和,保留小数点后4位(I输入描述:输入一整数n(n=20);输出描述描述:输出为一个小数,保留小数点后4位;#inc1.udevoidmai0(f1.oats=2.0,t=1.
23、0,resu1.t=0;intn,i;scanf(%d,n);for(i=0;in;+i)resu1.t=resuIt+st;s+;t+;)printf(%.4f,resu1.t);)24题目描述题目标题:鞍点(讴海军)题目描述:找出一个二维数组中的鞍点,即该位者上的元素在/n;+i)/n;i+)/n;i+)该行上最大、在该列上最小。也可能没有鞍点。输入描述:输入3行3列的二维整形数组;输出描述描述:如果鞍点存在,输出其坐标;否则输出-1;如:鞍点位于第一行第三列,则输出13;#inc1.ude#defineN3intGetRowInde(intaN,intco1.)(introw=0;int
24、i;intmin=a0(co1.;for(i=1.;in;i+)if(aico1.min)(min=a(i(co1.;row=i;)returnrow;)voidmai0(intaNN;intiJ,row,co1.,max,rowResu1.t,f1.ag=0;for(i=0;in;i+)for(j=0;jn;j+)scanf(%d-,aij);for(i=0;in;i+)(row=i;co1.=0;max=a(i0;for(j=1.;jmax)(co1.=j;ma=aij;)rowResu1.t=GetRowIndex(a,co1.);if(row=rowResu1.t)(f1.ag=1.;
25、break;)if(f1.ag=1.)(printf(%d%d,row+1.,co1.+1.);)e1.seprintf(%d-1.);)25题目标题:最长单词(讴海军)题目描述:输入一个字符串,将其中最长的单词输出(不含标点符号);如果最长单词的数量有多个,输出第一个即可;注:大写字母的ascii码从6590,小写字母的ascii码从97122;输入描述:输入为长度小于100的字符串;输出描述描述:输出为长度小于100的字符串;27题目标题:直找不同的木棍(彭玉旭)题目描述:小明的收集了一些木棍,并测量了每个木棍的长度,记录下来.假设小明有奇数根木棍,只有一个木棍找不到跟它一样长的另外一根木
26、棍.请编程找出这个没有相同长度的木棍,输出它的长度.知识点:排序;或者用异或操作0异或x=x;x异或x=0;a异或b异或c=a异或(b异或c)=(a异或b)异或c=a异或C异或b输入描述:输入包含一个奇数n(n30000),然后是n个整数,表示每个木棍的长度,并保证只有一根木棍找不到跟他一样长的木棍.输出描述描述:输出符合条件的木棍的长度#inc1.ude#defineN30000voidmai0(intn,i,j,temp;intaN;scanf(%dAn);for(i=0;in;+i)scanf(%d,a(i);for(i=0;in-1.;+i)for(j=i+1.;jn;+j)(f(ai
27、aj)(temp=ai;ai=aj;a(j=temp;)for(i=0;in;+i)(if(i=n-1.)(printf(%d,ai);break;)for(j=0;jt-i;+j)printf(%d,aij);printf();)51题目标题:卫星定位(胡宁静)题目描述:编写程序,对一个已经排好序的数组,输入一个元素。将该元素在数组中的位置索引出来(折半查找)O例如原数组为:12679,输入待查找的元素7,则查找结果为4,如果没有找到该元素,则输出-1;输入描述:输入包含两部分,第一部分先输入n,表示数组中元索数,接着输入n个已经排序好的数,数组最大个数n为20,第二部分为待直找的数据输出描
28、述描述:待查/t-i;+j)t+i)/t-i;+j)/t;+i)/t;+i)/t-i;+j)/t;+i)/t-i;+j)/t;+i)+i)删除特定元素后的剩余元素#inc1.udevoidmai0(intn,i,a1000num=0;intk=O;scanf(%d,&;n);for(i=0;in;+i)scanf(%df8ai);scanf(%dAt);for(i=0;in;+i)if(t=ai)num+;)if(num%2=0)(for(i=0;in;+i)if(t=ai)k+;if(k=num2)(k=n;continue;)printf(n%d,ai);)e1.sefor(i=0;in;
29、+i)if(t=a(i)k+;if(k=(num+1.)2)(k=n;continue;)printf(n%dfai);)53题目标题:是非黑白(胡宁静)题目描述:编写函数实现两个等长字符串大小比较.比较规则如下:字符大小按对应的ASCII码值,字符串大小比较时按对应字符比较,如果比较的两字符不等,则说明存在大小关系,停止比较操作.如果相等,则比较下一次字符,直到最后一个.如果第一个字符串小于第二个字符串则输出第二个字符串,如果大于则输出第一个字符串,如果相等则返回0;输入描述:输入待比较的两个字符串输出描述描述:字符串b匕较结果#inc1.ude#inc1.udevoidmai0(chara
30、100,b100;int1.en,i1temp;scanf(%s,a);scanf(%s,b);1.en=str1.en(八);for(i=0;i1.en;+i)(if(aibi)(temp=2;break;)if(i=1.en)printf(O);e1.seif(temp=1.)printf(-);e1.seif(temp=2)printf(1.);)54题目标题:搭桥(胡宁静)题目描述:编写函数将两个升序排列的字符串融合成一个字符串,融合后的字符串仍然是升序排列的。输入描述:输入两升序字符串输出描述描述:融合后的字符串bi)/1.en;+i)/n;+i)/n;+i)/n;+i)/n;+i)
31、/n;+i)/n;+i)#inc1.ude#inc1.udevoidmai0chara1001.b100,c(2001.temp;inta_1.en(b_1.en,i,j,k=O;gets(八);gets(b);ajen=str1.en(八);bjen=str1.en(b);for(i=0;ia_1.en;+i)(ci=ai;)for(i=a_1.en;ia_1.en+b_1.en;+i)(c(i=bi-ajen;)for(i=0;ia_1.en+bJen;+i)for(j=i+1.;jcj)(temp=ci;ci=cj;c(j)=temp;)for(i=0;ia_1.en+b_1.en;+i
32、)printf(%c,ci);)55题目标题:一清二楚(胡宁静)题目描述:输入一字符串,该字符串包含字母、数字和其他字符。统计该字符串中数字、字母和其他字符出现的频率。(注意,其他字符包含空格)输入描述:一混合字符串,最大长度为200各类字符出现频率输出描述描述:各类字符出现频率#inc1.ude#inc1.udevoidmai0chara200;int1.en,i,num1.=01.num2=0,num3=0;gets(八);1.en=str1.en(八);for(i=0;i=a&;&;ai=A&;&;ai=0,&;&;a(i=9)num2+;e1.senum3+;)PrintfeI字母:d
33、n,num1.);Printf(数字:dn,num2);Printf(其他:dr,num3);)56题目标题:克隆(胡宁静)题目描述:编写程序实现字符串拷贝,输入两字符串(字符串长度小于100),将第一个字符串拷贝到第二个字符串中;如果第一个字符串的长度a小于第二个字符串长度b,则第二个字符串的长度也将缩减至第一个的长度a,如果第一个字符串的长度a大于或等于第二个长度b,则只将a的前b个字符拷贝到第二个中;输入描述:输入两字符串输出描述描述:输出第二个字符串#indude#inc1.udevoidmain()(chara100,b100;intajen,bjenfi;gets(八);gets(b);ajen=str1.en(八);bjen=str1.en(b);if(a_1.enb_1.en)(for(i=0;ia_1.en;+i)printf(%c,bi);)e1.sefor(i=0;ib_1.en;+i)printf(%c,ai);/b_1.en;+i)/a_1.en;+i)/ben)/1.en;+i)(!+fu-q+ue(+fu-q+u-e(f+!u-q+u-e
链接地址:https://www.desk33.com/p-1575323.html