实验五

#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;
} 
#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;
} 
// 使用指针变量间接访问一维数组 
#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;
}  

// 使用指针变量间接访问二维数组 
#include <stdio.h> 

int main() {
    int a[2][3] = {1,2,3,4,5,6};
    int i,j;
    int *p; 
    int (*q)[3]; 
    
   
    for(p=a[0]; p<a[0]+6; p++)
        printf("%d ", *p);
    printf("\n");
    
    
    for(q=a; q<a+2; q++)
        for(j=0; j<3; j++)
            printf("%d ", *(*q+j));
    printf("\n");
    
    return 0;
}  

#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);
    
    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 (item==*(x+mid))
                return mid;
        else if(item<*(x+mid))
                high = mid - 1;
        else
            low = mid + 1;
        }        
    return -1;
        
}

#include  <stdio.h>
const int N=5;
void selectsort(int [], int); 
void input(int [],int);
void output(int [],int);
int main() {
    int a[N];
    
    printf("输入%d个整数\n",N);
    input(a,N);
    
    printf("排序前的数据:\n");
    output(a,N);
    
    selectsort(a,N);
    
    printf("排序后的数据:\n");
    output(a,N);
    
    return 0;
}

void input(int a[], int n) {
    int i;
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
}

void output(int a[],int n){
    int i;
    for(i=0;i<n;i++)
        printf("%d",a[i]);
    printf("\n");
}

void selectsort(int a[],int n){
    int i,j,k,temp;
    
    for(i=0;i<n-1;i++){
        k=i;
        
        for(j=i+1;j<n;j++)
            if(a[j]<a[k])
               k=j;
               
        if(k!=i){
           temp=a[i];
           a[i]=a[k];
           a[k]=temp;
       }
    }
}


 

posted @ 2021-05-27 21:33  袁骕骦  阅读(37)  评论(2)    收藏  举报