实验五报告

一、实验结论:

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,一经查实,立即删除!

相关文章

关于浏览器内核

介绍一下对浏览器内核的理解主要分成两个部分&#xff1a;渲染引擎(Render Engine)和JS引擎。常见的浏览器内核有哪些&#xff1f;Trident内核&#xff1a;IE&#xff0c;360&#xff0c;搜过浏览器&#xff1b;Gecko内核&#xff1a;Netscape6及以上版本&#xff0c;Presto内核…

docker 全部杀掉

杀死所有正在运行的容器 docker kill $(docker ps -a -q) 删除所有已经停止的容器 docker rm $(docker ps -a -q) 删除所有未打 dangling 标签的镜像 docker rmi $(docker images -q -f danglingtrue) 删除所有镜像 docker rmi $(docker images -q) 强制删除镜像名称中包含“do…

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

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

K8S的HelloWorld之旅

安装kubectl。使用Google提供商&#xff08;如Google Container Engine或Amazon Web Services&#xff09;创建Kubernetes群集。本教程创建一个 外部负载均衡器&#xff0c;它需要一个云提供商。配置kubectl与Kubernetes API服务器通信。有关说明&#xff0c;请参阅云提供商的文…

思维构造——cf1090D

/* 只要找到两个没有关系的点即可 */ #include<bits/stdc.h> using namespace std; #define maxn 100005 long long n,m; int a[maxn],b[maxn]; vector<int>G[maxn]; int main(){cin>>n>>m;if(n1){puts("NO");return 0;}if(n*(n-1)/2<m)…

误删docker0网桥之后怎么办呢?

误删docker0网桥之后怎么办呢&#xff1f; 今天&#xff0c;在搭建k8s node节点环境的时候&#xff0c;好巧不巧&#xff0c;执行了如下命令&#xff1a; 1 2 [roothxin221 ~]# ifconfig docker0 down &>/dev/null [roothxin221 ~]# brctl delbr docker0 &>/de…

boost.asio学习

https://mmoaay.gitbooks.io/boost-asio-cpp-network-programming-chinese/content/Chapter1.html转载于:https://www.cnblogs.com/hshy/p/10930398.html

Harbor:私有企业级Registry仓库--快速搭建

前言 Harbor可以通过Docker Composer的方式来部署&#xff0c;如果有正常运行的k8s环境&#xff0c;也可以使用k8s来部署Harbor&#xff0c;本文采用 Docker Composer的方式。 准备 假定Linux系统为Centos 7。 docker &#xff0c;默认安装即可 yum -y install docker 1 dock…

java-Mysql学生管理系统

Window1//主方法 package stu_zizhu1; import java.awt.Button; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JBu…

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 …

幂等

一种方案是创建唯一索引。在数据库中针对我们需要约束的资源字段创建唯一索引&#xff0c;可以防止插入重复数据。但是&#xff0c;遇到分库分表的场景&#xff0c;唯一索引也就不那么好使了&#xff0c; 此时&#xff0c;我们可以先查询数据库&#xff0c;判断约束的资源字段是…

ELK 删除索引只保留10天

delelk.sh&#xff1a; #!/bin/bash #定时清除elk索引&#xff0c;10天 DATEdate -d "10 days ago" %Y.%m.%d curl -XDELETE "http://127.0.0.1:9400/*-${DATE}" 127.0.0.1:9400 ES的地址 定时任务执行此脚本 30 17 * bash /home/scripts/delelk.sh

通过ceph-deploy搭建ceph 13.2.5 mimic

一、ceph介绍 操作系统需要内核版本在kernel 3.10或CentOS7以上版本中部署通过deploy工具安装简化部署过程&#xff0c;本文中选用的ceph-deploy版本为1.5.39至少准备6个环境&#xff0c;分别为1个ceph-admin管理节点、3个mon/mgr/mds节点、2个osd节点二、ceph安装 1. 部署ceph…

openstack服务编排

heat列出所有组件时报错 ERROR: 503 Service Unavailable The server is currently unavailable. Please try again at a later time. 错误&#xff1a;503服务不可用 cu错 w误 &#xff1a; 5 0 3 f服 w务 b不 kě可 yng用 The server is currently unavailable. Please tr…

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…

hdfs的特性、命令、安全模式、基准测试

1.第一点&#xff1a;如何理解hdfs分布式文件系统&#xff0c;每台机器出一块磁盘&#xff0c;凑成一个大的硬盘&#xff0c;大的硬盘的容量来自各个服务器的硬盘容量之和。 你出5毛&#xff0c;我出5毛&#xff0c;大家凑成1块。 2. HDFS 是 Hadoop Distribute File System 的…

如何push一个docker镜像到DockerHub上

如何push一个docker镜像到DockerHub上 2018.01.03 11:31:39字数 139阅读 202 有时候想要保存自己的docker镜像&#xff0c;又不想自己搭建docker registry&#xff0c;那么就可以了借用DockerHub来用&#xff0c;一般不会有多少人在意你的镜像&#xff0c;不过万一被人看上了…