• 【C语言刷题】指针入门三题|字符串长度、字符串复制、两数交换


    作者:柒号华仔
    个人主页:欢迎访问我的主页
    个人信条:星光不问赶路人,岁月不负有心人。
    个人方向:主要方向为5G,同时兼顾其他网络协议,编解码协议,C/C++,linux,云原生等,感兴趣的小伙伴可以关注我,一起交流。
    推荐一款模拟面试、刷题神器:☞登录免费刷题


    前言

    今天为小伙伴带来C语言刷题,一起刷题,一起通关面试进大厂,同时刷题也是强化学习,巩固知识的不二法门。
    题目来源于牛客网的牛客题霸,链接为:点击跳转刷题神器。经典高频面试题,应有尽有,各种编程语言,一网打尽。努力吧,我们都是赶路人!


    在这里插入图片描述
    )


    CC1 获取字符串长度

    1.1 题目描述

    描述
    键盘输入一个字符串,编写代码获取字符串的长度并输出,要求使用字符指针实现。
    输入描述:
    键盘输入一个字符串
    输出描述:
    输出字符串的长度
    示例

    输入: helloworld
    输出: 10

    1.2 题目解析

    程序读取键盘输入字符串后,字符串以’\0’作为结束符号,使用指针指向该字符串数组,通过指针移位来累加字符串长度,直到碰见’\0’结束。

    1.3 代码实现

    #include
    #include
    int main(void)
    {
        char a[64];
        gets(a);
        char *start=a;
        char *end=a;
        while(*end!='\0'){
            end++;
        }
        printf("%d",end-start);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    CC2 复制部分字符串

    2.1 题目描述

    描述
    键盘输入一个长度为len(1 <= len < 30)的字符串,再输入一个正整数 m(1 <= m <= len),将此字符串中从第 m 个字符开始的剩余全部字符复制成为另一个字符串,并将这个新字符串输出。要求用指针处理字符串。
    输入描述:
    键盘输入一个长度为len(1 <= len < 30)的字符串,再输入一个正整数 m(1 <= m <= len)
    输出描述:
    输出复制的新字符串
    示例

    输入: helloworld 6
    输出: world

    2.2 题目解析

    解题时要注意时先输入字符串,再输入从第几个字符开始复制。数组是从0开始,因此m需要减一后开始计算。题目要求用指针进行处理,不得用数组。

    2.3 代码实现

    #include  
    #include 
    
    int main() {
    	char s[30] = { 0 };
    	gets(s);
    	int m = 0;
    	scanf("%d", &m);
    	char *p = &s[m - 1];
    	int n = strlen(s);
     
    	for (int i = 1; i < n - m + 1; i++) {
        	printf("%c", *(p + i));
    	} 
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    CC3 编写函数实现两数交换(指针方式)

    3.1 题目描述

    描述
    编写一个函数,实现两个整数的交换,要求采用指针的方式实现。
    输入描述:
    键盘输入2个整数 m 和 n
    输出描述:
    输出交换后m 和 n 的值,中间使用空格隔开
    示例

    输入: 2 3
    输出: 3 2

    3.2 题目解析

    首先要注意的是采用指针方式实现,为了实现交换,我们需要定义一个中间量来进行过渡转化。

    3.3 代码实现

    #include 
    
    int main()
    {
        int m=0,n=0,temp=0;
        int* pm=&m;  
        int* pn=&n;
        int* pt=&temp;
        scanf("%d\n%d",pm,pn);
        
        *pt=*pm;
        *pm=*pn;
        *pn=*pt;  
        printf("%d %d\n",m,n);
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    结语

    纸上得来终觉浅,绝知此事要躬行,C语言的学习还是得基础知识+自己动手同步进行,找一个可以在线练习的网站,比如牛客网,多多练习,假以时日,相信收获巨大,进步神速!

  • 相关阅读:
    AS-V1000 视频监控平台产品介绍:客户端功能介绍(三)
    一次采集JSON解析错误的修复
    电脑开机速度慢怎么解决?
    信息学奥赛一本通2062:【例1.3】电影票
    jQuery 入门-----第二节:jQuery 常用API
    IntelliJ IDEA运行Eclipse项目或非Maven项目的详细配置
    2024/6/30 英语每日一段
    Verilog中case,casez,casex语句的用法
    Vue(四)——使用脚手架(1)
    基于Echarts实现可视化数据大屏城市规划系统
  • 原文地址:https://blog.csdn.net/NoBack7/article/details/126083463