当前位置:网站首页>【C语言刷题】指针入门三题|字符串长度、字符串复制、两数交换
【C语言刷题】指针入门三题|字符串长度、字符串复制、两数交换
2022-08-02 16:32:00 【柒号华仔】
作者:柒号华仔
个人主页:欢迎访问我的主页
个人信条:星光不问赶路人,岁月不负有心人。
个人方向:主要方向为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语言的学习还是得基础知识+自己动手同步进行,找一个可以在线练习的网站,比如牛客网,多多练习,假以时日,相信收获巨大,进步神速!
边栏推荐
- 【学术相关】北大一研究生偷取同门师妹论文发表,作者却挂名给了武大 3 位不知情的学生......
- 金仓数据库KingbaseES安全指南--6.13. 关于身份验证的常见问题
- Antd-ProComponents中的EditableProTable无法在子行继续新增子子行的临时解决方案
- 实时数仓架构演进及选型
- [LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点
- In the idea to create a web project _idea deployment of the web project
- 【[USACO12MAR]Cows in a Skyscraper G】【状压DP && DFS】
- 每日练习------定义一个N*N二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出;
- JZ42 连续子数组的最大和
- Detailed explanation of the principle of JWT_The principle of electromagnetic induction
猜你喜欢
随机推荐
提高测试覆盖率的四大步骤
QACTION_QAWiki
Special Variables (SQL)
Informatica旗下PowerCenter的元数据库解析
如何为项目匹配资源技能和要求?
Antd-ProComponents中的EditableProTable无法在子行继续新增子子行的临时解决方案
小心 transmittable-thread-local 的这个坑
JZ71 跳台阶扩展问题
融云「 IM 进阶实战高手课」系列直播上线
JZ42 连续子数组的最大和
【[USACO06NOV]Corn Fields G】【状压DP】
JZ10 斐波那契数列
numpy的学习笔记
#yyds干货盘点# 面试必刷TOP101: 删除链表的倒数第n个节点
【[NOI2001] 炮兵阵地】【状压DP】
Arduino 硬件编程语言基础学习入门
JZ9 用两个栈实现队列
周末看点回顾|亚马逊将于2023年底关闭Amazon Drive网盘服务;千寻位置发布时空智能六大底层自研技术…
金仓数据库KingbaseES安全指南--6.13. 关于身份验证的常见问题
Switch 块、Switch 表达式、Switch 模式匹配,越来越好用的 Switch









