字符串相关应用
题1:字符串正反序连接
将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。
函数接口定义:
void fun (char *s, char *t);
其中s
和t
都是用户传入的参数。函数将s
所指字符串的正序和反序进行连接,形成一个新串放在t
所指的数组中。
裁判测试程序样例:
#include <stdio.h>
void fun (char *s, char *t);
int main()
{ char s[100], t[100];
scanf("%s", s);
fun(s, t);
printf("The result is: %s\n", t);
return 0;
}
/* 请在这里填写答案 */
输入样例:
abcd
输出样例:
The result is: abcddcba
解答:
void fun (char *s, char *t)
{
int i=0,j;
for(j=0;s[j]!='\0';j++)
{
t[i++] = s[j];
}
for(j--;j>=0;j--)
{
t[i++]=s[j];
t[i]='\0';
}
}
题2:复制部分字符串
将一个字符串中从第m个字符开始的全部字符复制成为另一个字符串。
函数接口定义:
void strcopy(char *str1,char *str2,int m);
其中 str1
、str2
、m
都是用户传入的参数。函数在指针str1
所指的字符串中从第m
个字符开始的全部字符复制到指针str2
所指向数组中。
裁判测试程序样例:
#include<stdio.h>
void strcopy(char *str1,char *str2,int m);
int main()
{ int i,m;
char *p1,*p2,str1[80],str2[80];
p1=str1; p2=str2;
gets(p1);
scanf("%d",&m);
strcopy(str1,str2,m);
puts(p1);puts(p2);
return 0;
}
/* 请在这里填写答案 */
输入样例:
abcdefg
3
输出样例:
abcdefg
cdefg
解答:
void strcopy(char *str1,char *str2,int m)
{
int i,t=0;
for(i=m-1;str1[i]!='\0';i++)
{
str2[t++]=str1[i];
}
}
题3:将字符串中数字字符替换成#
函数fun的功能是将字符串中每一个数字字符都替换成一个#字符。
函数接口定义:
void fun(char *s);
其中s
是用户传入的参数。函数将指针s
所指的字符串中每一个数字字符都替换成一个#字符。
裁判测试程序样例:
#include <stdio.h>
void fun(char *s);
int main()
{
char a[80],*s;
s=a;
gets(s);
fun(s);
printf("the result: %s\n", s);
return 0;
}
/* 请在这里填写答案 */
输入样例:
A1B23CD
输出样例:
the result: A#B##CD
解答:
void fun(char *s)
{
int i,t=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]>=48&&s[i]<=57)
{
s[i]=35;
}
}
}
题4:删除字符串中数字字符
删除一个字符串中的所有数字字符。
函数接口定义:
void delnum(char *s);
其中 s
是用户传入的参数。 函数的功能是删除指针 s
所指的字符串中的所有数字字符。
裁判测试程序样例:
#include "stdio.h"
void delnum(char *s);
int main ()
{ char item[80];
gets(item);
delnum(item);
printf("%s\n",item);
return 0;
}
/* 请在这里填写答案 */
输入样例:
a0bc+d496df
输出样例:
abc+ddf
解答:
void delnum(char *s)
{
int i=0,j=0;
for(i=0,j=0;s[i]!='\0';i++){
if(s[i]<'0'||s[i]>'9')
{
s[j]=s[i];
j++;
}
}
s[j]='\0';
}