博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实验五
阅读量:5051 次
发布时间:2019-06-12

本文共 3512 字,大约阅读时间需要 11 分钟。

Part1   二分查找

 

// 练习:使用二分查找,在一组有序元素中查找数据项//  形参是数组,实参是数组名 #include  
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
=0) printf("%d在数组中,下标为%d\n", key, index); else printf("%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

利用指针变量的代码如下:

// 练习:使用二分查找,在一组有序元素中查找数据项//  形参是指针变量,实参是数组名#include  
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
=0) printf("%d在数组中,下标为%d\n", key, index); else printf("%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; else low = mid + 1; } return -1;}

   函数调用方式:(1)作为表达式的一部分  (2)作为C语言语句  (3)作为函数参数

若q指向一维数组,表现方式

&a[n] q+n a+n
a[n] *(q+n) *(a+n)

 

 Part2 选择排序法

#include 
#include
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
0) //运用strump函数与后一位数组中元素比较大小 k=j;} //若当前元素更小,更新k的值,使k始终是最小元素下标 if(i!=k) { strcpy(temp, str[i]); strcpy(str[i], str[k]); strcpy(str[k], temp);//运用strcpy函数与交换数值的知识结合 } }}

字符串处理函数

字符串连接函数 strcat()

strcat 是 string catenate 的缩写,意思是把两个字符串拼接在一起,语法格式为:

strcat(arrayName1, arrayName2);

arrayName1、arrayName2 为需要拼接的字符串。
strcat() 将把 arrayName2 连接到 arrayName1 后面,并删除原来 arrayName1 最后的结束标志'\0'。这意味着,arrayName1 必须足够长,要能够同时容纳 arrayName1 和 arrayName2,否则会越界(超出范围)。

 

 

字符串复制函数 strcpy()

strcpy 是 string copy 的缩写,意思是字符串复制,也即将字符串从一个地方复制到另外一个地方,语法格式为:

strcpy(arrayName1, arrayName2);

strcpy() 会把 arrayName2 中的字符串拷贝到 arrayName1 中,字符串结束标志'\0'也一同拷贝。

 

字符串比较函数 strcmp()

strcmp 是 string compare 的缩写,意思是字符串比较,语法格式为:

strcmp(arrayName1, arrayName2);

arrayName1 和 arrayName2 是需要比较的两个字符串。

字符本身没有大小之分,strcmp() 以各个字符对应的 码值进行比较。strcmp() 从两个字符串的第 0 个字符开始比较,如果它们相等,就继续比较下一个字符,直到遇见不同的字符,或者到字符串的末尾。
返回值:若 arrayName1 和 arrayName2 相同,则返回0;若 arrayName1 大于 arrayName2,则返回大于 0 的值;若 arrayName1 小于 arrayName2,则返回小于0 的值。

Part 3

line29-42把字符串分成了三段,找到了head和tail的位置,以tail为例,先让tail指向字符串最后,用tail--跳过\0,再用while语句使tail遇到*就往前一格,直至到最后一个字母。line46-51把head之前的*都复制到了数组,p<=head使得p在这个语句后指向head。line53-57把字符串从head到tail中的*删除后复制到数组。由于结束后p指向未知地址,再赋值\0给s[i]作为结束。

 

实验总结

字符串函数的功能和使用规则还需要联系,对指针的运行方式不够熟练,独立编写完整程序仍存在一定困难

转载于:https://www.cnblogs.com/aoliaoliao/p/10913013.html

你可能感兴趣的文章
javascript中的each遍历
查看>>
String中各方法多数情况下返回新的String对象
查看>>
UVA11524构造系数数组+高斯消元解异或方程组
查看>>
爬虫基础
查看>>
jquery.lazyload延迟加载图片第一屏问题
查看>>
数据库连接
查看>>
delphi.指针.PChar
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
android调试debug快捷键
查看>>
【读书笔记】《HTTP权威指南》:Web Hosting
查看>>
Inoodb 存储引擎
查看>>
数据结构之查找算法总结笔记
查看>>
Android TextView加上阴影效果
查看>>
Requests库的基本使用
查看>>
C#:System.Array简单使用
查看>>
「Foundation」集合
查看>>
二叉树的遍历 - 数据结构和算法46
查看>>
类模板 - C++快速入门45
查看>>
RijndaelManaged 加密
查看>>
Android 音量调节
查看>>