第五次实验

 数组和指针

1. 设N个整数有序(由小到大)存放在一维数组中。编写函数binarySearch(),实现使用二分查找算法在一维数组中 查找特定整数item。如果找到,返回item在数组元素中的下标;如果item不在数组中,则返回-1。

实现方式1:形参是数组,实参是数组名,使用数组元素直接访问方式实现

代码如下:

// 练习:使用二分查找,在一组有序元素中查找数据项
//  形参是数组,实参是数组名 
#include  <stdio.h>
const int N=5;
int binarySearch(int x[], int n, int item);
int main() {int a[N]={1,3,9,16,21};int i,index, key;printf("数组a中的数据:\n");for(i=0;i<N;i++)printf("%d ",a[i]);printf("\n");printf("输入待查找的数据项: ");scanf("%d", &key);index= binarySearch(a,N,key); // 调用函数binarySearch()在数组a中查找指定数据项item,并返回查找结果给index // 补足代码① // ××× if(index>=0) printf("%d在数组中,下标为%d\n", key, index);elseprintf("%d不在数组中\n", key); return 0;
}//函数功能描述:
//使用二分查找算法在数组x中查找特定值item,数组x大小为n 
// 如果找到,返回其下标 
// 如果没找到,返回-1 
int binarySearch(int x[], int n, int item) {int low, high, mid;low = 0;high = n-1;while(low <= high) {mid = (low+high)/2;if (item == x[mid])return mid;else if(item < x[mid])high = mid - 1;elselow = mid + 1;}return -1;
}

运行结果:

 

实现方式2:形参是指针变量,实参是数组名,使用指针变量间接访问方式实现

代码如下:

// 练习:使用二分查找,在一组有序元素中查找数据项
//  形参是指针变量,实参是数组名
#include  <stdio.h>
const int N=5;
int binarySearch(int *x, int n, int item);
int main() {int a[N]={1,3,9,16,21};int i,index, key;printf("数组a中的数据:\n");for(i=0;i<N;i++)printf("%d ",a[i]);printf("\n");printf("输入待查找的数据项: ");scanf("%d", &key);index= binarySearch(a,N,key); // 调用函数binarySearch()在数组a中查找指定数据项item,并返回查找结果// 补足代码①// ××× if(index>=0) printf("%d在数组中,下标为%d\n", key, index);elseprintf("%d不在数组中\n", key); return 0;
}//函数功能描述:
//使用二分查找算法在x指向的数据项开始的n个数据中,查找item
// 如果找到,返回其位置
// 如果没找到,返回-1 
int binarySearch(int *x, int n, int item) {int low, high, mid;low = 0;high = n-1;while(low <= high) {mid = (low+high)/2;if (item == *(x+mid))return mid;else if(item != *(x+mid))high = mid - 1;elselow = mid + 1;}return -1;
}

运行结果:

2. 用选择法排序对一组数据由小到大排序。

代码如下:

// 练习:使用选择法对字符串按字典序排序
#include <stdio.h>
#include <string.h>
void selectSort(char str[][20], int n ); // 函数声明,形参str是二维数组名 
int main() {char name[][20] = {"John", "Alex", "Joseph", "Candy", "Geoge"};int i;printf("输出初始名单:\n");for(i=0; i<5; i++)printf("%s\n", name[i]);selectSort(name, 5);  // 调用选择法对name数组中的字符串排序
    printf("按字典序输出名单:\n");for(i=0; i<5; i++)printf("%s\n", name[i]);return 0;
} // 函数定义
// 函数功能描述:使用选择法对二维数组str中的n个字符串按字典序排序 
void selectSort(char str[][20], int n) {
int i, j, k;char temp[20];for(i=0; i<n-1; i++) {k = i;  // k用于记录当前最小元素的下标 for(j=i+1; j<n; j++)if (strcmp(str[j],str[k])<0)k = j;   // 如果str[j]比当前最小元素还要小,就更新k,确保它总是存放最小元素的下标                 if(k != i) {     // 找到最小元素后,交换str[i]和str[k] 
             strcpy(temp,str[i]);strcpy(str[i],str[k]);strcpy(str[k],temp);}}}   

运行结果:

  

实验总结和体会 :

数组名作为参数 vs. 指针变量作为参数,在形参、实参写法,以及函数实现中数组元素表示的差异

          形参        实参          数组元素表示

数组名作为参数   int x[]      Sum(a,b)            a[i]

指针变量作为参数  int *p1、int *p2  Swap(pa,pb)        P[1]、*(p+1)

使用选择法对字符串排序时注意事项

字符串的比较和赋值,不能直接使用关系运算符和赋值运算符,要借助字符串处理函数。

比如strcpy(a,b):将字符串复制到字符数组中,空位用\0填补

  strcmp(a,b):比较两个字符串的大小,返回一个整数值,大于零:a大于b,等于零:相等,小于零:a小于b。

互评地址:

https://www.cnblogs.com/aoliaoliao/p/10913013.html

https://www.cnblogs.com/QYAS/p/10931318.html

https://www.cnblogs.com/TiAmoz/p/10941117.html

转载于:https://www.cnblogs.com/LIUxh/p/10921827.html

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

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

相关文章

百度地图批量转换 GPS坐标转百度地图坐标 问题

百度地图的官方网址 官方批量转换的demo 花了几天时间了解了一下百度地图&#xff0c;之前是后端的一个小伙伴在负责&#xff0c;他跟我吐槽这是前端的东西&#xff0c;让我来写&#xff08;之前他们老大交给他了&#xff0c;我也以为是后端的任务(๑′ᴗ‵๑)。。&#xff09…

《React Native 精解与实战》书籍连载「Node.js 简介与 React Native 开发环境配置」

此文是我的出版书籍《React Native 精解与实战》连载分享&#xff0c;此书由机械工业出版社出版&#xff0c;书中详解了 React Native 框架底层原理、React Native 组件布局、组件与 API 的介绍与代码实战&#xff0c;以及 React Native 与 iOS、Android 平台的混合开发底层原理…

使用XStream将JSON转换为XML到Java对象

XStream库可以是将JSON从Java转换为XML来回转换的有效工具。 让我们逐一探究它们中的每一个&#xff0c;并查看使用了哪个驱动程序。 处理JSON 要将JSON转换为Java对象&#xff0c;您要做的就是使用适当的驱动程序初始化XStream对象&#xff0c;并准备将对象序列化到JSON&…

Hello Blog!

经过漫长的期待&#xff0c;终于在博客园开博了。 希望有一个很好的开端&#xff0c;请大家多多关照。 转载于:https://www.cnblogs.com/nouoo/archive/2010/09/25/1834289.html

JavaScript的二维数组

二维数组的初始化&#xff1a; 实例① var arr [[1,2],[a,b]]; console.log(arr[1][0]); //a 第2列第1行所在的元素实例② var arr new Array(new Array(1,2),new Array("a","b")); console.log(arr[1][0]);实例③ var arr new Array(); //先声…

vue+element 封装公共js代码

一、多个 js 方法&#xff0c;不想用 vue.prototype 二、使用Vue.prototype 封装公共 js 三、封装的方法较多&#xff0c;又想通过this.直接调用 一、多个 js 方法&#xff0c;不想用 vue.prototype 封装一个弹框为例&#xff1a; 1. 在 components 文件夹下新增一个 js 文件…

React.js 入门与实战课程思维导图

原文发表于我的技术博客 我在慕课网的「React.js 入门与实战之开发适配PC端及移动端新闻头条平台」课程已经上线了&#xff0c;在这里分享了课程中的思维导图&#xff0c;供大家参考。 原文发表于我的技术博客 此导图为课程中整理的重要知识点以及大纲导图&#xff0c;供大家学…

将递归文件系统遍历转换为流

在学习编程的时候&#xff0c;回到Turbo Pascal时代&#xff0c;我设法使用FindFirst &#xff0c; FindNext和FindClose函数在目录中列出文件。 首先&#xff0c;我想出了一个打印给定目录内容的过程。 您可以想象我为能够真正从自身调用该过程以递归遍历文件系统而感到自豪。…

Webpack 2 视频教程 002 - NodeJS 安装与配置

原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」。 Webpack 作为目前前端开发必备的框架&#xff0c;Webpack 发布了 2.0 版本&#xff0c;此视频就是基于 2.0 的版本讲解的。 这个基本就是目前国内最好的 Webpack 2.0 最好的学习视频了&#xff0c;…

vue+elementUI 添加多个可以全选的多选框

elementUI-checkbox官网&#xff1a;https://element.eleme.cn/#/zh-CN/component/checkbox 一、要做上面这种效果&#xff0c;首先要了解全选框中indeterminate 状态和v-model的变量的关系 参考 -Dayer-&#xff1a; <el-checkbox :indeterminate"isIndeterminate&…

WMI in C#[强类型操作]

C# 进行WMI操作的内容封装在System.Management.dll中&#xff0c;具体的在MSDN有详细描述&#xff0c;默认是用[“**’]去读取和设置属性等。 此处介绍一个自动生成强类型的包装软件&#xff0c;这样处理起来就简单了很多&#xff0c;不用在反复的查看参数等信息了。 1、 使用W…

JSR 303从I18N属性文件加载消息

总览 本文将说明如何适应JSR 303验证API来从I18n属性文件加载消息&#xff0c;并通过保留国际化的所有好处和对多种语言的支持来实现这一点。 为此&#xff0c;我们将实现一个基于Spring API的自定义MessageInterpolator&#xff0c;用于管理I18N消息。 依存关系 在进行这项工…

2019年ipa发布苹果应用商店审核指南

https://baijiahao.baidu.com/s?id1623886553597961077&wfrspider&forpc ipa 发布审核指南 说明&#xff1a; 本指南为初版&#xff0c;旨在帮助非技术人员快速了解苹果ipa发布审核流程非技术的审核专员发布审核只需处理 &#xff08;五&#xff09;、iTunes connect …

GridView生成序号

一个经常碰到的情况&#xff1a;GridView需要添加一个序号列&#xff0c;并且从1开始自动编号。而数据库中的ID往往是不连续的&#xff08;会有记录被删除的情况&#xff09;&#xff0c;我们无法绑定现有字段作为编号。因此我们需要手动给GridView编号。 思路&#xff1a;在Gr…

[前端优化]使用Microsoft Ajax Minifier对资源文件进行压缩优化

在前端优化中&#xff0c;js、css等文件的优化一般都是压缩的优化&#xff0c;进行合并、减小体积以达到减小请求的目的。 今天发现了一个集成在VS中的压缩插件&#xff0c;使得压缩变得比较快捷。 配置方法 首先需要去下载Microsoft Ajax Minifier&#xff0c;一路安装就可以&…

手把手教你用 elementUI 实现导航栏

elementUI导航栏官网 1. 安装 elementUI 2. 文件准备 3. 配置路由 4. 导航栏代码 一、安装 elementUI npm i element-ui -S&#xff1b; 在 main.js 中注册组件&#xff1a; import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; Vue.use(Elem…

Java 8编写自定义收集器简介

Java 8引入了收集器的概念。 大多数时候&#xff0c;我们几乎不使用Collectors类中的工厂方法&#xff0c;例如collect(toList()) &#xff0c; toSet()或其他更花哨的方法&#xff0c;例如counting()或groupingBy() 。 实际上&#xff0c;没有多少人真正去研究如何定义和实现收…

vuex+element 从后台获取数据写导航栏-菜单权限

主要用到 vuex、router.beforeEach、router.addRoutes()。vuex 的使用方法可以看我的另一篇博客&#xff1a;vue笔记&#xff08;四&#xff09;vuex。 顺便安利一个 在线视频转gif图。 因为第一次用到 router.addRoutes()&#xff0c;在做这个需求的时候遇到了很多问题&…

Sql Server全局变量(转)

Sql Server一共提供了30多个全局变量常用:IDENTITY : 返回最后插入行的标识列的列值。ERROR : 返回最后执行的Transact-SQL语句的错误代码。没有错误则为零。ROWCOUNT : 返回受上一语句影响的行数&#xff0c;任何不返回行的语句将这一变量设置为0。DBTS : 返回当前数据库的…

P3393 逃离僵尸岛 最短路dijkstra

题目描述 小a住的国家被僵尸侵略了&#xff01;小a打算逃离到该国唯一的国际空港逃出这个国家。 该国有N个城市&#xff0c;城市之间有道路相连。一共有M条双向道路。保证没有自环和重边。 K个城市已经被僵尸控制了&#xff0c;如果贸然闯入就会被感染TAT...所以不能进入。由其…