实验五

#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; 
 }

1.是按行存放的2.等价3.等价  
   
#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);
    for(p=a;p<a+N;p++)
       printf("%3d",*p);
       printf("\n");
    p=a;
    for(i=0;i<N;i++)
       scanf("%d",p+i);
    for(i=0;i<N;i++)
       printf("%3d",*(p+i));
     printf("\n");
    
    return 0;
    
}

1.不确定

2.指向数组a的地址,指向数组a元素

3指向数组a+i的地址,指向a+i元素

 
   
#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;
       
}

可以

第一个代表地址,第二个代表元素值

A,B,C,E,G

 
   
#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\n",a[i]);
    printf("输入待查找的数据项:\n");
    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(item<x[mid])
                  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("%3d",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(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("输出初始名单:\n");
    
    for(i=0;i<N;i++)
       printf("%s\n",name[i]);
    selectSort(name,N);
    printf("按字典序输出名单:\n");
     for(i=0;i<N;i++)
       printf("%s\n",name[i]);
       
    return 0;
      
    
}


void selectSort(char str[][20],int n){
    
    char t[20]="";
    int i,j,k;
    for(i=0;i<4;i++){
        k=i;
    for(j=i+1;j<5;j++)
     {
       if(strcmp(str[j],str[k])<0)
      
      k=j;
      }
      
      
      strcpy(t,str[i]);
      strcpy(str[i],str[k]);
      strcpy(str[k],t);
      
    
    
    }
    
          
}

posted @ 2020-12-17 13:41  殷富宇  阅读(69)  评论(0编辑  收藏  举报