指针习题二

使用函数指针实现转移表

#include <stdio.h>
int add(int a, int b)
{return a + b;
}
int sub(int a, int b)
{return a - b;
}
int mul(int a, int b)
{return a * b;
}
int div(int a, int b)
{return a / b;
}
int main()
{int x, y;int input = 1;int ret = 0;int(*p[5])(int x, int y) = { 0, add, sub, mul, div }; //转移表do{printf("*************************\n");printf("  1:add           2:sub  \n");printf("  3:mul           4:div  \n");printf("  0:exit                 \n");printf("*************************\n");printf("请选择:");scanf("%d", &input);if ((input <= 4 && input >= 1)){printf("输入操作数:");scanf("%d %d", &x, &y);ret = (*p[input])(x, y);printf("ret = %d\n", ret);}else if (input == 0){printf("退出计算器\n");}else{printf("输入有误\n");}} while (input);return 0;
}

2.

解析:A选项,第一个括号里是一个完整定义,第二个括号里是个类型,四不像。BD选项,[]只能在标识符右边,双双排除。只有C是能编过的。

3.

解析:

“调用指针”、“指向函数”是什么鬼……D选项简直逻辑鬼才!ABC就是基础概念,可以复习下。

回调函数是一种在编程中常见的概念,它是指将一个函数作为参数传递给另一个函数,并在特定的条件或事件发生时被调用执行的函数。

具体来说,回调函数是作为参数传递给其他函数的函数指针或函数对象。当满足特定条件或事件发生时,调用该函数指针或函数对象,以执行预定义的操作或逻辑。

4.

找出一个只出现过一次的数字的问题处理方法就是找一个数字把里面所有的数字都异或一遍,利用异或两次等于没异或的特点来处理。那么如果有两个数字都只出现了一次,那么如此得到的应该是两个数异或的结果。首先这个结果肯定不是0(要不然就全都配对了),所以里面一定至少一位是一。找出值为1的一位,以这一位的值将结果分为两组。例如1 2 3 4 1 2,异或完的结果应该是3^4得到的111,那么随便找一位就行了。例如找最低位,那么这一位是1的有1 3 1,是0的有2 4 2,由于是利用异或结果为1的某一位分的组,所以两个待查询数字一定分别在两组中。所以再找两个变量,分别异或两组数,即可找到这两个数。

void findTwoNum(int arr[], int n, int * pnum1, int * pnum2)
{int i;int sum = 0;
​for (i = 0; i < 9; i++){sum ^= arr[i];} //先找到两个数互相异或的结果
​int pos;for (i = 0; i < 32; i++){if (sum & 1 << i){pos = i;break;}} //再找到有分歧的一位。在这一位上,两个数一定是一个1一个0
​*pnum1 = *pnum2 = 0;for (i = 0; i < 10; i++){if (arr[i] & 1 << pos){*pnum1 ^= arr[i]; //这一位是1的,放在数1里}else{*pnum2 ^= arr[i]; //这一位是0的,放在数2里}}
}

5.

#include <stdio.h>
int main()
{int y = 0;int m = 0;int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; while(scanf("%d%d", &y, &m) != EOF){int day = days[m-1];if((y%4==0 && y%100!=0) || (y%400==0)){if(m == 2)day += 1;}printf("%d\n", day);}return 0;
}

6.

int Int_sort(const void* p1, const void* p2)
{return *(int*)(p1) - *(int*)(p2);
}print_int(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");
}void int_test()
{int arr[] = { 1,5,8,23,56,44,32,7,6,66 };int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(arr[0]), Int_sort);print_int(arr, sz);
}struct  Stu
{char name[100];int age;
};int Char_sort(const void* p1,const void* p2)
{return (strcmp(((struct Stu*)p1)->name, ((struct Stu*)p2)->name));
}void print_Stu(struct Stu arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%s ", arr[i].name);printf("%d ", arr[i].age);}printf("\n");
}void stu_test()
{struct Stu arr[3] = { {"zhangsan",13},{"lisi",40},{"wangwu",22} };int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(arr[0]), Char_sort);print_Stu(arr, sz);
}int main()
{int_test();stu_test();return 0;
}

7.

#include<stdio.h>//仿qsort函数重写冒泡排序
int cmp(void* e1, void* e2)   //所选择的比较方法
{return *((int*)e1) - *((int*)e2);
}
void swap(char* p1, char* p2, int width)   //实现数组元素的交换
{int t = 0;int i = 0;for (i = 0; i < width; i++){t = *p1;*p1 = *p2;*p2 = t;p1++;p2++;}
}
void bubble_sort(void* arr, int sz, int width, int(*cmp)(void* e1, void* e2))
{int i = 0;int j = 0;for (i = 0; i < sz - 1; i++){//冒泡排序趟数for (j = 0; j < sz - 1 - i; j++)   //每一趟冒泡排序{if (cmp((char*)arr + (j * width), (char*)arr + (j + 1) * width)>0){//符合条件进行交换swap((char*)arr + (j * width), (char*)arr + (j + 1) * width,width);}}}
}
int main()
{int arr[] = { 10,9,8,7,6,5,4,3,2,1 };     //定义整型数组并初始化int sz = sizeof(arr) / sizeof(arr[0]);    //计算数组长度int i = 0;bubble_sort(arr, sz, sizeof(arr[0]), cmp);    //模拟qsort函数实现冒泡排序for (i = 0; i < sz; i++)                   {printf("%d ", arr[i]);                     //排序完后对数组进行打印,验证排序是否成功}
}

8.

解析:C,strlen计算\0之前的字符长度

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

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

相关文章

学习python时一些笔记

1、winr 命令提示符的快捷键 输入cmd进入终端 2、在终端运行桌面上的python文件 cd desktop(桌面) cd是进入该文件夹的意思。 cd .. 回到上一级 运行python时一定要找到文件的所在地 输入python进入&#xff0c;exit()退出%s字符串占位符%d数字占位符%f浮点数占位符input输…

Linux速览(1)——基础指令篇

在上一章对Linux有了一些基础了解之后&#xff0c;本章我们来学习一下Linux系统下一些基本操作的常用的基础指令。 目录 1. ls 指令 2. pwd&&whoami命令 3. cd 指令 4. touch指令 5.mkdir指令&#xff08;重要&#xff09;&#xff1a; 6.rmdir指令 && …

vue面试题:如何保存页面的当前的状态?

如何保存页面的当前的状态&#xff1f; 既然是要保持页面的状态&#xff08;其实也就是组件的状态&#xff09;&#xff0c;那么会出现以下两种情况&#xff1a;组件会被卸载&#xff1a;&#xff08;1&#xff09;将状态存储在LocalStorage / SessionStorage优点&#xff1a;缺…

带大家做一个,易上手的水煮牛肉

今天带大家做川菜系中的 水煮牛肉 这个菜是比较费辣椒的 制作成本相对一般菜来说 会高一些 一块牛肉 泡水划冰 从超时买的干腐竹 切成小片 温水浸泡五分钟 泡软它 然后捞出来 去干水分 牛肉切片 尽量切薄一点 三瓣左右蒜 一块生姜 去皮切末 牛肉中下入 一个鸡蛋 小半勺…

python实现视频或音频转文本

python实现视频或音频转文本 当然可以,以下是您的Python语音视频转文本代码的描述: 内容概要: 这段Python代码利用强大的语音识别库,能够自动将本地存储的语音视频文件转换成文本。它通过分析音频轨道中的语音数据,识别并转录为可编辑和可搜索的文本格式。 适用人群: …

装修必看干货|入户玄关设计进门就是客厅应该怎么设计?福州中宅装饰,福州装修

入户玄关设计在进门就是客厅的情况下&#xff0c;想要拥有单独的玄关空间&#xff0c;以下是五点设计建议&#xff1a; ①隔断屏风 使用隔断屏风是传统而常见的一种空间分割方法。可以选用木制、金属或玻璃等材质的屏风&#xff0c;根据需要进行灵活搭配和定制。 屏风的款式和…

Python爬虫——Urllib库-1

这几天都在为了蓝桥杯做准备&#xff0c;一直在刷算法题&#xff0c;确实刷算法题的过程是及其的枯燥且枯燥的。于是我还是决定给自己找点成就感出来&#xff0c;那么Python的爬虫就这样开始学习了。 注&#xff1a;文章源于观看尚硅谷爬虫视频后笔记 目录 Urllib库 基本使…

【C++】字符串 1478 - 出现次数最多的小写字母 1475 - 字符串对比 1098 - 判断是否构成回文 1102 - 字符串中的空格移位

文章目录 问题一&#xff1a;1478 - 出现次数最多的小写字母问题二&#xff1a;1475 - 字符串对比问题三&#xff1a;1098 - 判断是否构成回文问题四&#xff1a;1102 - 字符串中的空格移位五、感谢 问题一&#xff1a;1478 - 出现次数最多的小写字母 类型&#xff1a;字符串 …

oracle基础体系

一、 Oracle数据库服务器 数据库在各个行业都会有使用到&#xff1b;其实&#xff0c;我们平时无论是在与客户沟通或者交流中&#xff0c;所说的Oracle数据库是指Oracle数据库服务器&#xff08;Oracle Server&#xff09;&#xff0c;它由Oracle实例&#xff08;Oracle Instan…

什么是杠杆?WeTrade众汇这样举例,大家都明白

杠杆是投资交易者一定要知道的一个金融术语。那么什么是杠杆呢?下面WeTrade众汇就用苹果进行举例&#xff0c;大家就都会明白&#xff0c;原来如此简单。 发挥我们投资者的想象&#xff0c;我们现在要进行一场苹果的买卖&#xff0c;能够赚钱的本质就是高买低卖&#xff0c;所…

二十篇esp3454

jfjjfj from machine import I2C,Pin from ssd1306 import SSD1306_I2C i2c I2C(sdaPin(“Y8”), sclPin(“Y6”)) oled SSD1306_I2C(128, 64, i2c, addr0x3c) oled.text(“Hello World!”, 0, 0) oled.text(“MicroPython”, 0, 20) oled.text(“By 01Studio”, 0, 50) oled…

【在巴厘岛学点印尼语】日常篇

BINTANG BIR 槟棠啤酒 今天不写代码&#xff0c;在巴厘岛休养&#xff0c;顺便聊点印尼语。 印尼语&#xff0c;Bahasa Indonesia&#xff0c;是印度尼西亚的官方语言&#xff0c;也即印尼化的马来语廖内方言&#xff0c;其变种包括 爪哇语&#xff08;岛民方言&#xff09; 等…

如何选择适合电商的WordPress主题模板?

选择适合电商的WordPress主题模板时&#xff0c;首先应考虑主题模板是否与WooCommerce兼容。WooCommerce是WordPress中一个强大的电商插件&#xff0c;能够帮助用户实现在线电子商务销售或产品展示。因此&#xff0c;选择一个与WooCommerce高度兼容的主题模板至关重要。 其次&…

5.测试教程 - 进阶篇

文章目录 1.按测试对像划分1.1**界面测试**1.2**可靠性测试**1.3**容错性测试**1.4**文档测试**1.5**兼容性测试**1.6**易用性测试**1.7**安装卸载测试**1.8**安全测试**1.9**性能测试**1.10**内存泄漏测试** 2.按是否查看代码划分2.1黑盒测试(Black-box Testing)2.2白盒测试(W…

部署kubernetes-dashboard改成http免密登录

原始链接地址 https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 修改Service端口 增加80端口&#xff0c;改成http访问 修改前: spec:ports:- port: 443targetPort: 8443selector:k8s-app: kubernetes-dashboard修改后&#xff…

snakemake: 基本语法知识点

Snakemake 使用一种基于 Python 的语法来定义工作流&#xff0c;允许用户编写规则&#xff08;rules&#xff09;来指定数据分析流程中的各个步骤。以下是一些基础语法知识点&#xff0c;帮助你理解和使用 Snakemake。 1. 规则&#xff08;Rules&#xff09; 规则是 Snakemak…

【ROS源码阅读】

项目需要研读ROS源码&#xff0c;这其中碰到的一些问题记录一下&#xff1a; 源码编译过程 (1) 在ubuntu 18.04 上安装ROS melodic的版本。 (2) 下载源码&#xff0c; ROS源码链接&#xff1a; https://github.com/ros/ros_comm/tree/melodic-devel/ros_comm(3) 编译 例如想…

图像增强预处理对于深度学习训练的提高有帮助吗?

答案&#xff1a;图像增强预处理对于深度学习训练非常有帮助&#xff0c;它可以显著提高模型的性能和泛化能力。 图像增强包括许多技术&#xff0c;可以通过各种方法改进图像数据&#xff0c;使其更适合训练深度学习模型。 可以增加数据集的多样性&#xff0c;减少模型对特定图…

书生浦语全链路开源体系

推荐阅读论文 A Survey Of Large Language Models 书生浦语开源的模型 从模型到应用 书生浦语开源体系 书生万卷开源数据集 除此之外还有OpenDataLab国内数据集下载网站。 预训练框架InterLM-Train 微调框架XTuner 评测工具体系 国内外常见的大语言模型评测基准&#xff1a…

【JS 算法题: 将 json 转换为字符串】

题目简介 其实就是手撕 JSON.stringfy()。 算法实现 输入 原则上来说&#xff0c;输入的是一个 json 对象。但需要考虑到异常情况&#xff0c;即输入了其它类型的数据&#xff0c;比如&#xff1a;12, true, ‘abc’, [‘red’, ‘green’], null, undefined 等。 输出 …