1.4作业

1.课堂练习

1.1 非函数实现strlen

代码如下:

#include<string.h>
#include<stdlib.h>

int main(int argc, const char *argv[])
{
    char str[]={"hello"};
    int i;
    for(i=0;str[i]!=0;i++);//循环到'\0'结束,i的值为字符串长度
    printf("i=%d\n",i);
    return 0;
}

结果如下:

1.2 非函数实现strcpy

代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(int argc, const char *argv[])
{

    char dest[10]="hello";//定义目标函数
    char src[]="123";
    int i;
    for(i=0;src[i]!='\0';i++)//将src各位的值赋值各dest,循环到'\0'为止
    {
        dest[i]=src[i];
    }
    dest[i]='\0';将'\0'赋值给dest的最后一位
    puts(dest);
    return 0;
}

结果如下:

1.3 非函数实现strcat

代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
    char dest[20]="hello";
    char src[]="123";
    int i,j;
    for(i=0;dest[i]!='\0';i++);//计算dset字符串长度,i=5
        for(j=0;src[j]!='\0';j++)//将dest后几位替换为src对应的字符
        {
            dest[i+j]=src[j];
        }
    dest[i+j]='\0';//将'\0'赋值给dest最后一位
    puts(dest);
    return 0;
}

结果如下:

1.4 非函数实现strcmp

代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
    char str1[20]="hello";
    char str2[20]="hell0";
    int i=0;
    while(str1[i]==str2[i])//相同下标对应元素逐个比较,等于'\0'时结束循环
    {
        if(str1[i]==0)
            break;
        i++;
    }
    if(str1[i]-str2[i]<0)//判断不同元素ASCII值
        puts("str1<str2");
    else if(str1[i]-str2[i]>0)
        puts("str1>str2");
            else
                puts("str1==str2");
    return 0;
}

结果如下:

1.5 非函数实现atoi

代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
    char str[10];
    gets(str);
    int i=0,sum=0;
    while(str[i]==' ')//跳过空格
    {
        i++;
    }
    int j=i;//保存+-的下标
    if(str[i]=='+'||str[i]=='-')//判断i对应的字符是否是正负号
        i++;
    while(str[i]!='\0')//循环后面的字符组成整数
    {
        if(str[i]>='0'&&str[i]<='9')
        {
            sum=sum*10+(str[i]-'0');
        }
        else
        {
            break;
        }
        i++;
    }
    if(str[j]=='-')//判断j是否是负号
        sum=-sum;//添加负号
    printf("sum=%d\n",sum);
    return 0;
}

结果如下:

单词逆置

代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{

    char str[]="good good study";
    int i=0,j=strlen(str)-1;
    while(i<j)//整体逆置
    {
            char t=str[i];
            str[i]=str[j];
            str[j]=t;
            i++;j--;
    
    }
    i=j=0;
    while(str[i]!='\0')//单词逆置
    {
        while(str[j]!=' '&&str[j]!='\0')//j循环到空格结束
        
            j++;
        
            int k=j-1;
            while(i<k)//交换i到k之间的字符
            {
            char t=str[i];
            str[i]=str[k];
            str[k]=t;
            i++;k--;
            }
            while(str[j]==' ')//循环j跳过空格
                j++;
            i=j;
        }
    puts(str);

    return 0;
}

结果如下:

2.输入三个字符串计算最大字符串

代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{

    char str1[10]="",str2[10]="",str3[10]="";
    gets(str1);//输入三个字符串
    gets(str2);
    gets(str3);
    if(strcmp(str1,str2)>=0&&strcmp(str1,str3)>=0)//比较str1与str2及str1与str3的大小
    {
        puts(str1);
    }
    else if(strcmp(str2,str1)>=0&&strcmp(str2,str3)>=0)//比较str2与str1及str2与str3的大小
    {
        puts(str2);
    }
else
{
    puts(str3);
}
    return 0;
}

结果如下:

思维导图:

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值