• 12.10号实验


    #include<stdio.h>
    const int N = 3;
    int main(){
        int a[N] = {1, 2, 3};
        int i;
        for(i = 0; i < N; i++) 
        printf("%d: %d
    ", &a[i], a[i]);
        printf("通过地址间接访问数组元素:
    ");
        for(i = 0; i < N; i++)
            printf("%d: %d
    ", a + i, *(a + i));
            return 0;//通过冒号前面打印出的数组的地址,可以看出数组元素在内存中连续存放。
            //2中的两个方法都是等价的。 
        }

    #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("通过数组名及下标直接访问数组元素:
    ");
        for(i = 0; i < LINE; i++)
        for(j = 0; j < COL; j++)
        printf("%d: %d
    ", &a[i][j], a[i][j]);
        printf("通过地址间接访问数组元素:
    "); 
        for( i = 0; i < LINE ; i++)
        for( j = 0; j < COL ; j++)
        printf("%d: %d
    ", a[i]+j, *(a[i]+j));
        printf("二维地址中a+i表示的地址:
    ");
        for(i = 0; i < LINE; i++)
        printf("a + %d: %d
    ", i, a+i);
        return 0;
    } 

    #include<stdio.h>
    #include<stdlib.h>
    const int N = 3;
    int main(){
        int a[N];
        int *p,i;
        for(p = a; p<a+N; p++)
        scanf("%d",p);//p指向数组a最后一位的后一位 
        for(p = a; p<a+N; p++)
        printf("%d ", *p);//数组a最后一位的后一位 
        printf("
    ");
        p = a;
        for(i = 0; i < N; i++)
        scanf("%d", p+i);//数组a的第一位 
        for(i = 0; i < N; i++)
        printf("%d ", *(p+i));//数组a的第一位  
        printf("
    ");
        return 0;
    }

    #include<stdio.h>
    int main(){
        int a[2][3]{1,2,3,4,5,6};
        int i, j;
        int *p;
        int (*q)[3];
    #if(0)
        for(p = a[0]; p < a[0] + 6; p++)//由实践得这两句可以替换 
    #endif
    #if(1)
        for(p = &a[0][0];p < &a[0][0] + 6; p++)//需要运行哪段代码,哪段代码括号中改为1
    #endif
        printf("%d",*p);
        printf("
    ");
        for(q = a; q < a + 2; q++)
        for(j = 0; j < 3; j++)
        printf("%d",*(*q+j));//*q+j是第j行的首地址,*(*q+j)是第j行首个元素 
        printf("
    ");
        return 0;
    } 
    //p为指针,q为数组指针; 
    #if(0)
    都可以表示a[1][2]的地址
    #endif 

    #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中的数据:
    ");
        for(i = 0; i < N; i++)
        printf("%d ", a[i]);
        printf("
    ");
        printf("输入待查找的数据项:");
        scanf("%d",&key);
        index = binarySearch(a, N, key);
        if(index >= 0)
        printf("%d在数组中,下标为%d
    ", key, index);
        else
        printf("%d不在数组中
    ",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中的数据:
    ");
        for(i = 0; i < N; i++)
           printf("%d ", a[i]);
        printf("
    ");
        
        printf("输入待查找的数据: "); 
        scanf("%d", &key);
        
        index = binarySearch(a, N, key);
        
        if(index >= 0)
           printf("%d在数组中,下标为%d", key, index);
        else
           printf("%d不再数组中"); 
           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 ( item == *(x + mid))
               return mid;
               
            else if (item < *(x + mid))
               high = mid - 1;
            
            else
               low = mid - 1; 
        } 
        return -1;
    }

    #include<stdio.h>
    #include<string.h>
    const int N = 5;
    void selectSort(char str[][20], int n);
    int main(){
        char name[][20]={"Bob","Bill","Joseph","Taylor","George"};
        int i ;
        
        printf("输出初始名单:
    ");
        for(i = 0; i < N; i++)
           printf("%s
    ",name[i]);
        
        selectSort(name, N);
        
        printf("按字典序输出名单:
    ");
        for(i = 0; i < N; i++)
           printf("%s
    ",name[i]);
        
        return 0;
    } 
    
    void selectSort(char str[][20], int n){
        int i , j;
        for(i = n - 1; i > 0;i--){
            j = i - 1;
            char max[20];
            strcpy(max,str[i]);
            for(;j >= 0; j--){
                if(strcmp(max, str[j])<0){
                    strcpy(max,str[j]);
                    strcpy(str[j], str[i]);
                    strcpy(str[i], max);
                }
            }
        }
    }

    实验一到四实验总结都在代码中打出,实验五的第一个代码的是数组的方法,第二个为指针的方法。

  • 相关阅读:
    构建自己的C/C++插件开发框架(四)——核心层设计和实现
    构建自己的C/C++插件开发框架(二)——总体功能
    对企业来说,要放在第一位的是什么
    深入理解C++的动态绑定和静态绑定
    构建自己的C/C++插件开发框架(三)——总体结构
    管道和过滤器
    层模式——面向模式的体系结构学习笔记
    使用信元流(TLVStream)规范、简化模块(C/C++)间交互
    推荐博客
    Android 操作系统的内存回收机制
  • 原文地址:https://www.cnblogs.com/2967271912lala/p/14143801.html
Copyright © 2020-2023  润新知