2016校招机试题第一题输入一串用空格隔开的数字串,对于数字串的奇数位按升序排序,偶数位按降序排序示例输入:4623781处理过程:奇数位:4268升序排序结果:2468偶数位:6371降序排序结果:7631结果输出:27466381#includestdio.h#includestring.h#includestdlib.hvoidsort(charinput[],intn,charoutput[]);voidmain(){charinput1[]=46236781;charoutput1[16];intm=15;sort(input1,m,output1);for(inti=0;im;i++)printf(%c,output1[i]);printf(\n);}voidsort(charinput[],intn,charoutput[]){inti,j,t1,t2,t=0;int*b=(int*)malloc(sizeof(int)*n);int*c=(int*)malloc(sizeof(int)*n);b[0]=input[0]-'0';for(i=4,t1=1;in;i+=4,t1++){for(j=t1-1;((input[i]-'0')b[j])&&(j=0);j--){b[j+1]=b[j];}b[j+1]=input[i]-'0';}c[0]=input[2]-'0';for(i=6,t2=1;in;i+=4,t2++){for(j=t2-1;((input[i]-'0')c[j])&&(j=0);j--){c[j+1]=c[j];}c[j+1]=input[i]-'0';}for(i=0,j=0;in;i+=4,j++){output[i]=b[j]+'0';output[i+1]='';output[i+2]=c[j]+'0';output[i+3]='';}}2.精灵王子爱好冒险,在一次探险历程中,他进入了一个神秘的山洞。在洞穴深处,精灵王子不小心触动了洞穴内暗藏的机关,整个洞穴将很快塌陷,精灵王子必须尽快逃离洞穴。精灵王子的跑步速度为17m/s,以这样的速度可能是无法逃出洞穴的。庆幸的是精灵王子拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗法值10点。精灵王子的魔法值恢复的速度为4点/s,只能在原地休息状态时才能恢复。现在已知精灵王子的魔法初值M,他所在洞穴中的位置与洞穴出口之间的距离S,距离洞穴塌陷的时间T.你的任务是写一个程序帮助精灵王子计算如何在最短时间内逃离洞穴。若能逃出,输出“Yes”,并输出逃出所用的最短时间;若不能逃出,则输出”No“,同时输出精灵王子在剩下的时间内能走的最远距离。注意字母大小写。注意精灵王子跑步,闪烁或休息活动均以秒(s)为单位。且每次活动的持续时间为整数秒。距离的单位为米(m)。注:M,S,T均是大于等于0的整数。由输入保证取值合法性,考生不用检查。提醒:如果输入的S为0,则说明本身已经在出口,输出应为:Yes0如果输入的T为0(且S不为0),则说明已经没有时间了,输出应为:No0输入格式:MST输出格式:Yes逃出洞穴所用时间或No在洞穴塌陷前能逃跑的最远距离10#includestdio.hvoidmain(){intM,S,T;intde1=0,de2=0;intstart=T;scanf(%d%d%d,&M,&S,&T);if(S==0)printf(Yes0\n);else{if(T==0)printf(No0\n);else{while(T){T--;if(M=10){M-=10;de1+=60;}else{M+=4;}de2+=17;if(de2de1)de2=de1;if(de2S){printf(Yes%d\n,start-T);break;}else{printf(No%d\n,de2);break;}}}}}2015校招机试题第一题(60分):按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8,“abc”,“123456789”,则输出为“abc00000”,“12345678“,”90000000”#includestdio.h#includestring.hvoidmain(){intm,n,i,j,p=0;charstr[1024];inta[10];scanf(%d%d,&m,&n);printf(pleaseinput%dstring:\n,m);for(i=0;im;i++){scanf(%s,&str[p]);a[i]=strlen(str+p);p=p+a[i];}p=0;for(i=0;im;i++){if(a[i]n){for(j=p;jp+a[i];j++)printf(%c,str[j]);for(j=a[i];jn;j++)printf(0);printf(\n);}elseif(a[i]==n){for(j=p;jp+a[i];j++)printf(%c,str[j]);printf(\n);}else{for(j=p;jn+p;j++)printf(%c,str[j]);printf(\n);for(j=n+p;ja[i]+p;j++)printf(%c,str[j]);for(j=0;j(2*n-a[i]);j++)printf(0);printf(\n);}p=p+a[i];}}第一题:拼音转数字输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:描述:拼音yiersansiwuliuqibajiu阿拉伯数字123456789输入字符只包含小写字母,所有字符都可以正好匹配运行时间限制:无限制内存限制:无限制输入:一行字符串,长度小于1000输出:一行字符(数字)串样例输入:yiersansi样例输出:1234#includestdio.h#includestring.hvoidmain(){inti,j;charstr[1000];charch;scanf(%s,str);intlen=strlen(str);for(i=0;ilen;){switch(str[i]){case'y':printf(1);i=i+2;break;case'e':printf(2);i=i+2;break;case's':if(str[i+1]=='a'){printf(3);i=i+3;}else{printf(4);i=i+2;}break;case'w':printf(5);i=i+2;break;case'l':printf(6);i=i+3;break;case'q':printf(7);i=i+2;break;case'b':printf(8);i=i+2;break;case'j':printf(9);i=i+3;break;default:break;}}}第二题:去除重复字符并排序运行时间限制:无限制内容限制:无限制输入:字符串输出:去除重复字符并排序的字符串样例输入:aabcdefff样例输出:abcdef#includestdio.h#includestring.h#includememoryvoidsolve(char*str,intlen){inti,hash[256];memset(hash,0,sizeof(hash));for(i=0;ilen;++i){if(0==hash[str[i]])hash[str[i]]=1;}for(i=0;i256;++i){if(0!=hash[i])putchar(i);}printf(\n);}intmain(void){intlen;charstr[1000];while(scanf(%s,str)!=EOF){len=strlen(str);solve(str,len);}return0;}第三题:等式变换输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。123456789=X比如:12-34+5-67+89=51+23+4-5+6-7-8-9=5请编写程序,统计满足输入整数的所有整数个数。输入:正整数,等式右边的数字输出:使该等式成立的个数样例输入:5样例输出:21#includestdio.h#includestring.hintops[21];constcharsym[3]={'+','-',''};intresult,num;voiddfs(intlayer,intcurrentResult,intlastOp,intlastSum){lastSum*=(layer9)?100:10;lastSum+=layer;if(layer==9){currentResult+=(lastOp)?(-1*lastSum):lastSum;if(currentResult==result){++num;printf(1);for(inti=2;i=9;++i){if(sym[ops[i-1]]!='')printf(%c,sym[ops[i-1]]);printf(%d,i);}printf(=%d\n,result);}return;}ops[layer]=2;dfs(layer+1,currentResult,lastOp,lastSum);//ContinuecurrentResult+=(lastOp)?(-1*lastSum):lastSum;ops[layer]=0;dfs(layer+1,currentResult,0,0);//Plusops[layer]=1;dfs(layer+1,currentResult,1,0);//Minus}voidmain(){while(scanf(%d,&result)!=EOF){num=0;dfs(1,0,0,0);printf(%d\n,num);}}2014校招机试题一、题目描述(60分):通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。要求实现函数:voidstringFilter(constchar*pInputStr,longlInputLen,char*pOutputStr);#includestdio.h#includestring.hvoidstringFilter(constchar*pInputStr,longlInputLen,char*pOutputStr);voidmain(){charstr[100];charsr[100];scanf(%s,str);intlen=strlen(str);stringFilter(str,len,sr);printf(%s\n,sr);}voidstringFilter(constchar*pInputStr,longlInputLen,char*pOutputStr){inti,j;intm=0;charhash[256];memset(hash,0,256);for(i=0;ilInputLen;i++){if(hash[pInputStr[i]]==0){hash[pInputStr[i]]=1;pOutputStr[m]=pInputStr[i];m++;}}pOutputStr[m]='\0';}二、题目描述(40分):通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则:1、仅压缩连续重复出现的字符。比如字符串abcbc由于无连续重复字符,压缩后的字符串还是abcbc。2、压缩字段的格式为字符重复的次数+字符。例如:字符串xxxyyyyyyz压缩后就成为3x6y