c语言试题完整版本.docx
C语言试题第三题#inc1.udevoidmai0(intn,i,ma×=0;inta20;scanf("%d",¾n);for(i=0;i<n;i+)scanf("%d,¾a(i);for(i=0;i<n;i+)(if(ma×<ai)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题目:栽树题目描述:在某食堂门前有11(n<200)个树坑,编号是从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%d"a1.,8ib1.);scanf(n%d%dna2f8b2);scanf(n%d%d"a3,8b3);SCanf("%d%d",&a4,&b4);for(i=0;i<n;i+)(if(i>=a1.&&i<=b1.)resu1.t+;e1.seif(i>=a2&&i<=b2)resu1.t+;e1.seif(i>=a3&&i<=b3)resu1.t+;e1.seif(i>=a4&&i<=b4)resu1.t+;)printf("%d",resu1.t);)7题目标题:密码破译题目描述:某组织欲破获一个外星人的密码,密码由一定长度的字串组成。此组织拥有一些破译此密码的长度不同的钥匙,若两个钥匙的长度之和恰好为此密码的长度,则此密码被成功被逐。现在就请你编程找出能破译此密码的两个钥匙。输入描述:输入第一行为钥匙的个数N(1N5OOO)输入第二行为密码的长度以下N行为每个钥匙的长度输出描述描述:若无法找到破译此密码的钥匙,则输出仅1行0。若找到两把破译的钥匙,则输出有两行,分别为两把钥匙的编号。若有多种破译方案,则只输出一种即可。#indudevoidmai0(intn,s5000J,ij,sign=1.jm=0;scanf("%d",&n);scanf("%d",8i1.);for(i=0;i<n;i+)scanf(n%d'si);for(i=0;i<n;i+)if(sign=O)break;for(j=i+1.;j<n;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(n%d8in);scanf("%d",8tm);for(i=1.;i<=n;i+)scanf("%d"ai);for(i=1.;i<n;i+)for(j=i+1.;j<=n;j+)sum=ai+aj;p=sum-m;if(p=O)printfC%dn%d"ii,j);)#inc1.udevoidmai0(intN1Iength;intij,key(5000;intnum1.,num2,t;scanf("%d'N);scanf("%d",8i1.ength);for(i=0;i<n;i+)sc</n;i+)</n;i+)</n;j+)</n;i+)</n;i+)</n;i+)<ai)</n;i+)</n;i+)anf('%d"key(i);t=1.;for(i=0;i<n&&t=1.;i+)for(j=i+1.j<nj+)(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为了便于分析和降低数据存储量,教授发明了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输出描述描述:对应测试数据,以一行的形式输出这个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;i<end;i+)if(ai='O')num_A+;e1.seif(ai=")num_B+;)if(num_A=end-begin)printf("A");e1.seif(num_B=end-begin)printf("B");e1.se(printf("C');f(a,begin,(end+begin)2);f(a,(end+begin)2,end);11题目标题:(有问题)大数相加(彭玉旭)题目描述:a÷b这个程序大家都会做,但是如果a和b都匕嫩大时该怎么办呢。其实我们可以把输入一个比较大的数用字符串表示,模拟人工加法方式。如123÷23,一个字符串是123另外一个字符串是23,从字符串的最后开始加彳国到146.结果最大是两个字符串最长的那个值加Ie现在请你计算两个不超过30位的十进制的数的和。知识点:字符串输入,字符的09的加法运算。提示:字符。的ASCII是48,注意进位处理输入描述:包行四行,每一行包含不超过30个的由09的字符组成字符串.输出描述描述:第一行加第二行的和以及第三行加第四行的和。每一个和占一行#inc1.ude#inc1.ude</end;i+)</n;j+)</n&&t=1.;i+)char*add_highjd(char*afchar*b)(char*s;intIenmax,Ienmin,i,ky=O,rn;if(str1.en(b)>str1.en(八))s=a;a=b;b=s;1.enma×=str1.en(八);1.enmin=str1.en(b);for(i=1.;i<=IenminJ+)(m=a1.enma×-i+b1.enmin-i-96+key;if(m>=10)a1.enma×-i=m%10+48;key=1.;)e1.se(a1.enma×-i=m+48;key=0;)for(i=1.;i<=Ienmax-IenminJ+)m=a1.enma×-1.enmin-i-48+key;if(m>=10)(a1.enma×-1.enmin-i=m%10+48;key=1.;)e1.sea1.enma×-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、所有循环结束后输出计数值。输入描述:输入为两个字符串,第一个字符串长度小于100,第二个字符串长度小于10;输出描述描述:输出为一个正整数;#inc1.ude#inc1.udevoidmai0chara(100,b10;intij,count,resu1.t;gets(八);gets(b);resu1.t=O;for(i=0;i<str1.en(八);i+)for(j=0,count=0;j<str1.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=,0,f40='0'whi1.e(gets(八)!=NU1.1.&&gets(b)!=NU1.1.&&gets(c)!=NU1.1.&&gets(d)!=NU1.1.)/?x?O±i?a?(StrCPy(e,adC1.highJd(a,b);strcpy(f,add-highjd(c,d);puts(e);/?.puts(f);/?.)returnO;14题目标题:(有问题)星期几?(讴海军)题目描述:编一个程