c语言第6天作业

1.string函数的改写,不使用库函数实现string函数族的功能:strlen strcpy strcmp strcat

#include<stdio.h>

int main()
{
	
	char str1[100], str2[100];
	//strlen改写
	long len;
    for(len=0; str[len]!=0; len++);
    printf("%ld", len);

	//strcpy改写
	int i;
    for(i=0; (str1[i] = str2[i])!=0; i++);
    printf("%s\n", str1);
        
    
	//strcmp改写
	int res=0;
    for(int i=0; 0==(res=(str1[i]-str2[i]) && 0!=str1[i]; i++);
   	printf("flag = %d", res);
   

	//strcat改写
	int len1=0;
	for(len1=0; str1[len1]!=0; len1++);
    for(int i=0; 0!=(str1[len1++] = str2[i]); i++);
    printf("%s\n", str1);

	return 0;
}

2.从终端获取一个字符串,要求将该字符串倒置存储。不允许使用辅助数组

#include<stdio.h>

int main()
{
    char str[10000];
    puts("请输入一个字符串:\n");
    gets(str);

    puts(str);
    int index = 0;
    for( ; str[index]!=0; index++);//计算字符串长度

    for(int i=0; i<index/2; i++)	//满足条件进行交换值
    {
        str[i] ^= str[index-i-1];
        str[index-i-1] ^= str[i];
        str[i] ^= str[index-i-1];

        //char c = str[i];
    //  str[i] = str[index-i-1];
    //  str[index-i-1] = c;

        //puts(str);
    }
    puts(str);
	return 0;
}

3.从终端获取一个字符串,判断该字符串中小写字母分别有几个。aabbbcc —>a有2个 b有3个 c有2个

#include<stdio.h>


int main()
{

    char str[10000];
    int ch[26]={0};         //用来存放26个小写字母的个数,ch[0]存放字母a的个数,ch[1]存放字母b的个数
    puts("请输入一个字符串:\n");
    gets(str);

    for(int i=0; str[i]!=0; i++)
        if(str[i]>=97 && str[i]<=122)//判断是不是小写字母
            ch[str[i]-97]++;		//让对应小写字母的ch数组元素++
    puts("字符串:");
    puts(str);

	//输出各个小写字母的个数
    for(int i=0; i<26; i++)
        printf("字母%c有%d个\n", i+97, ch[i]);
    return 0;
}

4.从终端输入一个字符串,要求删除字符串中的空格字符,请在原字符串上操作,不允许使用辅助数组

#include<stdio.h>


int main()
{
    char str[10000];
    puts("请输入一个字符串:\n");
    gets(str);

    int j=0;						//定义一个变量存储不是空格的个数
    for(int i=0; str[i]!=0; i++)	//遇到'\0'退出循环
        if(str[i]!=32)				//判断字符是否是空格
        {
            str[j] = str[i];		//把下标为j的空格字符存储下表为i的不是空格的字符
            j++;					//
        }
    str[j] = 0;

    puts(str);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值