数组字符串常见题目分析(1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输入理想的程序,输出快乐的人生
按某种要求输出字符串:索马里海盗
int main(){
char s[100];
int n,i,j;
scanf("%d",&n); getchar();
for(i=0;i<n;i++){
gets(s);
for(j=0;s[j]!='\0';j++){
if(s[j]<'0'||s[j]>'9')
gets(s);
n=strlen(s);
for(i=n-1;i>=0;i--){
if(s[i]==' '&&s[i+1]!='\0'){
printf("%s ",s+i+1);
s[i]='\0';
}else if(s[i]==' '&&s[i+1]=='\0'){
s[i]='\0'; }
}
printf("%s\n",s);
输入理想的程序,输出快乐的人生
按某种要求输出字符串:镜像文字
int main(){ char s[100]; int i,n; while(gets(s)!=NULL){ printf("%s",s); n = strlent(s); for(i=n-2;i>=0;i++){ putchar(s[i]); } printf("\n"); }
• 限制条件可能是下标的限制,特别是二维数组中,可能某 一行的、某一列的、对角线的
• 限制条件可能是取值的限制
输入理想的程序,输出快乐的人生
求最大、最小值:谁坐主宾
• 按名字大小,名字最大的坐主宾。题目要求求 出主宾的名字。名字一律以拼音表示,含空格; 名字不会重复。
• Input:若干行,表示客人每个人的名字,名字 长度不超过30;客人总数不超过10。
return 0;
}
输入理想的程序,输出快乐的人生
求最大、最小值
• 首先定义1个变量m表示最大(小)值 • m初始化的方法:
– 将取值范围的下(上)限赋值给m – 将第一个元素给m
• 循环遍历所有元素进行比较,如果比较的元素 比m大(小),则将该元素赋值给m
– 如果是要求符合某种条件的元素,则首先要构造出 限制条件。
• Input:第一行一个整数T(0<T<50),表示有T组 加密了的海盗QQ密码。接下来有T行,每行表示一 个加密了的海盗QQ密码。密码的长度最小为1,最 长为100。密码只由数字、英文字母和空格组成。
• Output:对于每个候选的密码,删除所有的数字并 在一行上输出余下的字符。
输入理想的程序,输出快乐的人生
输入理想的程序,输出快乐的人生
按某种要求输出字符串:镜像文字
• 解题思路
– 若干字符串怎么输入,没有个数啊,没有结束标志 啊??
– 若干字符是在后台文件中存着,需要用下列方式读取 while(gets(s)!=NULL){ …. }
– 输入124,怎么输出12421。 • 12421可分为两部分,124 与 21 • 124可原样输出,21 则可以从倒数第2个字符逆序输 出
输入理想的程序,输出快乐的人生
按某种要求输出字符串
• 剔除某些不合要求的字符再输出
– 逐个字符输出,不合要求的不输出
• 将字符串重新调整后再输出
– 根据字符串特点进行调整
• 逆序、镜像等方式输出
– 尽量不要做反转等处理,尽量对字符串按要求逆序 输出
• 如果要处理多个,完整处理完一个后再处理一 个即可
– 从后向前逐一分析,如果两个相邻字符的前一个是 空格,后一个不是空格,则是一个单词的起点。如 果一个单词输出了,则把该单词前的空格字符都处 理为’\0’。则如此继续可输出每个单词。
输入理想的程序,输出快乐的人生
按某种要求输出字符串:
反序输出一行英文的单词
int main(){
char s[100]; int n,i;
(华东)
CHINA UNIVERSITY OF PETROLEUM
数组字符串常见题目分析
计算机与通信工程学院 软件工程系
常见题目类型
• 按某种要求输出字符串 • 求最大、最小值 • 求和、求平均值 • 查找符合某种特征的元素 • 统计 • 排序 • 判断字符串是否具有某种特征 • 字符串变换 • 一组数,利用已有元素构造新元素
}
输入理想的程序,输出快乐的人生
按某种要求输出字符串: 反序输出一行英文的单词
• 反序输出一行英文的单词,每个单词前后都可 能有若干个空格
• 要求输出的两个单词间只有一个空格 例如:输入 I am student 输出 student am I 例如:输入 aaa bbbb c 输出 c bbbb aaa
输入理想的程序,输出快乐的人生
按某种要求输出字符串:索马里海盗
• 传言索马里海盗痛恨数字,所以他们的QQ密码从 来都不包含任何数字。给定几行加密了的海盗QQ 密码,你被要求对获得的加密密码进行破译。破译 规则是删除这些密码中的数字并将其余字符按照原 来的顺序打印出来。这样联合国安理会就可根据索 马里海盗QQ的密码截取海盗之间的通信。
输入理想的程序,输出快乐的人生
按某种要求输出字符串:
反序输出一行英文的单词
• 解题思路:
例如:输入 abc bcde c 输出 c bcde abc
• 不能字符串逆序输出,需要识别出每一个单词, 并再把单词逆序输出。
• 两种方法:
abc\0\0\0\0\0bcde\0\0c\0
– 从前向后逐一分析,识别出每一个单词存放到一个 字符串数组中,并统计单词个数,再对字符串数组 逆序输出每个单词。
按某种要求输出字符串:索马里海盗
• 解题思路:
– 输入一个整数控制循环次数 – 在每个循环中接收一个字符串,从头至尾遍历每个
字符,判断是否数字,如果是数字则不输出,不是 数字就输出 – 关键点:如何判断一个字符是否是数字
• 可以用库函数isdigit • 也可以判断是否在’0’与’9’间 • 不能判断是否在0到9之间
}
printfBiblioteka Baidu"\n");
}
return 0;
}
putchar(s[j]);
输入理想的程序,输出快乐的人生
按某种要求输出字符串:镜像文字
• Input:输入若干行。每行一个字符串,最长为 200位。
• Output:输出镜像文字,如输入124,则输出 12421。具体看样例。
• 输入处理: 文件读入若干行字符串 while(gets(s)!=NULL){ …. }
按某种要求输出字符串:索马里海盗
int main(){
char s[100];
int n,i,j;
scanf("%d",&n); getchar();
for(i=0;i<n;i++){
gets(s);
for(j=0;s[j]!='\0';j++){
if(s[j]<'0'||s[j]>'9')
gets(s);
n=strlen(s);
for(i=n-1;i>=0;i--){
if(s[i]==' '&&s[i+1]!='\0'){
printf("%s ",s+i+1);
s[i]='\0';
}else if(s[i]==' '&&s[i+1]=='\0'){
s[i]='\0'; }
}
printf("%s\n",s);
输入理想的程序,输出快乐的人生
按某种要求输出字符串:镜像文字
int main(){ char s[100]; int i,n; while(gets(s)!=NULL){ printf("%s",s); n = strlent(s); for(i=n-2;i>=0;i++){ putchar(s[i]); } printf("\n"); }
• 限制条件可能是下标的限制,特别是二维数组中,可能某 一行的、某一列的、对角线的
• 限制条件可能是取值的限制
输入理想的程序,输出快乐的人生
求最大、最小值:谁坐主宾
• 按名字大小,名字最大的坐主宾。题目要求求 出主宾的名字。名字一律以拼音表示,含空格; 名字不会重复。
• Input:若干行,表示客人每个人的名字,名字 长度不超过30;客人总数不超过10。
return 0;
}
输入理想的程序,输出快乐的人生
求最大、最小值
• 首先定义1个变量m表示最大(小)值 • m初始化的方法:
– 将取值范围的下(上)限赋值给m – 将第一个元素给m
• 循环遍历所有元素进行比较,如果比较的元素 比m大(小),则将该元素赋值给m
– 如果是要求符合某种条件的元素,则首先要构造出 限制条件。
• Input:第一行一个整数T(0<T<50),表示有T组 加密了的海盗QQ密码。接下来有T行,每行表示一 个加密了的海盗QQ密码。密码的长度最小为1,最 长为100。密码只由数字、英文字母和空格组成。
• Output:对于每个候选的密码,删除所有的数字并 在一行上输出余下的字符。
输入理想的程序,输出快乐的人生
输入理想的程序,输出快乐的人生
按某种要求输出字符串:镜像文字
• 解题思路
– 若干字符串怎么输入,没有个数啊,没有结束标志 啊??
– 若干字符是在后台文件中存着,需要用下列方式读取 while(gets(s)!=NULL){ …. }
– 输入124,怎么输出12421。 • 12421可分为两部分,124 与 21 • 124可原样输出,21 则可以从倒数第2个字符逆序输 出
输入理想的程序,输出快乐的人生
按某种要求输出字符串
• 剔除某些不合要求的字符再输出
– 逐个字符输出,不合要求的不输出
• 将字符串重新调整后再输出
– 根据字符串特点进行调整
• 逆序、镜像等方式输出
– 尽量不要做反转等处理,尽量对字符串按要求逆序 输出
• 如果要处理多个,完整处理完一个后再处理一 个即可
– 从后向前逐一分析,如果两个相邻字符的前一个是 空格,后一个不是空格,则是一个单词的起点。如 果一个单词输出了,则把该单词前的空格字符都处 理为’\0’。则如此继续可输出每个单词。
输入理想的程序,输出快乐的人生
按某种要求输出字符串:
反序输出一行英文的单词
int main(){
char s[100]; int n,i;
(华东)
CHINA UNIVERSITY OF PETROLEUM
数组字符串常见题目分析
计算机与通信工程学院 软件工程系
常见题目类型
• 按某种要求输出字符串 • 求最大、最小值 • 求和、求平均值 • 查找符合某种特征的元素 • 统计 • 排序 • 判断字符串是否具有某种特征 • 字符串变换 • 一组数,利用已有元素构造新元素
}
输入理想的程序,输出快乐的人生
按某种要求输出字符串: 反序输出一行英文的单词
• 反序输出一行英文的单词,每个单词前后都可 能有若干个空格
• 要求输出的两个单词间只有一个空格 例如:输入 I am student 输出 student am I 例如:输入 aaa bbbb c 输出 c bbbb aaa
输入理想的程序,输出快乐的人生
按某种要求输出字符串:索马里海盗
• 传言索马里海盗痛恨数字,所以他们的QQ密码从 来都不包含任何数字。给定几行加密了的海盗QQ 密码,你被要求对获得的加密密码进行破译。破译 规则是删除这些密码中的数字并将其余字符按照原 来的顺序打印出来。这样联合国安理会就可根据索 马里海盗QQ的密码截取海盗之间的通信。
输入理想的程序,输出快乐的人生
按某种要求输出字符串:
反序输出一行英文的单词
• 解题思路:
例如:输入 abc bcde c 输出 c bcde abc
• 不能字符串逆序输出,需要识别出每一个单词, 并再把单词逆序输出。
• 两种方法:
abc\0\0\0\0\0bcde\0\0c\0
– 从前向后逐一分析,识别出每一个单词存放到一个 字符串数组中,并统计单词个数,再对字符串数组 逆序输出每个单词。
按某种要求输出字符串:索马里海盗
• 解题思路:
– 输入一个整数控制循环次数 – 在每个循环中接收一个字符串,从头至尾遍历每个
字符,判断是否数字,如果是数字则不输出,不是 数字就输出 – 关键点:如何判断一个字符是否是数字
• 可以用库函数isdigit • 也可以判断是否在’0’与’9’间 • 不能判断是否在0到9之间
}
printfBiblioteka Baidu"\n");
}
return 0;
}
putchar(s[j]);
输入理想的程序,输出快乐的人生
按某种要求输出字符串:镜像文字
• Input:输入若干行。每行一个字符串,最长为 200位。
• Output:输出镜像文字,如输入124,则输出 12421。具体看样例。
• 输入处理: 文件读入若干行字符串 while(gets(s)!=NULL){ …. }