码迷,mamicode.com
首页 > 其他好文 > 详细

实验五

时间:2021-06-02 12:07:29      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:nbsp   src   选择   rcp   def   包含   二分   const   bcd   

#include <stdio.h> 
const int N=3; 
int main() 
{ 
int a[N] = {1, 2, 3}; 
int i; 
printf("通过数组名和下标直接访问数组元素:\n"); 
      for(i=0; i<N; i++) 
          printf("%d: %d\n", &a[i], a[i]); 
          printf("通过地址间接访问数组元素:\n"); 
          for(i=0; i<N; i++) 
          printf("%d: %d\n", a+i, *(a+i));
          return 0; 
           }

技术图片

1.数组的内存空间是连续的

2.a+i, a[i]表示数组元素a[i]的地址, *(a+i)和a[i]都表示数组元素a[i]

#include <stdio.h> 
const int LINE = 2; 
const int COL = 3; 
int main() { 
int a[LINE][COL] = {1,2,3,4,5,6}; 
int i,j; 
    printf("通过数组名和下标直接访问数组元素:\n"); 
    for(i=0; i<LINE; i++) for(j=0; j<COL; j++) 
        printf("%d: %d\n", &a[i][j], a[i][j]); 
        printf("通过地址间接访问数组元素:\n"); 
        for(i=0; i<LINE; i++) for(j=0; j<COL; j++) 
        printf("%d: %d\n", a[i]+j, *(a[i]+j)); 
        printf("二维地址中a+i表示的地址:\n");
        for(i=0; i<LINE; i++) printf("a + %d: %d\n", i, a+i); 
        return 0; 
        }

技术图片

1.二维数组按行存放。

2.均等价

// 使用指针变量间接访问一维数组 
#include <stdio.h> 
#include <stdlib.h> 
const int N=3; 
int main() { 
int a[N]; 
int *p,i; // 通过指针变量p,完成数组元素输入 
    for(p=a; p<a+N; p++) 
    scanf("%d", p); // 过指针变量p,完成数组元素输出 
    for(p=a; p<a+N; p++) 
    printf("%d ", *p);
    printf("\n"); p = a; //通过指针变量p,完成数组元素输入 
    for(i=0; i<N; i++) 
    scanf("%d", p+i); // 通过指针变量p,完成数组元素输出 
    for(i=0; i<N; i++) 
    printf("%d ", *(p+i)); 
    printf("\n"); 
    return 0; 
    
    } 

技术图片

1.指针变量p在使用时指向确定的地址

2.指向a[3]后的一个元素

3.指向a[0]

// 使用指针变量间接访问二维数组 
#include <stdio.h> 
int main() { 
int a[2][3] = {1,2,3,4,5,6}; 
int i,j; int *p; // p是指针变量,存放int型数据的地址 
int (*q)[3]; // q是指针变量,存放包含有3个元素的一维数组的地址 // 通过指针变量p间接访问,输出二维数组a的元素值 
for(p=a[0]; 
p<a[0]+6; p++) 
printf("%d ", *p); 
printf("\n"); // 通过行指针变量q间接访问,输出二维数组a的元素值 
for(q=a; q<a+2; q++) 
for(j=0; j<3; j++) 
printf("%d ", *(*q+j)); 
printf("\n"); 
return 0; 
} 

技术图片

1.可以

2.地址、元素

4ABCDEFG

#include <stdio.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);
             index=binarySearch(a, N, key);                  // 补足代码① // ××× 
          if(index>=0) 
             printf("%d在数组中,下标为%d\n", key, index); 
            else
            printf("%d不在数组中\n", key); 
    return 0; 
    }

    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 (x[mid]==item/*补足代码②*/) 
        return mid; 
    else if( x[mid]>item/*补足代码③*/) 
        high = mid - 1; 
    else
        low = mid + 1; 
    }
    return -1; 
    } 

技术图片

// 练习:使用二分查找,在一组有序元素中查找数据项 // 形参是指针变量,实参是数组名 
#include <stdio.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中查找指定数据项key,并返回查找结果给index 
    index=binarySearch(a, N, key);// 补足代码① // ××× 
    if(index>=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 < *(x+mid)) 
                high=mid-1;/*补足代码③*/ 
             else
                low=mid+1;/*补足代码④*/ }
             return -1; 
             } 

技术图片

// 练习:使用选择法对字符串按字典序排序 
#include <stdio.h> 123
const int N = 5; 
void selectSort(char str[][20], int n ); // 函数声明,形参str是二维数组名 
int main() { char name[][20] = {"Bob", "Bill", "Joseph", "Taylor", "George"}; 
int i; 
    printf("输出初始名单:\n"); 
    for(i=0; i<N; i++) 
       printf("%s\n", name[i]); 
    selectSort(name, N); // 调用选择法对name数组中的字符串排序 
       printf("按字典序输出名单:\n"); 
       for(i=0; i<N; i++) 
          printf("%s\n", name[i]); 
          return 0; 
          }
          void selectSort(char str[][20], int n) 
          {
                 int i, j, k;
                 char a[20];
                 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);
                     }
    }

 

实验五

标签:nbsp   src   选择   rcp   def   包含   二分   const   bcd   

原文地址:https://www.cnblogs.com/vanessali/p/14814967.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!