指针习题回顾(C语言)

目录

数组指针和指针数组

编程题:

字符串逆序

字符串左旋

题目1概述:

代码实现:

题目2概述:

 代码实现:

调整奇偶顺序

题目概述:

代码实现:

冒泡排序

 二级指针

代码解读:

杨氏矩阵

题目概述:

代码实现:

猜凶手

题目概述:

代码实现:

杨辉三角

题目概述:

代码实现:

判断题1:

判断题2:

判断题3:

判断题4:

指针返回值:


数组指针和指针数组

int *p[10]定义了一个指针数组,数组中10个元素,每个元素都是int*类型的指针

int (*p)[10]定义了一个数组指针,该指针只能指向存储10个整形元素的数组

编程题:

字符串逆序

法一:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void Reserve(char* str)//指针数组
{char* left = str;char* right = str + strlen(str) - 1;while (left < right)//左右交换-逆序{char temp = *left;*left = *right;*right = temp;left++;//right--;}
}
int main()
{char str[10000] = { 0 };//while(scanf("%s",str)!=EOF)//遇到空格就不读了while (gets(str)){Reserve(str);//printf("%s", str);}return 0;
}

法二:

#include <stdio.h>#include <string.h>int main() {char str1[10000];char str2[10000];gets(str1);int i = 0;int len = strlen(str1);for (i = 0; i < len; i++) {str2[i] = str1[len - i - 1];printf("%c", str2[i]);}return 0;}
字符串左旋
题目1概述:
实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB
代码实现:

法一:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void leftRound(char* str, int k)//左旋
{int len = strlen(str);int time = k % len;for (int i = 0; i < time; i++){char tmp = str[0];int j = 0;for (j = 0; j < len - 1; j++){str[j] = str[j + 1];//左移}str[j] = tmp;}
}
int main()
{char str[] = "ABCD";leftRound(str, 5);printf("%s\n", str);return 0;
}

法二(使用库函数):

strcpy();//字符串拷贝
strncat();//字符串拼接int main()
{char str1[10] = { 0 };char* str2 = "abcd";strcpy(str1, str2);//将str2拷贝到str1中printf("%s\n", str1);printf("%s\n", str2);char str3[100] = "abc";char* str4 = "hello";//strcat(str3, str4);//将str4中的所有内容拼接到str3中strncat(str3, str4, 2);//只拷贝str4中的2个字符printf("str3=%s\n", str3);return 0;
}
void leftRound(char* str, int k)
{int len = strlen(str);int time = k % len;//2char tmp[256] = { 0 };strcpy(tmp, str + time);//cdstrncat(tmp, str, time);//cdab  tmp中存储的就是cdabstrcpy(str, tmp);
}
int main()
{char str[] = "abcd";leftRound(str, 2);printf("%s\n", str);
}

法三(局部逆序):

void ReverseRange(char* str, int start, int end)//局部逆序
{int left = start;int right = end;while (left < right){char tmp = str[left];str[left] = str[right];str[right] = tmp;left++;right--;}
}
void leftRound(char* str, int k)
{int len = strlen(str);int time = k % len;//2ReverseRange(str, 0, time - 1);//bacdReverseRange(str, time, len - 1);//badcReverseRange(str, 0, len - 1);//cdab}int main()
{char str[] = "abcd";leftRound(str, 2);printf("%s", str);return 0;
}

法四:

int main(){char str1[] = "ABCD";int i = 0, k, j = 0;int len = strlen(str1);scanf("%d", &k);for (i = 0; i < k; i++){char temp = str1[0];//取出最左边的字符for (j = 0; j < len - 1; j++){str1[j] = str1[j + 1];//将剩下的字符左移			}str1[len - 1] = temp;//将取出的字符放至末尾}printf("%s", str1);return 0;}
题目2概述:
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 =AABCD和s2 = BCDAA,返回1给定s1=abcd和s2=ACBD,返回0.AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个字符得到DAABC
 代码实现:

法一:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int leftRound(char* str, char* str2, int k)//左旋
{int len = strlen(str);int time = k % len;for (int i = 0; i < time; i++){char tmp = str[0];int j = 0;for (j = 0; j < len - 1; j++){str[j] = str[j + 1];//左移}str[j] = tmp;}if (strcmp(str, str2) == 0)//str和str2进行比较  str>str2返回正数;str=str2返回0;str<str2返回负数  根据ASCII码值比较{return 1;//str=str2}elsereturn 0;
}
int main()
{char str[] = "ABCD";char str2[] = "CDAB";printf("%d", leftRound(str, str2, 2));//printf("%s\n", str);return 0;
}

法二(使用库方法):

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{char str1[] = "abcde";//主串char* str2 = "bcd";//子串char* p = strstr(str1, str2);//字符串查找printf("%s", p);return 0;
}

int findRound(char* str1, char* str2)
{char tmp[256] = { 0 };strcpy(tmp, str1);//拷贝 strcat(tmp, str1);//拼接return strstr(tmp, str2) != NULL;//字符串查找
}
int main()
{char str1[] = "abcde";//主串char* str2 = "bcd";//子串int ret = findRound(str1, str2);if (ret == 1){printf("是旋转后的结果");}else{printf("不是旋转后的结果");}
}
调整奇偶顺序
题目概述:
输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
代码实现:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void Function(int* p, int len)
{int* left = p;int* right = p + len - 1;while (left < right){while ((left < right) && (*left % 2 != 0))//奇数{left++;}while ((left < right) && (*right % 2 == 0))//偶数{right--;}int tmp = *left;*left = *right;*right = tmp;//交换}
}
int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9 };int len = sizeof(arr) / sizeof(arr[0]);Function(arr, len);for (int i = 0; i < len ; i++){printf("%d ", arr[i]);//arr[i]=*(arr+i)      arr[i][j]=*(*(arr+i)+j)}return 0;
}
冒泡排序
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int data[] = { 1,2,3,4,5,6 };int sz = sizeof(data) / sizeof(data[0]);int i = 0, j = 0;for (i = 0; i < sz; i++){for (j = 0; j < sz - i - 1; j++){if (data[j] < data[j + 1]){int temp = data[j];data[j] = data[j + 1];data[j + 1] = temp;}}}for (i = 0; i < sz; i++){printf("%d ", data[i]);}return 0;
}
 二级指针
int main()
{int a = 10;int* p = &a;int** p2 = &p;printf("%d", **p2);//10return 0;
}
代码解读:

解引用2次, 第一次得到的是p的值,第二次得到的是a的值;p2——>p——>a=10;

杨氏矩阵
题目概述:

有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。

代码实现:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int FindNum(int arr[][3], int x, int y, int key)
{int i = 0;int j = y - 1;//判断i和j是合法的while (i < x && j >= 0){if (arr[i][j] < key){i++;}else if (arr[i][j] > key){j--;}elsereturn 1;//找到了}return 0;//没有找到
}
int main()
{int arr[][3] = { {1,2,3},{4,5,6},{7,8,9} };int ret = FindNum(arr, 3, 3, 5);//printf("%d", ret);if (ret == 1)printf("找到了");elseprintf("没找到");return 0;
}
猜凶手
题目概述:
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词:A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。
代码实现:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void Find()
{for (char killer = 'a'; killer <= 'd'; killer++)//穷举法-假设法{if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd') == 3){printf("%c是凶手", killer);}}
}
int main()
{Find();return 0;
}

杨辉三角

题目概述:
在屏幕上打印杨辉三角。1
1 1
1 2 1
1 3 3 1
……
代码实现:

 

判断题1:

判断题2:

解析:release版本,宏不起作用(A错误);在Linux情况下,release版本也会起作用(B错误);

判断题3:

解析:D选项左边是 int ,右边是 int ()[10],类型不一样;

判断题4:

指针返回值:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void Func(int* p1, int* p2)//输出型参数
{int a = 10;int b = 20;*p1 = a;*p2 = b;
}
int main()
{int k1 = 0;int k2 = 0;Func(&k1, &k2);printf("%d,%d", k1, k2);//10,20return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/684273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AIGC】Stable Diffusion的插件入门

一、上文中作者使用插件包的方式下安装插件&#xff0c;用户也可以从Stable Diffusion的界面安装插件&#xff0c;如下图所示&#xff0c;在相应的插件后面点安装按钮。 二、介绍一些比较好用的插件 “adetailer” 插件是 Stable Diffusion 中的一个增强功能&#xff0c;旨在提…

【Pygame手册02/20】pygame模块display控制窗口和屏幕

目录 一、说明二、pygame.display接口函数2.1 函数表格2.2 pygame.display的功能 三、详细的函数调用3.1 pygame.display.init()3.2 pygame.display.quit()3.3 pygame.display.get_init()3.4 pygame.display.set_mode()3.5 pygame.display.get_surface()3.6 pygame.display.fl…

飞天使-k8s知识点18-kubernetes实操3-pod的生命周期

文章目录 探针的生命周期流程图prestop 探针的生命周期 docker 创建&#xff1a;在创建阶段&#xff0c;你需要选择一个镜像来运行你的应用。这个镜像可以是公开的&#xff0c;如 Docker Hub 上的镜像&#xff0c;也可以是你自己创建的自定义镜像。创建自己的镜像通常需要编写一…

【AIGC】Stable Diffusion的采样器入门

在 Stable Diffusion 中&#xff0c;采样器&#xff08;Sampler&#xff09;是指用于生成图像的一种技术或方法&#xff0c;它决定了模型如何从潜在空间中抽样并生成图像。采样器在生成图像的过程中起着重要作用&#xff0c;影响着生成图像的多样性、质量和创造性。以下是对 St…

为自监督学习重构去噪扩散模型

在这项研究中&#xff0c;作者检验了最初用于图像生成的去噪扩散模型&#xff08;DDM&#xff09;的表示学习能力。其理念是解构DDM&#xff0c;逐渐将其转化为经典的去噪自动编码器&#xff08;DAE&#xff09;。这一解构过程让大家能够探索现代DDM的各个组成部分如何影响自监…

python自学...

一、稍微高级一点的。。。 1. 闭包&#xff08;跟js差不多&#xff09; 2. 装饰器 就是spring的aop 3. 多线程

《合成孔径雷达成像算法与实现》Figure6.17

% rho_r c/(2*Fr)而不是rho_r c/(2*Bw) % Hsrcf exp函数里忘记乘pi了 clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; …

linux系统配置zabbix监控agent端

目录 客户端配置 启动服务 浏览器工具设置 创建主机群组 创建主机 创建监控项 ​编辑 ​编辑 创建触发器 查看监控 客户端配置 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm # yum clean allyum install -y zab…

RCS系统之:浅谈系统设计与开发

这是我在开发RCS系统中的一些个人感悟与心得&#xff0c;写出来与大家一起分享下。是想到什么写到什么&#xff0c;如果有什么不对的&#xff0c;欢迎大家一起探讨。 有些人喜欢把WMS系统下面的系统统称为RCS系统。 但我不是这么想的&#xff0c;我这里把WMS/ERP系统与AGV之间…

详解CelebA数据集下载、读取【基于Python实现】

文章目录 简介CelebA数据集下载基于Python和PyTorch读取CelebA数据并可视化torchvision.datasets.CelebA介绍root根目录文件夹下CelebA文件存储方式如下可视化以及代码 参考资料 简介 CelebA数据集是由香港中文大学多媒体实验室发布的大规模人脸属性数据集&#xff0c;包含超过…

Rust 数据结构与算法:4栈:用栈实现进制转换

2、进展转换 将十进制数转换为二进制表示形式的最简单方法是“除二法”&#xff0c;可用栈来跟踪二进制结果。 除二法 下面实现一个将十进制数转换为二进制或十六进制的算法&#xff0c;代码如下&#xff1a; #[derive(Debug)] struct Stack<T> {size: usize, // 栈大…

蓝桥杯每日一题----单调栈和单调队列

单调栈和单调队列 单调栈 单调栈即栈内的元素是单调递减或者单调递增的&#xff0c;我们通过一个题目来理解。 单调栈模板题 题目描述 给出项数为 n 的整数数列 a 1 … a n a_1…a_n a1​…an​。 定义函数 f ( i ) f(i) f(i)代表数列中第 i 个元素之后第一个大于 a i …

Redis面试题整理(持续更新)

1. 缓存穿透&#xff1f; 缓存穿透是指查询一个一定不存在的数据&#xff0c;如果从存储层查不到数据则不写入缓存&#xff0c;这将导致这个不存在的数据每次请求都要到 DB 去查询&#xff0c;可能导致DB挂掉&#xff0c;这种情况大概率是遭到了攻击。 解决方案&#xff1a; …

python-分享篇-自定义词云图颜色

文章目录 准备代码效果 准备 运行本程序需要安装第三方模块matplotlib、jieba、wordcloud 和scipy &#xff0c;scipy要求1.0.0版本&#xff0c;否则程序将出现导入错误&#xff1a;ImportError: cannot import name ‘imread’ from ‘scipy.misc’ ImportError: cannot impo…

Linux下的自动化任务与计划任务:让你的系统更智能

在日常的Linux系统管理中&#xff0c;你是否经常需要定时执行某些任务&#xff0c;或者希望在系统启动时自动运行某些脚本&#xff1f;如果是的话&#xff0c;那么自动化任务和计划任务将是你的得力助手。它们可以帮助你提高系统效率、减少人工干预&#xff0c;并确保任务能够按…

【汇编】简单的linux汇编语言程序

一、Linux系统汇编语言 Linux系统上的汇编语言可以使用不同的语法风格&#xff0c;主要包括Intel语法和AT&T语法。这两种语法有各自的特点和风格区别&#xff0c;尽管它们表示的底层机器指令相同。下面分别对两种语法进行简要说明&#xff1a; Intel语法 Intel语法是由I…

有啥办法把百度地图某个点1公里范围内截个图?

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 东方欲晓&#xff0c;莫道君行早。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python白银交流群【上海新年人】问了一个地图截图的问题&#xff…

找不到目标和方向,怎么办?

现代社会里&#xff0c;许多人常见的症状&#xff0c;就是「空心病」。 什么是空心病呢&#xff1f;类似这样&#xff1a; 我知道要有目标&#xff0c;但我就是不知道想做什么&#xff0c;感觉对一切事物都提不起兴趣&#xff0c;没有动力&#xff0c;怎么办&#xff1f; 这个…

【C语言】socketpair 的系统调用

一、 Linux 内核 4.19socketpair 的系统调用 SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol,int __user *, usockvec) {return __sys_socketpair(family, type, protocol, usockvec); } 这段代码定义了一个名为 socketpair 的系统调用。系统调用是操作…

AI算法参数个数本身优化空间

一、背景 AI算法的参数数量并非越多越好&#xff0c;也不是越少越好。参数的数量与模型的复杂度密切相关&#xff1a; 1. 参数多&#xff08;高复杂度模型&#xff09;&#xff1a; - 优点&#xff1a;模型具有更强的表达能力和拟合能力&#xff0c;对于复杂的、非线性的数据分…