实验五报告

一、实验结论:

1. 二分查找:
补足程序ex1_1.cpp
// 练习:使用二分查找,在一组有序元素中查找数据项
//  形参是数组,实参是数组名 
#include  <stdio.h>
const int N=5;
int binarySearch(int x[], int n, int item);
int main() {int a[N]={6,16,20,52,66};int i,index, key;printf("数组a中的数据:\n");for(i=0;i<N;i++)printf("%d ",a[i]);printf("\n");printf("输入待查找的数据项: ");scanf("%d", &key);// 调用函数binarySearch()在数组a中查找指定数据项item,并返回查找结果给index // 补足代码① // ××× index=binarySearch(a,N,key);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;
}

补足程序ex1_2.cpp
// 练习:使用二分查找,在一组有序元素中查找数据项
//  形参是指针变量,实参是数组名
#include  <stdio.h>
const int N=5;
int binarySearch(int *x, int n, int item);
int main() {int a[N]={3,4,5,15,26};int i,index, key;printf("数组a中的数据:\n");for(i=0;i<N;i++)printf("%d ",a[i]);printf("\n");printf("输入待查找的数据项: ");scanf("%d", &key);// 调用函数binarySearch()在数组a中查找指定数据项item,并返回查找结果// 补足代码①// ××× index=binarySearch(a, N, key);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. 选择法排序
补足程序ex2_2.cpp
// 练习:使用选择法对字符串按字典序排序
#include <stdio.h>
#include <string.h>
void selectSort(char str[][20], int n ); // 函数声明,形参str是二维数组名 
int main() {char name[][20] = {"Yang", "Hai", "Yi", "Huang", "Yu","Ting"};int i;printf("输出初始名单:\n");for(i=0; i<6; i++)printf("%s\n", name[i]);selectSort(name, 6);  // 调用选择法对name数组中的字符串排序
    printf("按字典序输出名单:\n");for(i=0; i<6; i++)printf("%s\n", name[i]);return 0;
} // 函数定义
// 函数功能描述:使用选择法对二维数组str中的n个字符串按字典序排序 
void selectSort(char str[][20], int n) {int i,j;char t[20];for(i=0;i<n-1;i++){for(j=0;j<n-i-1;j++){strcmp(str[j],str[j+1]);if(strcmp(str[j],str[j+1])>0){strcpy(t,str[j]);strcpy(str[j],str[j+1]);strcpy(str[j+1],t);}}}}

3. 用指针处理字符串
练习2(黄色为修改部分)
// 用指针变量处理字符串练习2
// 删除中间和末尾的* (即除了前导*,删除字符串中其它全部*) 
#include <stdio.h>
void delStarButPrefix(char []); // 函数声明(函数声明中可以省略数组名不写) int main() {char string[80];printf("输入一个字符串:\n");gets(string);printf("\n删除<中间和末尾的*>之前的字符串:\n");puts(string);delStarButPrefix(string);  // 调用函数,删除中间和末尾的*; 注意实参的写法 
    printf("\n删除<中间和末尾的*>之后的字符串:\n");puts(string);return 0;
} // 函数定义
// 函数功能描述
// 删除字符数组s中除了前导*以外的所有*(即删除字符串中间和末尾出现的*) 
void delStarButPrefix(char s[]) {int i=0;              // i用于记录字符在字符数组s中的下标 char *p = s;// 跳过前导*,i记录字符在字符数组s中的下标,p记录首个非*字符的位置 while(*p == '*') {    //while(*p && *p == '*') 不太懂什么意思 就去掉了*p p++;i++;}// 从p指向的字符开始,把遇到的*删除 while(*p) {if(*p != '*') {s[i] = *p;i++;p++;}elsep++;         //开始不太懂p++不在if里面 就分开写了 
    } s[i] = '\0';   // *p=0是就结束循环了 s[i]没有被赋结束符号
}

练习1、3未改动

 

二、实验总结:

1.数组名作为参数 vs. 指针变量作为参数在形参、实参写法

 数组名作为函数参数,传递的值是地址。

 case1: 实参—数组名,形参—数组名 

void f( int [] , int );
int  main() {int a[5];…f(a,5);…
}
void f( int x[], int n ){…
}

case2: 实参—数组名,形参——指针变量

void f (int *, int );
int  main() {int a[10];…f(a,10);…
}
void f (int *p, int n ) {…
}

case3: 实参—指针变量,形参—数组名

void f( int [] , int );
int  main() {int a[5], *p;p = a;…f(p,5);…
}
void f( int x[], int n ){…
}

case4: 实参—指针变量,形参—指针变量

void f( int [] , int );
int  main() {int a[5], *p;p = a;…f(p,5);…
}
void f( int *q, int n ){…
}

 

2.常用指针定义小结

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

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

4.使用指针变量对字符串进行处理 

 

转载于:https://www.cnblogs.com/xiaerhe/p/10898616.html

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

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

相关文章

实验五 网络编程与安全-----实验报告

一、实验五 网络编程与安全-1 1.实验要求&#xff1a; 两人一组结对编程&#xff1a; &#xff08;1&#xff09;参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA &#xff1b; &#xff08;2&#xff09;结对实现中缀表达式转后缀表达式的功能 MyBC.java&#xff1b…

Docker版本Jenkins的使用

Docker版本Jenkins的使用 低调的微胖关注赞赏支持 Docker版本Jenkins的使用 12018.05.15 18:21:50字数 1202阅读 22588 一. 什么是Jenkins Jenkins是当前非常流行的一款持续集成工具&#xff0c;可以帮助大家把更新后的代码自动部署到服务器上运行。 二. 为什么用docker版…

小程序 setData 中的坑,其实好像...

最近这段时间在写微信小程序&#xff0c;有一个页面需要动态修改 data 中的数据&#xff0c;而这里似乎是个坑。 1、正常修改 正常修改很简单&#xff0c;当触发 change 事件时&#xff0c;数据和页面都会同时发生改变。这个也不用多说&#xff0c;很简单的例子。 2、如何修改对…

CentOS HarBor安装与配置

HarBor 安装与配置 Prerequisites for the target host ResourceCapacityDescriptionCPUminimal 2 CPU4 CPU is preferredMemminimal 4GB8GB is preferredDiskminimal 40GB160GB is preferred 环境 centos7harbor v1.6.3python v2.7及以上docker v1.10及以上docker-compose …

phpstudy如何安装景安ssl证书 window下apache服务器网站https访问

1. 下载景安免费证书 https://www.zzidc.com/help/helpDetail?id555 2.文件解压上传至服务器&#xff0c;位置自己决定 3. 调整apache配置 景安原文链接&#xff1a;https://www.zzidc.com/help/helpDetail?id555 ① 确保你的apache编译了ssl模块&#xff0c;这是支持ssl证书…

docker下gitlab安装配置使用(完整版)

docker下gitlab安装配置使用(完整版) 22018.12.16 00:07:57字数 737阅读 17595 docker 安装gitlab以及使用 一、安装及配置 1.gitlab镜像拉取 # gitlab-ce为稳定版本&#xff0c;后面不填写版本则默认pull最新latest版本 $ docker pull gitlab/gitlab-ce拉取镜像 2.运行g…

企业级应用,如何实现服务化一(项目架构演化)

1.企业级应用架构演化 1.1.架构演化图 1.2.文字描述 #单一应用架构当网站流量很小时&#xff0c;只需一个应用&#xff0c;将所有功能都部署在一起&#xff0c;以减少部署节点和成本#垂直应用架构当访问量逐渐增大&#xff0c;单一应用增加机器带来的加速度越来越小&#xff0c…

readonly的用法

转载于:https://www.cnblogs.com/w123w/p/10958567.html

Jenkins发布spring boot到hub.Docker 方法

在生成的目录下&#xff0c;建立个文件&#xff0c;文件名称为&#xff1a;Dockerfile FROM java:8 VOLUME /tmp ADD target/assignment-0.0.1-SNAPSHOT.jar /dalaoyang.jar ENTRYPOINT ["java","-Djava.security.egdfile:/dev/./urandom","-jar&q…

网页视频直播、微信视频直播技术解决方案:EasyNVR与EasyDSS流媒体服务器组合之区分不同场景下的直播接入需求...

背景分析 熟悉EasyNVR产品的朋友们都知道&#xff0c;EasyNVR不仅可以独成体系&#xff0c;而且还可以跟其他系列产品相配合&#xff0c;形成各种不同类型的解决方案&#xff0c;满足各种不同应用场景的实际需求。针对很多设备现场没有固定公网IP&#xff0c;但是又想实现公网、…

如何解决VMware Workstation 10.0.0 build-1295980马赛克现象

VMware Workstation 10.0.0 build-1295980偶尔出现客户机马赛克现象&#xff0c;可切换至其它选项卡&#xff0c;再切换回去即可。 还有一种方式是关闭加速3D图形。 转载于:https://www.cnblogs.com/rms365/p/10961499.html

不同账号间的云资源授权方法

阿里云的访问控制RAM产品可以实现资源的分配和授权,在一个特殊的业务背景下,资源也可以实现跨账号的授权使用. 背景: 1.A公司,作为甲方Party A,出资购买云资源,对云资源具有所有权,但不实际管理,需要乙方配合. 2.B公司,作为乙方Party B,要管理A公司的云资源,需要A公司授权云资…

知乎上已获千赞,持续更新中

前言 不知不觉自己已经做了几年开发了&#xff0c;由记得刚出来工作的时候感觉自己能牛逼&#xff0c;现在回想起来感觉好无知。懂的越多的时候你才会发现懂的越少。 如果你的知识是一个圆&#xff0c;当你的圆越大时&#xff0c;圆外面的世界也就越大。 最近看到很多Androi…

centos下搭建Jenkins持续集成环境(安装jenkins)

centos下搭建Jenkins持续集成环境(安装jenkins) 1、安装JDK yum install -y java 2、安装jenkins 添加Jenkins库到yum库&#xff0c;Jenkins将从这里下载安装。 1 wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo 2 rpm --import h…

离开小厂进大厂的第一周,BTAJ大厂最新面试题汇集,面试总结

大佬带你走进Android开发的世界&#xff0c;掌握了这些知识点&#xff0c;学习Android也可以很轻松。 核心分析内容 对于怎么学习Android&#xff0c;主要解决的是3个问题&#xff1a;学什么、怎么学 & 怎么用。 具体如下&#xff1a; 下面&#xff0c;我将带着上述几个问…

程序员35岁真的是分水岭吗?小白也能看明白

前言 今天我给大家再次分享一下&#xff0c;我最近的一些读书的感想&#xff0c;思考起来&#xff0c;确实能够给自己带来一些真实的帮助和启发&#xff0c;希望大家在平时的工作学习中&#xff0c;也能够认清楚学习的一些本质。 如果我们的学习是在不断掌握应对具体工作场景…

远程桌面最新漏洞CVE-2019-0708 POC利用复现

POC有点鸡肋&#xff0c;并没有蓝屏&#xff01;&#xff01;&#xff01; POC运行环境&#xff1a; Python 3.5.6 |Anaconda 4.2.0 (64-bit)| (default, Aug 26 2018, 16:05:27) [MSC v.1 900 64 bit (AMD64)] on win32 依赖包及POC下载地址&#xff1a; 链接&#xff1a;http…

程序员如何技术划水,手把手教你写Android项目文档,绝对干货

安卓开发大军浩浩荡荡&#xff0c;经过近十年的发展&#xff0c;Android技术优化日异月新&#xff0c;如今Android 11.0 已经发布&#xff0c;Android系统性能也已经非常流畅&#xff0c;可以在体验上完全媲美iOS。 但是&#xff0c;到了各大厂商手里&#xff0c;改源码、自定…

spring cloud各个微服务打包到docker容器内

日常你所启动的微服务比如这样的 java -jar eureka-0.0.1-SNAPSHOT.jar --server.port41578 --spring.profiles.activelocal 然后想把它给整Docker里玩玩 首先要在打包好的Spring Boot同级目录下&#xff0c;建立一个Dockerfile 然后在这个文件下写上以下内容,大致的意思上从…

程序员如何自我学习和成长?深度好文

前言 工欲善其事必先利其器!在现代IT中&#xff0c;每个Android程序员都需要最好的工具来提高他们的技能和效率。在Android应用程序开发这个残酷的竞争行业中&#xff0c;只有优秀的程序员才能生存下去。你需要向客户展示你拥有的最佳技术和能力。 不仅仅是展示你的设备以吸引…