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

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


前言

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


在这里插入图片描述
)


CC1 获取字符串长度

1.1 题目描述

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

输入: helloworld
输出: 10

1.2 题目解析

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

1.3 代码实现

#include<stdio.h>
#include<string.h>
int main(void)
{
    
    
    char a[64];
    gets(a);
    char *start=a;
    char *end=a;
    while(*end!='\0'){
    
    
        end++;
    }
    printf("%d",end-start);
    return 0;
}

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 <stdio.h> 
#include <string.h>

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


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

3.1 题目描述

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

输入: 2 3
输出: 3 2

3.2 题目解析

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

3.3 代码实现

#include <stdio.h>

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

结语

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

猜你喜欢

转载自blog.csdn.net/NoBack7/article/details/126083463
今日推荐