您好,欢迎访问三七文档
第二题#includestdio.hvoidmain(){charch[20];inti;gets(ch);for(i=0;i20;i++){if(ch[i]='a'&&ch[i]='z')ch[i]=ch[i]-32;elseif(ch[i]='A'&&ch[i]='Z')ch[i]=ch[i]+32;}puts(ch);}第三题#includestdio.hvoidmain(){intn,i,max=0;inta[20];scanf(%d,&n);for(i=0;in;i++)scanf(%d,&a[i]);for(i=0;in;i++){if(maxa[i])max=a[i];}printf(%d,max);}第四题#includestdio.hdoublef(int);voidmain(){intn;scanf(%d,&n);printf(%.8f,f(n));}doublef(intn){inti;doubleresult=0.0;for(i=1;i=n;i++)result=result+(double)1/i;returnresult;}5题目标题:汽水瓶(谌海军)题目描述:有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?输入描述:输入为一个正整数n(1=n=100),表示空汽水瓶个数。#includestdio.hvoidmain(){intn,m=0,sum=0,i=0;scanf(%d,&n);while(n=3){m=n/3;n=n-2*m;sum=sum+m;}if(n=2)sum++;elseif(n2)sum=sum+i;printf(%d,sum);}6题目标题:栽树(彭玉旭)题目描述:在某食堂门前有n(n200)个树坑,编号是从0~n-1,开始时是没有树的。每个月,园林工人都会在编号a~b(0=a=b=n-1)之间栽树(包括a,b),如果树坑原来有树,则不需要从新栽树。请计算4个月后,食堂门前总共有多少棵树。输入描述:第一个整数是n,接下来有8个整数,分别为每个月栽树的编号。输出描述描述:食堂门前树的总数。第六题#includestdio.hvoidmain(){intn;inta1,b1,a2,b2,a3,b3,a4,b4;intresult=0;inti;scanf(%d,&n);scanf(%d%d,&a1,&b1);scanf(%d%d,&a2,&b2);scanf(%d%d,&a3,&b3);scanf(%d%d,&a4,&b4);for(i=0;in;i++){if(i=a1&&i=b1)result++;elseif(i=a2&&i=b2)result++;elseif(i=a3&&i=b3)result++;elseif(i=a4&&i=b4)result++;}printf(%d,result);}7题目标题:密码破译(闫博钊)题目描述:某组织欲破获一个外星人的密码,密码由一定长度的字串组成。此组织拥有一些破译此密码的长度不同的钥匙,若两个钥匙的长度之和恰好为此密码的长度,则此密码被成功破译。现在就请你编程找出能破译此密码的两个钥匙。输入描述:输入第一行为钥匙的个数N(1≤N≤5000)输入第二行为密码的长度以下N行为每个钥匙的长度输出描述描述:若无法找到破译此密码的钥匙,则输出仅1行0。若找到两把破译的钥匙,则输出有两行,分别为两把钥匙的编号。若有多种破译方案,则只输出一种即可。#includestdio.hvoidmain(){intn,s[5000],l,i,j,sign=1,m=0;scanf(%d,&n);scanf(%d,&l);for(i=0;in;i++)scanf(%d,&s[i]);for(i=0;in;i++){if(sign==0)break;for(j=i+1;jn;j++)if(s[i]+s[j]==l){printf(%d\n%d,i+1,j+1);sign=0;break;}}if(sign)printf(%d,m);}#includestdio.hvoidmain(){intm,n,sum,i,j,a[5000];scanf(%d,&n);scanf(%d,&m);for(i=1;i=n;i++)scanf(%d,&a[i]);for(i=1;in;i++)for(j=i+1;j=n;j++){sum=a[i]+a[j];p=sum-m;if(p==0)printf(%d\n%d,i,j);}}#includestdio.hvoidmain(){intN,length;inti,j,key[5000];intnum1,num2,t;scanf(%d,&N);scanf(%d,&length);for(i=0;iN;i++)scanf(%d,&key[i]);t=1;for(i=0;iN&&t==1;i++)for(j=i+1;jN;j++){if(key[i]+key[j]==length){num1=i+1;num2=j+1;t=0;break;}}if(t==1)printf(0);elseprintf(%d\n%d,num1,num2);}9题目标题:基因编码(闫博钊)题目描述:小可可选修了基础生物基因学。教授告诉大家SuperSamuel星球上Kitty猫的基因的长度都是2的正整数次幂2k(k≤8),全是由两种不同的基因单元组成的。这两种不同的基因单元分别记成0和1,于是Kitty猫的基因可以写成一个01串表达式S。为了便于分析和降低数据存储量,教授发明了ABC编码规则。该编码规则是不断地按照A(若S串全是0)T(S)=B(若S串全是1)CT(S1)T(S2)(否则把S串分成两个等长的子串S1和S2)对Kitty猫基因01串表达式S进行改写,直至最终被改写成只含有字符“A”、“B”、“C”的符号串。例如T(01001011)=CT(0100)T(1011)=CCT(01)T(00)CT(10)T(11)=CCCT(0)T(1)ACCT(1)T(0)B=CCCABACCBAB请你编写程序帮助小可可求出Kitty猫基因的ABC编码以协助教授开展科研工作。输入描述:测试数据以一行的形式存放Kitty猫基因的01串表达式,字符串长度不超过500输出描述描述:对应测试数据,以一行的形式输出这个Kitty猫基因的ABC编码。#includestdio.h#includestring.hvoidf(chara[],intbegin,intend);intmain(){chara[500];intlength;gets(a);length=strlen(a);f(a,0,length);return0;}voidf(chara[],intbegin,intend){intnum_A=0,num_B=0;inti;for(i=begin;iend;i++){if(a[i]=='0')num_A++;elseif(a[i]=='1')num_B++;}if(num_A==end-begin)printf(A);elseif(num_B==end-begin)printf(B);else{printf(C);f(a,begin,(end+begin)/2);f(a,(end+begin)/2,end);}}10题目标题:最大公约数(闫博钊)题目描述:输入两个整数a,b(1≤a,b≤100000),请编写程序求出他们的最大公约数。输入描述:输入两个整数ab,用空格隔开输出描述描述:输出对应a,b的最大公约数#includestdio.hvoidmain(){longa,b,c,t;scanf(%ld%ld,&a,&b);if(ab){t=a;a=b;b=t;}while(b!=0){c=a%b;a=b;b=c;}printf(%ld,a);}11题目标题:大数相加(彭玉旭)题目描述:a+b这个程序大家都会做,但是如果a和b都比较大时该怎么办呢。其实我们可以把输入一个比较大的数用字符串表示,模拟人工加法方式。如123+23,一个字符串是123另外一个字符串是23,从字符串的最后开始加,得到146.结果最大是两个字符串最长的那个值加1。现在请你计算两个不超过30位的十进制的数的和。知识点:字符串输入,字符的0~9的加法运算。提示:字符0的ASCII是48,注意进位处理输入描述:包行四行,每一行包含不超过30个的由0~9的字符组成字符串。输出描述描述:第一行加第二行的和以及第三行加第四行的和。每一个和占一行#includestdio.h#includestring.hchar*add_high_jd(char*a,char*b){char*s;intlenmax,lenmin,i,key=0,m;if(strlen(b)strlen(a)){s=a;a=b;b=s;}lenmax=strlen(a);lenmin=strlen(b);for(i=1;i=lenmin;i++){m=a[lenmax-i]+b[lenmin-i]-96+key;if(m=10){a[lenmax-i]=m%10+48;key=1;}else{a[lenmax-i]=m+48;key=0;}}for(i=1;i=lenmax-lenmin;i++){m=a[lenmax-lenmin-i]-48+key;if(m=10){a[lenmax-lenmin-i]=m%10+48;key=1;}else{a[lenmax-lenmin-i]=m+48;key=0;}}if(key){for(i=lenmax;i=1;i--)a[i]=a[i-1];a[0]='1';a[lenmax+1]='\0';}returna;12题目标题:字符串比对(谌海军)题目描述:有字符串a(长度=100),b(长度=10),计算b串在a串中出现的次数。解题思路:1、用gets语句从键盘输入两个字符串赋予a,b字符数组;2、建立两层嵌套循环,外循环至a串结束标志为止,内循环至b串结束标志为止;3、内循环中比对b串与a串的数据,满足条件时计数,否则break;4、所有循环结束后输出计数值。输入描述:输入为两个字符串,第一个字符串长度小于100,第二个字符串长度小于10;输出描述描述:输出为一个正整数;#includestdio.h#includestring.hvoidmain(){chara[100],b[10];inti,j,count,result;gets(a);gets(b);result=0;for(i=0;istrlen(a);i++){for(j=0,count=0;jstrlen(b);j++){if(b[j]==a[i+j])count++;elsebreak;}if(count==strlen(b))result++;}printf(%d,result);}}intmain(){chara[40]={'0'},b[40]={'0'},c[40]={'0'},d[40]={'0'},e[40]={'0'},f[40]={'0'};while(gets(a)!=NULL&&gets(b)!=NULL&&gets(c)!=NULL&&gets(d)!=NULL)//??????×???0±í???á??{strcpy(e,add_high_jd(a,b));strcpy(f,add_high_jd(c,d)
本文标题:c语言程序设计题库
链接地址:https://www.777doc.com/doc-1432237 .html