目录A.Hello WorldB.字符数数C.笨小明D.最小字符串E.鹦鹉学舌F.鹦鹉学画、G.崩铁启动H.字符串大小比较I.小明的环形字符串J.找整数K.Your Ride Is HereL.小B的传说M.流星N.龙卷风摧毁停车场O. 龙卷风摧毁停车场(升级版)P.最小Move串A.Hello World按题意输出即可。#includestdio.hintmain(){chars[25];scanf("%s",s);printf("Hello %s!\n",s);return0;}B.字符数数输入n,然后输入字符串s,用四个变量分别计数,遍历一遍字符串,判断每个字符是什么,给对应的变量+1即可输入字符串gets(s),就要用getchar()吃掉换行,因为gets()什么都读;如果用scanf("%s", s),就不用getchar,因为scanf会自动过滤掉空格和换行ACcode#includestdio.h#includestring.hintmain(){intn;// 字符串长度nchars[1010];//字符串sintcnt1=0,cnt2=0,cnt3=0,cnt4=0;//分别记录四个数量scanf("%d",n);getchar();//getchar()吃掉scanf剩下的换行gets(s);//输入sfor(inti=0;in;i++){if(s[i]='a's[i]='z')cnt1++;//小写字母elseif(s[i]='A's[i]='Z')cnt2++;//大写字母elseif(s[i]='0's[i]='9')cnt3++;//数字elsecnt4++;//其他字符}printf("%d %d %d %d",cnt1,cnt2,cnt3,cnt4);return0;}C.笨小明输入字符串s,用一个cnt数组来存单词中的每个字母出现的次数,遍历一遍每个字符,给对应的字母+1,(cnt[s[i] - 'a']++;),通过-‘a’将a~z映射到cnt数组的0~25的位置上,同时每次更新minn和maxn的值,最后判断质数即可注意:0和1也不是质数,要特判一下注意:这题更新maxn和minn的值时要注意,题中要的是单词中字母的出现次数,所以minn最小也要是1,不能直接从'a'遍历到‘z'来更新,因为如果有单词中没出现过的字母,minn就被更新成0了,答案就错了ACcode#includestdio.h#includestring.hintcnt[26];//cnt数组,用来统计a~z在单词中出现的次数,a对应0,b对应1 ... z对应25intmain(){chars[105];intmaxn=0,minn=101;//初始化maxn为一个极小值,maxn为一个极大值gets(s);//输入sintn=strlen(s);//s的长度for(inti=0;in;i++){cnt[s[i]-'a']++;//给cnt数组对应的位置+1, a对应0,b对应1 ... z对应25intt=cnt[s[i]-'a'];if(tmaxn)maxn=t;//如果比最大值大,就更新最大值if(tminn)minn=t;//如果比最小值小,就更新最小值}intx=maxn-minn;intflag=0;//判断质数if(x==1||x==0)flag=1;//特判一下,0和1也不是质数for(inti=2;i*i=x;i++){if(x%i==0){flag=1;break;}}if(flag==0)printf("Lucky Word\n%d",x);//是质数elseprintf("No Answer\n0");//不是质数return0;}D.最小字符串这题我们可以贪心地删掉第一个满足s[i]s[i+1]的字符s[i],就可以让字符串最小,要注意:如果字符串长度是1就不能删了,如果这个时候还删,就全删没了,就只剩下空字符,他就不算字符串了证明:用反证法,如果我们不删除这个位置,而是删除其他位置的字符,那么会使得较大的字符保留在字符串中,导致字典序变大。因此,删除第一个满足s[i]s[i+1]的字符s[i]的字符是使得字符串最小的唯一方法。代码实现:首先要找到第一个满足s[i]s[i+1]的位置。用while循环,从t=0开始找,如果s[t]=s[t+1]就继续判断下一个位置,直到第一次出现s[t]s[t+1],循环终止,这时下标为t的字符就是你要删的字符,只需for循环从0~n-1遍历字符串s的每一个字符并输出,当遍历到t时直接跳过就行了ACcode#includestdio.h#includestring.hintmain(){intn;chars[200005];scanf("%d",n);getchar();//getchar()吃掉scanf留在缓冲区中的换行gets(s);if(n==1){//特判只有1个字符的情况puts(s);//直接输出return0;//直接提前结束程序,防止多输出了什么东西}intt=0;//从0开始判断,用来记录要删除的字符的下标while(tns[t]=s[t+1]){//从第一个字符开始判断,满足条件就继续判断下一个,直到遇到第一个不满足的,循环终止。这时的t就是我们想删掉的那个字符的下标t++;//t移到下一个位置,继续判断}for(inti=0;in;i++){if(i!=t)printf("%c",s[i]);//不输出就相当于删除,到t就跳过,别的一个一个输出}return0;}E.鹦鹉学舌输入一个字符串,然后原样输出ACcode#includestdio.hintmain(){chars[200005];gets(s);//输入puts(s);//输出return0;}F.鹦鹉学画、G.崩铁启动输入n个字符串,原样输出ACcode#includestdio.hintmain(){intn;
阅读完成 · 觉得有帮助?