实验5

#include <stdio.h> 
#define N 5 
int main()
{
    int a[N] = {1, 9, 2, 0, 7}; 
    int i; 
    int *p; 
    for(i=0; i<N; ++i)
        printf("&a[%d] = %#x, a[%d] = %d\n",i, &a[i], i, a[i]);
    printf("\n"); 
    for(i=0; i<N; ++i) 
        printf("a+%d = %#x, *(a+%d) = %d\n", i, a+i, i, *(a+i));
    printf("\n");
    p = a; 
    for(i=0; i<N; ++i) 
        printf("p+%d = %#x, *(p+%d) = %d\n", i, p+i, i, *(p+i));
    return 0;
}
#include <stdio.h> 
#define N 5 
void output(int x[], int n); 
int main() 
{ 
    int x[N] = {9, 55, 30, 27, 22};
    int i; 
    int t;
    
    printf("original array:\n");
    output(x, N); 
     
    for(i=0; i<N-1; ++i) 
        if(x[i] > x[i+1]) 
        {
            t = x[i]; 
            x[i] = x[i+1]; 
            x[i+1] = t; 
        }
    printf("after swapped:\n"); 
    output(x, N); 
        
    return 0; 
}
void output(int x[], int n) 
{
    int i; 
    for(i=0; i<n; ++i) 
        printf("%d ", x[i]); 
    printf("\n");
}

 

 第一个交换了一次,交换的是数组

第二个交换了三次,交换的是数值

#include <stdio.h> 
#define 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> 
#define N 5  
void selectSort(int a[], int n); 
void input(int a[], int n); 
void output(int a[], int n); 

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

 

#include <stdio.h>
#include<string.h>
#define 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)
{
    int i,j,k,sign;
    char temp[20];
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
        {
            sign=strcmp(str[k],str[j]);
            if(sign>0)
                k=j;
        }
        if(k!=i)
        {
            strcpy(temp,str[i]);
            strcpy(str[i],str[k]);
            strcpy(str[k],temp);
        }
    }
}

 

#include <stdio.h> 
int main() 
{
    int n; 
    int *pn; n = 42; 
    pn = &n; 
    printf("&n = %#x, n = %d\n", &n, n); 
    printf("&pn = %#x, pn = %#x\n", &pn, pn); 
    printf("*pn = %d\n", *pn); 
    return 0;
}

 

#include <stdio.h> 
#define N 5 
int main()
{
    int a[N] = {1, 9, 2, 0, 7}; 
    int i; 
    int *p; 
    for(i=0; i<N; ++i)
        printf("&a[%d] = %#x, a[%d] = %d\n",i, &a[i], i, a[i]);
    printf("\n"); 
    for(i=0; i<N; ++i) 
        printf("a+%d = %#x, *(a+%d) = %d\n", i, a+i, i, *(a+i));
    printf("\n");
    p = a; 
    for(i=0; i<N; ++i) 
        printf("p+%d = %#x, *(p+%d) = %d\n", i, p+i, i, *(p+i));
    return 0;
}

 

 

posted @ 2021-12-13 23:40  一会交作业  阅读(17)  评论(0编辑  收藏  举报