|
1.编辑与调试 2.顺序结构 3.选择结构一 4.选择结构二 5.循环一 6.循环二 7.函数
8.递归与嵌套函数 9.一维数组和二维数组 10.字符数组 11.指针一 12.指针二 13.结构体
14.文件
字符数组
第1关:字符逆序
任务描述
题目描述:输入一个字符串,输出反序后的字符串。
输入
一行字符
输出
逆序后的字符串
测试说明
样例输入:
123456abcdef
样例输出:
fedcba654321
特别注意:样例输出没有进行换行操作
解题程序一
/* 第1关:字符逆序 */
#include<stdio.h>
#include<string.h>
char s[1024];
int main(void)
{
/*********Begin*********/
scanf(&#34;%s&#34;, s);
int i;
for(i = strlen(s) - 1; i >= 0; i--)
putchar(s);
putchar(&#39;\n&#39;);
/*********End**********/
return 0;
}
解题程序二
/* 第1关:字符逆序 */
#include<stdio.h>
#include<string.h>
char s[1024];
int main(void)
{
/*********Begin*********/
scanf(&#34;%s&#34;, s);
int start = 0, end = strlen(s) - 1;
while(start < end) {
char tmp = s[start];
s[start] = s[end];
s[end] = tmp;
start++, end--;
}
printf(&#34;%s\n&#34;, s);
/*********End**********/
return 0;
}
第2关:字符统计
任务描述
题目描述:对于给定的一个字符串,统计其中数字字符出现的次数。
输入
输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。
输出
对于每个测试实例,输出该串中数值的个数,每个输出占一行。、
测试说明
样例输入:
2
asdfasdf123123asdfasdf
asdf111111111asdfasdfasdf
样例输出:
6
9
解题程序
/* 第2关:字符统计 */
#include<stdio.h>
#include<string.h>
char s[1024];
int main(void)
{
/*********Begin*********/
int n;
scanf(&#34;%d&#34;, &n);
while(n--) {
scanf(&#34;%s&#34;, s);
int cnt = 0, i;
for(i = 0; s; i++)
if(isdigit(s)) cnt++;
printf(&#34;%d\n&#34;, cnt);
}
/*********End**********/
return 0;
}
第3关:字符插入
任务描述
题目描述:输入两个字符串a和b,将b串中的最大字符插入到a串中最小字符后面。
输入
输入一段文字
输出
输入两个字符串a和b。
测试说明
样例输入:
MynameisAmy
MynameisJane
样例输出:
MynameisAymy
提示:
字符串长度不超过100
注意:使用gets()**函数会引起警告并不是报错,只要代码编译正确并不会影响测评结果。
推荐使用:fgets()函数。
解题程序
/* 第3关:字符插入 */
#include <stdio.h>
#include <string.h>
#define N 100
char s1[N + 1], s2[N + 1];
int main(void)
{
/*********Begin*********/
scanf(&#34;%s%s&#34;, s1, s2);
int i, j, mi1 = 0, mi2 = 0;
char min1 = s1[0], max2 = s2[0];
for(i = 1; s1; i++)
if(s1 < min1) min1 = s1, mi1 = i;
for(i = 1; s2; i++)
if(s2 > max2) max2 = s2, mi2 = i;
for(i = 0; i <= mi1; i++)
putchar(s1);
putchar(s2[mi2]);
for(i = mi1 + 1; s1; i++)
putchar(s1);
putchar(&#39;\n&#39;);
/*********End**********/
return 0;
}
第4关:字符串处理
任务描述
题目描述:编写程序,输入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。如输入&#34;BEIJING&#34;, “123”, 3,则输出:“BEI123JING”。
输入
第一行和第二行分别输入两个字符串s1和s2,第三行输入插入位置f。
每个字符串的长度不超过100个字符。
输出
输出一行插入后的字符串。
测试说明
样例输入:
BEIJING
123
3
样例输出:
BEI123JING
注意:使用gets()函数会引起警告并不是报错,只要代码编译正确并不会影响测评结果。
推荐使用:fgets()函数。
解题程序
/* 第4关:字符串处理 */
#include<stdio.h>
#include<string.h>
char s1[1024], s2[1024];
int main(void)
{
/*********Begin*********/
int n;
scanf(&#34;%s%s%d&#34;, s1, s2, &n);
strcat(s2, s1 + n);
strcpy(s1 + n, s2);
printf(&#34;%s\n&#34;, s1);
/*********End**********/
return 0;
}
第5关:字符串统计
任务描述
题目描述:输入一段字符(由空格、字母和数字几种组成,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串。
输入
输入一段文字
输出
输入一段字符,以stop作为最后输入的字符串。
测试说明
样例输入:
My name is Amy
My name is Jane
stop
样例输出:
11 name
12 name
提示:
字符串长度不超过100。
注意:使用gets()函数会引起警告,但正确使用不影响测评结果。
推荐使用:fgets()函数。
解题说明
题目中的“字符串长度不超过100。”是指每个单词的长度不超过100,并不是一行字符数不超过100。这是一个坑啊!
解题程序
/* 第5关:字符串统计 */
#include<stdio.h>
#include <string.h>
#define N 1024
char s[N + 1], t[N + 1];
int main(void)
{
/*********Begin*********/
fgets(s, N, stdin);
for(;;) {
if(strncmp(s, &#34;stop&#34;, 4) == 0 && s[4] == &#39;\n&#39;)
break;
int sum = 0, maxlen = 0;
char *p;
p = strtok(s, &#34; \t\n&#34;);
while(p) {
int len = strlen(p);
if(len > maxlen) {
maxlen = len;
strcpy(t, p);
}
sum += len;
p = strtok(NULL, &#34; \t\n&#34;);
}
printf(&#34;%d %s\n&#34;, sum, t);
fgets(s, N, stdin);
}
/*********End**********/
return 0;
}
第6关:字符串排序
任务描述
题目描述:输入3行,每行n个字符串,按由小到大的顺序输出
输入
3行字符串
输出
按照从小到大输出成3行
测试说明
样例输入:
cde
afg
abc
样例输出:
abc
afg
cde
解题程序
/* 第6关:字符串排序 */
#include<stdio.h>
#include<string.h>
#define N 1024
char s1[N], s2[N], s3[N];
int main(void)
{
/*********Begin*********/
scanf(&#34;%s%s%s&#34;, s1, s2, s3);
if(strcmp(s1, s2) <= 0) {
if(strcmp(s2, s3) <= 0)
printf(&#34;%s\n%s\n%s\n&#34;, s1, s2, s3);
else {
if(strcmp(s3, s1) <= 0)
printf(&#34;%s\n%s\n%s\n&#34;, s3, s1, s2);
else
printf(&#34;%s\n%s\n%s\n&#34;, s1, s3, s2);
}
} else {
if(strcmp(s1, s3) <= 0)
printf(&#34;%s\n%s\n%s\n&#34;, s2, s1, s3);
else {
if(strcmp(s3, s2) <= 0)
printf(&#34;%s\n%s\n%s\n&#34;, s3, s2, s1);
else
printf(&#34;%s\n%s\n%s\n&#34;, s2, s3, s1);
}
}
/*********End**********/
return 0;
}
1.编辑与调试 2.顺序结构 3.选择结构一 4.选择结构二 5.循环一 6.循环二 7.函数
8.递归与嵌套函数 9.一维数组和二维数组 10.字符数组 11.指针一 12.指针二 13.结构体
14.文件 |
|