产品展示网站开发,网站建设ssc源码修复,怎样做网站镜像,网站过期后本文结合PTA专项练习带领读者掌握数组#xff0c;刷题为主注释为辅#xff0c;在代码中理解思路#xff0c;其它不做过多叙述。 目录 7-1 字符串逆序7-2 字符串替换7-3 统计字符出现次数7-4 IP地址转换7-1 删除重复字符7-2 说反话-加强版7-3 数组-回文串7-4 数组-无聊的菇菇… 本文结合PTA专项练习带领读者掌握数组刷题为主注释为辅在代码中理解思路其它不做过多叙述。 目录 7-1 字符串逆序7-2 字符串替换7-3 统计字符出现次数7-4 IP地址转换7-1 删除重复字符7-2 说反话-加强版7-3 数组-回文串7-4 数组-无聊的菇菇一族7-5 数组-文本加密7-6 数组-动车上 7-1 字符串逆序
输入一个字符串对该字符串进行逆序输出逆序后的字符串。 输入格式
输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。 输出格式
在一行中输出逆序后的字符串。 输入样例
Hello World!
输出样例
!dlroW olleH
方法一数组实现
#include stdio.h
int main()
{char c,a[80];int i0;while((cgetchar())!\n){a[i]c;i;}for(int ji-1;j0;j--){printf(%c,a[j]);}
}方法二引入gets及strlen
#include stdio.h
#include string.h
int main()
{char a[80];gets(a);for(int istrlen(a)-1;i0;i--)printf(%c,a[i]);}7-2 字符串替换
本题要求编写程序将给定字符串中的大写英文字母按以下对应规则替换
原字母 对应字母
A Z
B Y
C X
D W
… …
X C
Y B
Z A输入格式
输入在一行中给出一个不超过80个字符、并以回车结束的字符串。 输出格式
输出在一行中给出替换完成后的字符串。 输入样例
Only the 11 CAPItaL LeTtERS are replaced.
输出样例
Lnly the 11 XZKRtaO OeGtVIH are replaced.
#include stdio.h
int main()
{char c,a[80],b[80];int i0;while((cgetchar())!\n){a[i]c;i;}for(int j0;ji-1;j){if(a[j]Aa[j]Z){b[j]AZ-a[j];}else b[j]a[j];printf(%c,b[j]);}
}7-3 统计字符出现次数
本题要求编写程序统计并输出某给定字符在给定字符串中出现的次数。 输入格式
输入第一行给出一个以回车结束的字符串少于80个字符第二行输入一个字符。 输出格式
在一行中输出给定字符在给定字符串中出现的次数。 输入样例
programming is More fun! m
输出样例
2
方法一数组实现
#include stdio.h
int main()
{char a[80],c,d;int i0,count0;while((cgetchar())!\n){a[i]c;i;}dgetchar();for(int ji-1;j0;j--){if(da[j])count;}printf(%d,count);
}
方法二引入gets及strlen
#include stdio.h
#include string.h
int main()
{char a[80],c;int count0;gets(a);cgetchar();for(int i0;istrlen(a);i){if(a[i]c){count;}}printf(%d,count);
}7-4 IP地址转换
一个IP地址是用四个字节每个字节8个位的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。 输入格式
输入在一行中给出32位二进制字符串。 输出格式
在一行中输出十进制格式的IP地址其由4个十进制数组成分别对应4个8位的二进制数中间用“.”分隔开。 输入样例
11001100100101000001010101110010
输出样例
204.148.21.114
#include stdio.h
#include math.h
int main()
{char a[33];int t7;//当前处理的二进制位在8位中的位置int sum0;//当前部分的十进制结果gets(a);for(int i0;i32;i){a[i]a[i]-48;//将字符型的0~1转换成对应的整型数0~1suma[i]*pow(2,t);if(t0)//如果是8位中的最后一位{printf(%d,sum);t7;sum0;if(i!31)printf(.);}elset--;}
}7-1 删除重复字符
本题要求编写程序将给定字符串去掉重复的字符后按照字符ASCII码顺序从小到大排序后输出。 输入格式
输入是一个以回车结束的非空字符串少于80个字符。 输出格式
输出去重排序后的结果字符串。 输入样例
ad2f3adjfeainzzzv
输出样例
23adefijnvz
#include stdio.h
#include string.h
int main()
{char a[80];gets(a);for(int i0;istrlen(a)-1;i){for(int j0;jstrlen(a)-1;j){if(a[j]a[j1]){char ta[j];a[j]a[j1];a[j1]t;}}}//冒泡排序得到abccc//如果前后不一致就打印出来 所以得到abcfor(int i0;istrlen(a);i){if(a[i]!a[i1])printf(%c,a[i]);}}7-2 说反话-加强版
给定一句英语要求你编写程序将句中所有单词的顺序颠倒输出。 输入格式
测试输入包含一个测试用例在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成其中单词是由英文字母大小写有区分组成的字符串单词之间用若干个空格分开。 输出格式
每个测试用例的输出占一行输出倒序后的句子并且保证单词间只有1个空格。 输入样例
Hello World Here I Come
输出样例
Come I Here World Hello
#includestdio.h
#includestring.h
int main()
{char a[500001],b[500001];gets(a); // 输入字符串int i,c,j;int count0;for(i0;a[i] ;i) // 计算开头的连续空格数{count;}for(istrlen(a)-1;i0;){if(a[i]! ){c0;b[0]\0;while(a[i]! i0) // 提取单词{b[c]a[i--];}//类似于把come中e、m、o、c分别放入b数组//此时b数组为emoc将其逆序输出即可for(jc-1;j0;j--) // 逆序输出单词{printf(%c,b[j]);}if(counti1) ; // 如果开头有空格则不输出else printf( ); // 输出单词之间的空格}else i--;}
}7-3 数组-回文串
回文串是正着读和反着读都一样的字符串例如“level”“noon”这些都是回文串 现在希望你能找出输入的所有字符串中的回文串。 输入格式:
第一行为一个正整数N0 N 1000表示有N个字符串
接下来N行每行都是一个字符串每个字符串长度不超过1000。 输出格式:
输出所有是回文串的字符串每输出一个字符串输出一个回车包括最后一个字符串。
输入样例1: 3 abcabc AbbbbA cccc
输出样例1: AbbbbA cccc
#include stdio.h
#include string.h
int main()
{int n;scanf(%d,n);getchar();//读取数字到字符串的换行符 避免回车的影响for(int i0;in;i){char a[1001];gets(a);int lenstrlen(a);if(a[len-1]\n)//将字符串到字符串的换行符去掉{a[len-1]\0;len--;}int flag0;for(int i0;ilen/2;i){if(a[i]!a[len-i-1]){flag1;break;}}if(flag0)printf(%s\n,a);}
}7-4 数组-无聊的菇菇一族
戈壁上只居住着菇菇一族们于是菇菇们实在太无聊了除了吃饭睡觉菇菇们天天都无所事事。于是菇菇们想出了一个方法来消磨时间。菇菇们分成几组每组按一定顺序排列按从最后一个到第一个的顺序报出菇菇们的名字。报错的一组菇菇将要接受打理节操田地一周的惩罚太可怕了.。你能帮帮他们么 输入格式:
第一行包括一个正整数N表示有N组菇菇。
接下来N行每行包含一个字符串长度小于100仅包含小写字母每个字母表示一个菇菇的名字。 输出格式:
输出N行每行为该组菇菇报名字的顺序。 输入样例:
2 abcd sama
输出样例:
dcba amas
#include stdio.h
#include string.h
int main()
{int n;scanf(%d,n);getchar();for(int i1;in;i){char a[100];gets(a);for(int istrlen(a)-1;i0;i--){printf(%c,a[i]);}printf(\n);}
}7-5 数组-文本加密
某特工提供了一段文本按照以下规则对逐个字符进行加密称为密文首先将大小写进行切换大写转换成小写、小写转换成大写之后再将字母替换成字母表中两位之前的字母如‘c’替换成‘a’‘b’替换成‘z’‘A’替换成‘Y’。同时该特工也提供了该密文的解析请判断该解析是否正确。 输入格式:
输入仅一行包含两个字符串中间以一个逗号“,”隔开。每个字符串的长度分别不超过10000个字符仅包含26个字母含大小写字母‘a’-‘z’和大写字母‘A’-‘Z’且保证两个字符的长度相等。 输出格式:
判断密文解析是否正确正确则输出“Yes”错误则输出“No”。 输入样例:
ccAAbB,AAyyZz
输出样例:
Yes
#include stdio.h
#include string.h
#include ctype.hint main()
{char a[10001], b[10001], c[10001];scanf(%[^,],%s,a,b);int lenstrlen(a);for (int i0;ilen;i) {// 切换大小写if (isupper(a[i])) c[i]tolower(a[i]);elsec[i]toupper(a[i]);// 字母替换if(isalpha(a[i]))if(c[i]A||c[i]B||c[i]a||c[i]b)c[i]c[i]24;else if((c[i]Cc[i]Z)||(c[i]cc[i]z))c[i]c[i]-2;}c[len] \0;if(strcmp(b,c)0) {printf(Yes);}else {printf(No);}
}
7-6 数组-动车上
就这样阿翔和阿花分手了阿翔独自一人登上了开往福大的动车……
阿翔刚在自己的座位上坐下便听到一声问候“同学你好。”阿翔扭过头一看见身旁是一美女内心暗喜吞吞吐吐地说“你……你好……请问有什么事么”女生说“能不能麻烦你和我的朋友换个位置”阿翔一愣顺着她所指方向望去见一帅哥。阿翔强装笑颜答道“好的。”
阿翔坐在帅哥的座位上耳边萦绕着那对情侣的欢声笑语。他默默地从书包里掏出那叠英语卷。这一次为了证明自己的帅气阿翔要更华丽地调教这些考卷——
对于一个字符串S设其第i个字符为Si将每k个连续字符划分为一组则{S0,S1,…,S(k-1)}为第0组{Sk,S(k1),…,S(2k-1)}为第1组以此类推。阿翔要做的就是将第i组i从0开始字符逆置i次逆置即倒序如将abc置为cba。若字符串剩下的字符不够凑成一组则不对这些字符进行操作。
输入格式: 第一行为一个正整数k大小不限可能超过字符串长度 第二行为一个字符串长度不超过100不含空格。
输出格式: 输出仅一行即完成操作后所得的字符串。
输入样例: 5 qwertyuiopasdfghjkl
输出样例: 在这里给出相应的输出。例如 qwertpoiuyasdfghjkl
#include stdio.h
#include string.h
int main()
{int k;char c[101];scanf(%d,k);scanf(%s,c);int lenstrlen(c);int a[101]{0};//用于记录字符是否被输出过int groupcountlen/k-1;//计算分组数量int j,i;for(j0;jgroupcount;j2){//输出每组的前k个字符for(ij*k;i(j1)*k;i){if(ilen)break;printf(%c,c[i]);a[i];}//逆序输出每组的后k个字符for(i(j2)*k-1;i(j1)*k;i--){if(ilen)break;printf(%c,c[i]);a[i];}
}for(i0;ilen;i){if(a[i]0)printf(%c,c[i]);//输出没有被标记的字符}
}