浙大版C语言题目集-函数题8-2(到6)

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]);
}

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值