8-2-3
本题要求实现一个删除字符串中的指定字符的简单函数。
其中char *str
是传入的字符串,c
是待删除的字符。函数delchar
的功能是将字符串str
中出现的所有c
字符删除。
j为str新的下标,碰到了c就略过,其他字符正常排序。字符串\0结尾
ReadString(str); 用 gets(str); 代替了
#include <stdio.h>
#define MAXN 20
void delchar( char *str, char c );
int main()
{
char str[MAXN], c;
scanf("%c\n", &c);
gets(str);
delchar(str, c);
printf("%s\n", str);
return 0;
}
void delchar( char *str, char c ){
int j=0,i=0;
for(;str[i]!='\0';i++){
if(str[i]!=c){
str[j]=str[i];
j++;
}
}
str[j]='\0';
}
8-2-4
本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。
函数strmcpy
将输入字符串char *t
中从第m
个字符开始的全部字符复制到字符串char *s
中。若m
超过输入字符串的长度,则结果字符串应为空串。
ReadString(t); 用 gets(t); 代替了
#include <stdio.h>
#define MAXN 20
void strmcpy( char *t, int m, char *s );
int main()
{
char t[MAXN], s[MAXN];
int m;
scanf("%d\n", &m);
gets(t);
strmcpy( t, m, s );
printf("%s\n", s);
return 0;
}
void strmcpy( char *t, int m, char *s ){
int i=0,j=0;
for(i=m-1;t[i]!='\0';i++){
s[j]=t[i];
j++;
}
s[j]='\0';
}
8-2-5
本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。
函数palindrome
判断输入字符串char *s
是否为回文。若是则返回true
,否则返回false
。
j为s[MAXN]的长度(字符的个数)。
s[i]和s[j-i-1]对比,有一个不同就不是回文。
#include <stdio.h>
#include <string.h>
#define MAXN 20
typedef enum {false, true} bool;
bool palindrome( char *s );
int main()
{
char s[MAXN];
scanf("%s", s);
if ( palindrome(s)==true )
printf("Yes\n");
else
printf("No\n");
printf("%s\n", s);
return 0;
}
bool palindrome( char *s ){
int flag=1,i=0,j=strlen(s);
for(;i<=j/2+1;i++){
if(s[i]!=s[j-i-1]) {
flag=0;
break;
}
}
if (flag==1) {
return true;
}else {
return false;
}
}
8-2-6
本题要求实现一个函数,统计给定字符串中的大写字母、小写字母、空格、数字以及其它字符各有多少。
其中 char *s
是用户传入的字符串。函数StringCount
须在一行内按照
大写字母个数 小写字母个数 空格个数 数字个数 其它字符个数
ReadString(s); 用 gets(s); 代替了。原题不知道怎么写的,可以录入回车,这里只能录入一行字符串。
#include <stdio.h>
#define MAXS 15
void StringCount( char *s );
int main()
{
char s[MAXS];
gets(s);
StringCount(s);
return 0;
}
void StringCount( char *s ){
int a[5]={0},i=0,j=0;
for(;s[i]!='\0';i++){
if(s[i]>='A' && s[i]<='Z'){
a[0]++;
}else if(s[i]>='a' && s[i]<='z'){
a[1]++;
}else if(s[i]==' '){
a[2]++;
}else if(s[i]>='0'&&a[i]<='9'){
a[3]++;
}else {
a[4]++;
}
}
printf("%d %d %d %d %d",a[0],a[1],a[2],a[3],a[4]);
}