- Part 1 ABCDEFG
- Part 2
- // 练习: 使用二分查找, 在一组有序元素中查找数据项
- // 形参是数组, 实参是数组名
- #include <stdio.h>
- #include <stdlib.h>
- const int N=5;
- int binarySearch(int x[], int n, int item); // 函数声明
- int main() {
- int a[N]={2,7,19,45,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
- // 补足代码1
- index=binarySearch(a,N,key);
- if(index>=0)
- printf("%d 在数组中, 下标为 %d\n", key, index);
- else
- printf("%d 不在数组中 \ n", key);
- system("pause");
- 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;
- else
- low = mid + 1;
- }
- return -1;
- }
- /*
- N 个字典序的整数已放在一维数组中, 给定下列程序中, 函数 fun 的功能是:
- 利用折半查找算法查找整数 m 在数组中的位置.
- 若找到, 则返回其下标值; 反之, 则返回 - 1
- */
- #include <stdio.h>
- #include <stdlib.h>
- #define N 10
- int fun(int *a,int m)
- {
- int low = 0, high = N-1, mid;
- /*************ERROR**************/
- while(low <= high)
- {
- mid = (low+high)/2;
- /*************ERROR**************/
- if(m <*(a+mid))
- high = mid-1;
- /*************ERROR**************/
- else if(m> *(a+mid))
- low = mid+1;
- else
- return(mid);
- }
- return(-1);
- }
- int main()
- {
- int i,a[N]={-3,4,7,9,13,24,67,89,100,180},k,m;
- printf("a 数组中的数据如下:\n");
- for(i=0;i<N;i++)
- printf("%d",a[i]);
- printf("\nEnter m: \n");
- scanf("%d",&m);
- /*************ERROR**************/
- k = fun(a,m);
- if (k>=0)
- printf("m=%d,index=%d\n",m,k);
- else
- printf("Not be found!\n");
- system("pause");
- return 0;
- }
- // 练习: 使用选择法对字符串按字典序排序
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- void selectSort(char str[][20], int n ); // 函数声明, 形参 str 是二维数组名
- int main() {
- char name[][20] = {"John", "Alex", "Joseph", "Taylor", "George"};
- 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]);
- system("pause");
- return 0;
- }
- // 函数定义
- // 函数功能描述: 使用选择法对二维数组 str 中的 n 个字符串按字典序排序
- void selectSort(char str[][20], int n) {
- char a[20];
- int i,j,k;
- for(i=0;i<n-1;i++)
- k=i;
- for(j=i+1;j<n;j++)
- if(strcmp(str[j],str[k])<0)
- k=j;
- if(k!=i)
- {
- strcpy(a,str[i]);
- strcpy(str[i],str[k]);
- strcpy(str[k],a);
- }
- }
- /*
- 假定输入的字符串中只包含字母和 * 号.
- 编写函数, 实现:
- 除了字符串前导的 * 号之外, 将串中其他 * 号全部删除.
- 在编写函数时, 不得使用 C 语言提供的字符串函数.
- 例如, 若字符串中的内容为 ****A*BC*DEF*G*******
- 删除后, 字符串中的内容则应当是 ****ABCDEFG
- */
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- void fun(char *a) {
- /*****ERROR********/
- int i=0;
- char *p = a;
- /****ERROR***/
- while(*p && *p == '*') {
- a[i] = *p;
- i++;
- p++;
- }
- while(*p) {
- /******ERROR*******/
- if(*p != '*') {
- a[i] = *p;
- i++;
- }
- p++;
- }
- /******ERROR*******/
- a[i] = '\0';
- }
- int main() {
- char s[81];
- printf("Enter a string :\n");
- gets(s);
- /***ERROR******/
- fun(s);
- printf("The string after deleted:\n");
- puts(s);
- system("pause");
- return 0;
- }
- /*
- 假定输入的字符串中只包含字母和 * 号.
- 编写函数, 实现:
- 除了字符串前导和尾部的 * 号之外, 将串中其他 * 号全部删除.
- 在编写函数时, 不得使用 C 语言提供的字符串函数.
- 例如, 若字符串中的内容为 ****A*BC*DEF*G*******
- 删除后, 字符串中的内容则应当是 ****ABCDEFG******
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- void fun(char *a) {
- /**ERROR******/
- int i=0;
- char *t = a, *f = a;
- char *q = a;
- while(*t)
- t++;
- t--;
- while(*t == '*')
- t--;
- while(*f == '*')
- f++;
- /***ERROR***/
- while (q<f) {
- a[i] = *q;
- q++;
- i++;
- }
- while (q<t) {
- /***ERROR**/
- if(*q != '*') {
- a[i] = *q;
- i++;
- }
- q++;
- }
- while (*q) {
- a[i] = *q;
- i++;
- q++;
- }
- /**ERROR**/
- a[i]='\0';
- }
- int main () {
- char s[81];
- printf("Enter a string:\n");
- gets(s);
- /**ERROR**/
- fun(s);
- printf("The sting after deleted:\n");
- puts(s);
- system("pause");
- return 0;
- }
实验五
来源: http://www.bubuko.com/infodetail-3336879.html