c primer plus 10 编程练习

1、

#include <stdio.h>
#define MONTHS 12
#define YEARS 5

int main(void)
{
    const float rain[YEARS][MONTHS] = 
    {
        {4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6},
        {8.5, 8.2, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3},
        {9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4},
        {7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2},
        {7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2}
    };
    int year, month;
    const float (* ptr)[MONTHS];
    ptr = rain;
    
    float subtot, total;
    printf(" YEAR  RAINFALL (inches)\n");
    for(year = 0, total = 0; year < YEARS; year++)
    {
        for(month = 0, subtot = 0; month < MONTHS; month++)
        {
            subtot += *(*(ptr + year) + month);
        }    
        printf("%5d  %15.1f\n", 2010 + year, subtot);
        total += subtot; 
    }
    printf("\nThe yearly average is %.1f inches.\n\n", total / YEARS);
    
    printf("MONTHLY AVERAGE:\n\n");
    printf("  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov Dec\n");

    
    for(month = 0; month < MONTHS; month++)
    {
        for(year = 0, subtot = 0; year < YEARS; year++)
        {
            subtot += *(*(ptr + year) + month);
        }
        printf("%4.1f ", subtot / YEARS);    
    } 
    printf("\n");
    
    return 0;
}

 

2、

#include <stdio.h>

#define SIZE 5

void copy_arr(double son1[], double mother[], int n);
void copy_ptr(double son2[], double mother[], int n);
void copy_ptrs(double son3[], double mother[], double * ptr);

int main(void)
{
    double data[SIZE] = {1.1, 2.2, 3.3, 4.4, 5.5};
    double target1[SIZE];
    double target2[SIZE];
    double target3[SIZE];
    
    double * ptr = data; 
    copy_arr(target1, data, SIZE);
    copy_ptr(target2, data, SIZE);
    copy_ptrs(target3, data, ptr + SIZE);
    
    int i;
    for(i = 0; i < SIZE; i++)
    {
        printf("target1_%d: %.1f\n", i, target1[i]);
        printf("target2_%d: %.1f\n", i, target2[i]);
        printf("target3_%d: %.1f\n", i, target1[i]);
    }
    
    return 0;
}

void copy_arr(double son1[], double mother[], int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        son1[i] = mother[i];
    }
}

void copy_ptr(double son2[], double mother[], int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        *(son2 + i) = *(mother + i);
    }
}

void copy_ptrs(double son3[], double mother[], double * ptr)
{
    double * ptrtem = mother;
    
    while(ptrtem < ptr)
    {
        *son3++ = *ptrtem++;
    }    
}

 

 

#include <stdio.h>

void copy_arr(double t[], double s[], int n);
void copy_ptr(double *t, double *s, int n);
void copy_ptrs(double *t, double *s_first, double *s_last);

int main(void)
{
    double source[5] = {1.1, 2.2, 3.3, 4.4, 5.5};
    double target1[5];
    double target2[5];
    double target3[5];
    
    copy_arr(target1, source, 5);
    copy_ptr(target2, source, 5);
    copy_ptrs(target3, source, source + 5);
    
    int i;
    for(i = 0; i < 5; i++)
    {
        printf("target1: %d : %.1f.\n", i, target1[i]);
        printf("target2: %d : %.1f.\n", i, target2[i]);
        printf("target3: %d : %.1f.\n", i, target3[i]);
    }
    
    return 5;    
} 

void copy_arr(double t[], double s[], int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        t[i] = s[i];
    }
}

void copy_ptr(double *t, double *s, int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        *(t + i) = *(s + i);
    }
}

void copy_ptrs(double *t, double *s_first, double *s_last)
{
    int i;
    for(i = 0; (s_last - s_first) > i; i++)
    {
        *(t + i) = *(s_first + i);
    }
}

 

 

3、

#include <stdio.h>

#define SIZE 6

int get_max(int ar[], int n);

int main(void)
{
    int data[SIZE] = {3, 8, 19, -3, 13, 7};
    
    printf("the max is: %d.\n", get_max(data, SIZE));
    
    return 0;
}

int get_max(int ar[], int n)
{
    int i;

    int max = ar[0];
    
    for(i = 1; i < n; i++)
    {
        if(ar[i] > max)
        {
            max = ar[i];
        }
    }
    return max;
}

 

#include <stdio.h>

#define SIZE 7

int max_get(int * ptr, int n);

int main(void)
{
    int data[SIZE] = {3, 87, 7, 8, 3, 900, 22};
    
    printf("the max is: %d.\n", max_get(data, SIZE));
    
    return 0;
}

int max_get(int * ptr, int n)
{
    int i;
    int max = *ptr;
    
    for(i = 1; i < n; i++)
    {
        if(max < *(ptr + i))
        {
            max = *(ptr + i);
        }
    }
    return max;
}

 

#include <stdio.h>

int get_max(int number[], int n);

int main(void)
{
    int source[100] = {1, 8, 2, 9, 30, 4};
    
    printf("the max: %d.\n", get_max(source, 100));
    
    return 0;
}

int get_max(int number[], int n)
{
    int i;
    int max = number[0];
    
    for(i = 0; i < n; i++)
    {
        if(max < number[i])
        {
            max = number[i];
        }
    }
    return max;
}

 

 

 

4、

#include <stdio.h>

#define SIZE 6

int get_index(double ar[], int n);

int main(void)
{
    double data[SIZE] = {2.8, 1.7, 8.7, 19.1, 9.3, 6.5 };
    
    printf("the index of max element: %d.\n", get_index(data, SIZE));
    
    return 0;
}

int get_index(double ar[], int n)
{
    int i;
    int index;
    
    double max = ar[0];
    
    for(i = 0; i < n; i++)
    {
        if(max <= ar[i])
        {
            max = ar[i];
            index = i;
        }
    }
    
    return index;
}

 

#include <stdio.h>

#define SIZE 6

int max_index(double * ptr, int n);

int main(void)
{
    double data[SIZE] = {3.8, 11.2, 8.2, 2.3, 7.6, 4.5};
        
    printf("the max_index: %d.\n", max_index(data, SIZE));
    
    return 0;
}

int max_index(double * ptr, int n)
{
    int i, index;
    double max = *ptr;
    
    for(i = 0; i < n; i++)
    {
        if(max <= *(ptr + i))
        {
            max = *(ptr + i);
            index = i;    
        }    
    } 
    return index;
}

 

#include <stdio.h>

int get_max_index(double number[], int n);

int main(void)
{
    double source[100] = {2.5, 3.2, 1.2, 31.6, 2.4, 0.0, 7.3};
    printf("the max_index: %d.\n", get_max_index(source, 100));
    
    return 0;
}

int get_max_index(double number[], int n)
{
    double max = number[0];
    int index = 0;
    int i;
    
    for(i = 0; i < n; i++)
    {
        if(max < number[i])
        {
            max = number[i];
            index = i;
        }
    }
    return index;
}

 

5、

#include <stdio.h>

#define SIZE 6

double diff(double arg[], int n);

int main(void)
{
    double data[SIZE] = {2.8, 0.2, 3.2, 1.2, 8.8, 2.2};
    
    printf("diff: %.1f.\n", diff(data, SIZE));
    
    return 0;
}

double diff(double arg[], int n)
{
    int i;
    double min = arg[0];
    double max = arg[0];
    
    for(i = 0; i < n; i++)
    {
        if(min > arg[i])
        {
            min = arg[i];
        }
        if(max < arg[i])
        {
            max = arg[i];
        }
    }
    return max - min;
}

 

#include <stdio.h>

#define SIZE 6

double get_diff(double * ptr, int n);

int main(void)
{
    double data[SIZE] = {2.1, 3.3, 1.0, 7.8, 3.2, 4.4};
    
    printf("the diff: %.1f.\n", get_diff(data, SIZE));
    
    return 0;
}

double get_diff(double * ptr, int n)
{
    int i;
    double min = *ptr;
    double max = *ptr;
    
    for(i = 0; i < n; i++)
    {
        if(min > *(ptr + i))
        {
            min = *(ptr + i);
        }
        
        if(max < *(ptr + i))
        {
            max = *(ptr + i);
        }
    }
    
    return max - min;
}

 

#include <stdio.h>

double get_range(double number[], int n);

int main(void)
{
    double source[6] = {2.5, 0.9, 0.3, 0.9, 1.4, 7.9};
    
    printf("the diff: %.1f.\n", get_range(source, 6));
    
    return 0;
}

double get_range(double number[], int n)
{
    double max = number[0];
    double min = number[0];
    int i;
    
    for(i = 0; i < n; i++)
    {
        if(max < number[i])
        {
            max = number[i];
        }
        if(min > number[i])
        {
            min = number[i];
        }
    }
    return max - min;
}

 

6、

#include <stdio.h>

#define SIZE 5

void reverse(double arg[], int n);

int main(void)
{
    double data[SIZE] = {3.8, 1.8, 8.7, 9.2, 7.7};
    
    reverse(data, SIZE);
    
    return 0;
}

void reverse(double arg[], int n)
{
    int i;
    
    for(i = 0; i < n; i++)
    {
        printf("%.1f ", arg[SIZE - 1 - i]);
    }
    putchar('\n');
}

 

#include <stdio.h>

#define SIZE 5

void invert(double * ptr, int n);

int main(void)
{
    double data[SIZE] = {3.3, 4.4, 7.7, 9.9, 5.5};
    
    invert(data, SIZE);
    
    return 0;    
} 

void invert(double * ptr, int n)
{
    int i;
    
    for(i = 0; i < n; i++)
    {
        printf("%.1f  ", *(ptr + n - 1 - i));
    }
}

 

#include <stdio.h>

#define SIZE 5

void inverse(double arg[], int n);

int main(void)
{
    double data[SIZE] = {88, 77, 33, 99, 44};
    
    inverse(data, SIZE);
    
    return 0;
}

void inverse(double arg[], int n)
{
    int i;
    double temp;
    
    for(i = 0; i < n/2; i++)
    {
        temp = arg[i];
        arg[i] = arg[n - 1 - i];
        arg[n - 1 - i] = temp;
    }
    
    for(i = 0; i < n; i++)
    {
        printf("%.1f  ", arg[i]);
    }
}

 

 

#include <stdio.h>

#define SIZE 6

void reverse(double * ptr, int n);

int main(void)
{
    double data[SIZE] = {22, 11, 77, 44, 88, 99};
    
    reverse(data, SIZE);
    
    return 0;
}

void reverse(double * ptr, int n)
{
    int i;
    double temp;
    
    for(i = 0; i < n/2; i++)
    {
        temp = *(ptr + i);
        *(ptr + i) = *(ptr + n - 1 - i);
        *(ptr + n - 1 - i) = temp;
    }
    
    for(i = 0; i < n; i++)
    {
        printf("%.1f  ", *(ptr + i));
    }
}

 

#include <stdio.h>

void r_sort(double number[], int n);

int main(void)
{
    double source[12] = {2.5, 3.2, 1.2, 1.6, 2.4, 0.1, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3};    
    
    int i;
    for(i = 0; i < 12; i++)
    {
        printf("%g ", source[i]);
    }
    putchar('\n');
    
    r_sort(source, 12);
    for(i = 0; i < 12; i++)
    {
        printf("%g ", source[i]);
    }
    putchar('\n');
    
    return 0;
}

void r_sort(double number[], int n)
{
    int i, j; double temp;
    
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
        {
            if(number[j] < number[j + 1])
            {
                temp = number[j];
                number[j] = number[j + 1];
                number[j + 1] = temp;
            }
        }
    }
}

 

#include <stdio.h>

#define SIZE 6

void sort(double * ptr, int n);

int main(void)
{
    double data[SIZE] = {3, 7, 2, 48, 99, 6};
    int i;
    
    sort(data, SIZE);
    
    for(i = 0; i < SIZE; i++)
    {
        printf("%g ", data[i]);
    }
    
    return 0;
}

void sort(double * ptr, int n)
{
    int i, j;
    double temp;
    
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
        {
            if(*(ptr + j) < *(ptr + j + 1))
            {
                temp = *(ptr + j);
                *(ptr + j)  = *(ptr + j + 1);
                *(ptr + j + 1) = temp;
            }
        }
    }
}

 

#include <stdio.h>

void r_sort(double number[], int n);

int main(void)
{
    double source[12] = {2.5, 3.2, 1.2, 1.6, 2.4, 0.1, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3};
    int i;
    
    for(i = 0; i < 12; i++)
    {
        printf("%g ", source[i]);
    }
    putchar('\n');
    
    r_sort(source, 12);
    for(i = 0; i < 12; i++)
    {
        printf("%g ", source[i]);
    }
    return 0;
}

void r_sort(double number[], int n)
{
    double temp;
    int i, j;
    
    for( i = 0; i < n - 1; i++)
    {
        for(j = 0; j < n - 1 - i; j++)
        {
            if(number[j] < number[j + 1])
            {
                temp = number[j];
                number[j] = number[j + 1];
                number[j + 1] = temp;
            }
        }
    }
}

 

7、

#include <stdio.h>

#define ROWS 4
#define COLS 2

void copy_ptr(double *t, double *s, int n);
void copy_2d_ptr(double (*t)[ROWS], double (*s)[ROWS], int n);

int main(void)
{
    double target[COLS][ROWS];
    double source[COLS][ROWS] = {{4.3, 4.3, 4.3, 3.0},{8.5, 8.2, 1.2, 1.6}};
    copy_2d_ptr(target, source, COLS);
    
    int i, j;
    for( i = 0; i < COLS; i++)
    {
        for(j = 0; j < ROWS; j++)
        {
            printf("%.1f  ", target[i][j]);
        }
        putchar('\n');
    }
    return 0;
}

void copy_ptr(double *t, double *s, int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        *(t + i) = *(s + i);
    }
}

void copy_2d_ptr(double (*t)[ROWS], double (*s)[ROWS], int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        copy_ptr(*(t + i), *(s + i), ROWS);
    }
}

 

 

#include <stdio.h>

#define ROWS 2
#define COLS 4

void copy_array_1d(double s[], double t[], int n);
void copy_array_2d(double s[][COLS], double t[][COLS], int n);

int main(void)
{
    double data[ROWS][COLS] = {{3, 2, 7, 9},{1, 4, 5, 8}};
    double target[ROWS][COLS];
    
    int i;
    copy_array_2d(data, target, ROWS);
    
    printf("show the copy result: \n");
    int j;
    for(i = 0; i < ROWS; i++)
    {
        for(j = 0; j < COLS; j++)
        {
            printf("%.1f  ", target[i][j]);
        }
        putchar('\n');
    }
    
    return 0;
}

void copy_array_1d(double s[], double t[], int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        t[i] = s[i];
    }
}

void copy_array_2d(double s[][COLS], double t[][COLS], int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        copy_array_1d(s[i], t[i], COLS);
    }
}

 

#include <stdio.h>

#define ROWS 2
#define COLS 4

void array1_copy(double * s, double * t, int n);
void array2_copy(double (* s)[COLS], double (* t)[COLS], int n);

int main(void)
{
    double data[ROWS][COLS] = {{2, 3, 7, 6},{1, 5, 4, 9}};
    double target[ROWS][COLS];
    
    array2_copy(data, target, ROWS);
    
    int i, j;
    for(i = 0; i < ROWS; i++)
    {
        for(j = 0; j < COLS; j++)
        {
            printf("%.1f  ", target[i][j]);
        }
        putchar('\n');
    }
    
    return 0;
}

void array1_copy(double * s, double * t, int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        *(t + i) = *(s + i);
    }
}

void array2_copy(double (* s)[COLS], double (* t)[COLS], int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        array1_copy(*(s + i), *(t + i), COLS);
    }
}

 

8、

#include <stdio.h>

#define SIZE 7

void copy_array(double *s, double *t, int n);

int main(void)
{
    double data[SIZE] = {3, 7, 2, 8, 4, 6, 9};
    double target[3];
    
    double * ptr = data + 2;
    copy_array(ptr, target, 3);
    
    int i;
    for(i = 0; i < 3; i++)
    {
        printf("target[%d]: %.1f.\n", i, target[i]);
    }
    
    return 0;
} 

void copy_array(double *s, double *t, int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        *(t + i) = *(s + i);
    }
}

 

#include <stdio.h>
#include <stdlib.h>

void copy_ptr(double *t, double *s, int n);

int main(void)
{
    double src[] = {1, 2, 3, 4, 5, 6, 7};
    double targ[3];
    
    copy_ptr(targ, src + 2, 3);
    
    int i;
    for(i = 0; i < 3; i++)
    {
        printf("targ[%d]: %.1f.\n", i, targ[i]);
    }
    
    return 0;
}

void copy_ptr(double *t, double *s, int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        *(t + i) = *(s + i);
    }
}

 

 

#include <stdio.h>

#define SIZE 7

void array_copy(double *s, double *t, int n);

int main(void)
{
    double data[SIZE] = {1, 2, 3, 4, 5, 6, 7};
    double target[3];
    
    array_copy(data + 2, target, 3);
    
    int i;
    for(i = 0; i < 3; i++)
    {
        printf("%.1f  ", target[i]);
    }
    printf("\n");
    
    return 0;
}

void array_copy(double *s, double *t, int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        *(t + i) = *(s + i);
    }
}

 

 9、

#include <stdio.h>

#define ROWS 2
#define COLS 6

void copy_array(int rows, int cols, double s[rows][cols], double t[rows][cols]);
void show_array(int rows, int cols, double s[rows][cols]);

int main(void)
{
    double source[ROWS][COLS] = {{3, 2, 8, 5, 9, 4},{3, 6, 2, 1, 7, 9}};
    double target[ROWS][COLS];
    show_array(ROWS, COLS, source);
    
    puts("===========================\n");
    copy_array(ROWS, COLS, source, target);
    show_array(ROWS, COLS, target);
    
    return 0;
}

void copy_array(int rows, int cols, double s[rows][cols], double t[rows][cols])
{
    int i, j;
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            t[i][j] = s[i][j];
        }
    }
}

void show_array(int rows, int cols, double s[rows][cols])
{
    int i, j;
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            printf("%5.1f  ", s[i][j]);
        }
        putchar('\n');
    }
}

 

#include <stdio.h>

#define ROWS 3
#define COLS 5

void copy_array(int n, int m, double target[n][m], double source[n][m]);
void show_array(int n, int m, double array[n][m]);

int main(void)
{
    double target[ROWS][COLS];
    double source[ROWS][COLS] = {
    {0.2, 0.4, 2.4, 3.5, 6.6},
    {8.5, 8.2, 1.2, 1600, 2.4},
    {9.1, 8.5, 2.3, 6.1, 8.4}
    };
    
    copy_array(ROWS, COLS, target, source);
    show_array(ROWS, COLS, target);
    
    return 0;
}

void copy_array(int n, int m, double target[n][m], double source[n][m])
{
    int i, j;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < m; j++)
        {
            target[i][j] = source[i][j];
        }
    }
}

void show_array(int n, int m,double array[n][m])
{
    int i, j;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < m; j++)
        {
            printf("%.1f  ", array[i][j]);
        }
        putchar('\n');
    }
}

 

 

 

10、

#include <stdio.h>

#define SIZE 4

void plus(int array1[], int array2[], int array[3], int n);

int main(void)
{
    int data1[SIZE] = {2, 4, 5, 8};
    int data2[SIZE] = {1, 0, 4, 6};
    int data3[SIZE] = {0};
    int i;
    
    plus(data1, data2, data3, SIZE);
    
    for(i = 0; i < SIZE; i++)
    {
        printf("%d  ", data3[i]);
    }
    putchar('\n');
    
    return 0;
}

void plus(int array1[], int array2[], int array3[], int n)
{
    int i;
    
    for(i = 0; i < n; i++)
    {
        array3[i] = array1[i] + array2[i];
    }
}

 

#include <stdio.h>

#define SIZE 4

void add(int * ptr1, int * ptr2, int * ptr3, int n);

int main(void)
{
    int array1[SIZE] = {20, 4, 500, 8};
    int array2[SIZE] = {1, 100, 4, 60};
    int array3[SIZE] = {0};
    
    add(array1, array2, array3, SIZE);
    
    int i;
    for(i = 0; i < SIZE; i++)
    {
        printf("%d  ", array3[i]);
    }
    
    return 0;
}

void add(int *ptr1, int *ptr2, int *ptr3, int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        *(ptr3 + i) = *(ptr1 + i) + *(ptr2 + i);
    }
}

#include <stdio.h>

#define INDEX 4

void add_array(int n, int t[], int s1[], int s2[]);

int main(void)
{
    int sum[INDEX], s1[INDEX] = {2, 4, 5, 8}, s2[INDEX] = {1, 200, 4, 6};
    
    add_array(INDEX, sum, s1, s2);
    
    int i;
    for(i = 0; i < INDEX; i++)
    {
        printf("%d ", sum[i]);
    }
    putchar('\n');
    
    return 0;
}

void add_array(int n, int t[], int s1[], int s2[])
{
    int i;
    for(i = 0; i < n; i++)
    {
        t[i] = s1[i] + s2[i];
    }
}

 

11、

#include <stdio.h>

#define ROWS  2
#define COLS  4

void show(int arg[][COLS], int n);
void dup(int arg[][COLS], int n);

int main(void)
{
    int data[2][4] = {{20, 34, 13, 26},{17, 28, 19, 40}};
    
    show(data, ROWS);
    dup(data, ROWS);
    show(data, ROWS);
    
    return 0;
}

void show(int arg[][COLS], int n)
{
    int r, c;
    for(r = 0; r < n; r++)
    {
        for(c = 0; c < COLS; c++)
        {
            printf("%d  ", arg[r][c]);
        }
    }
    putchar('\n');
}

void dup(int arg[][COLS], int n)
{
    int r, c;
    for(r = 0; r < n; r++)
    {
        for(c = 0; c < COLS; c++)
        {
            arg[r][c] *= 2;
        }
    }
}

 

#include <stdio.h>

#define ROWS 2
#define COLS 4

void exhibit(int (* arg)[4], int n);
void dup2(int (* arg)[4], int n);

int main(void)
{
    int data[ROWS][COLS] = {{22, 34, 23, 11},{30, 13, 43, 26}};
    
    exhibit(data, ROWS);
    dup2(data, ROWS);
    exhibit(data, ROWS);
    
    return 0;
}

void exhibit(int (* arg)[4], int n)
{
    int i, j;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < COLS; j++)
        {
            printf("%d  ", *(*(arg + i) + j));
        }
    }
    putchar('\n');
}

void dup2(int (* arg)[4], int n)
{
    int i, j;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < COLS; j++)
        {
            *(*(arg + i) + j) *= 2;
        }
    }
}

 

#include <stdio.h>

#define COLS 5
#define ROWS 3

void show_element(int rows, int cols, int t[rows][cols]);
void double_element(int rows, int cols, int t[rows][cols]);

int main(void)
{
    int arr[ROWS][COLS] = {{1, 0, 4, 6, 9},{2, 5, 6, 8, 3},{5, 3, 21, 1, 6}};
    show_element(ROWS,COLS, arr);
    double_element(ROWS, COLS, arr);
    printf("\n");
    show_element(ROWS, COLS, arr);
    
    return 0;
}

void show_element(int rows, int cols, int t[rows][cols])
{
    int i, j;
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            printf("%3d ", t[i][j]);    
        }    
    }    
} 

void double_element(int rows, int cols, int t[rows][cols])
{
    int i, j;
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            t[i][j] *= 2;
        }
    }
    
}

 

12、

#include <stdio.h>

#define MONTHS 12
#define YEARS 5

void year(double ar[][MONTHS], int rows, int cols);
void sum(double ar[][MONTHS], int rows, int cols);
void mean_month(double ar[][MONTHS], int rows, int cols);

int main(void)
{
    double rain[YEARS][MONTHS] = 
    {
        {4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6},
        {8.5, 8.2, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3},
        {9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4},
        {7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2},
        {7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2}
    };
    
    year(rain, YEARS, MONTHS);
    sum(rain, YEARS, MONTHS);
    mean_month(rain, YEARS, MONTHS);
    
    return 0;
}

void year(double ar[][MONTHS], int rows, int cols)
{
    int i, j;
    double temp;
    for(i = 0; i < rows; i++)
    {
        for(temp = 0, j = 0; j < cols; j++)
        {
            temp += ar[i][j];
        }
        printf("%.1f.\n", temp);
    }
    putchar('\n');
}

void sum(double ar[][MONTHS], int rows, int cols)
{
    int i, j;
    double sum = 0;
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            sum += ar[i][j];
        }
    }
    printf("AVERAGE_year: %.1f.\n\n", sum/rows);
}

void mean_month(double ar[][MONTHS], int rows, int cols)
{
    int i, j;
    double temp;
    for(i = 0; i < cols; i++)
    {
        for(temp = 0, j = 0; j < rows; j++)
        {
            temp += ar[j][i];
        }
        printf("%.1f  ", temp/rows);
    }
    putchar('\n');
}

 

#include <stdio.h>

#define MONTHS 12
#define YEARS 5
void year_average(int years, int months, float t[years][months]);
void month_average(int years, int months, float t[years][months]);

int main(void)
{
    float rain[YEARS][MONTHS] = 
    {
        {4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6},
        {8.5, 8.2, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3},
        {9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4},
        {7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2},
        {7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2}
    };
    year_average(YEARS, MONTHS, rain);
    month_average(YEARS, MONTHS, rain);
    
    return 0;
}

void year_average(int years, int months, float t[years][months])
{
    int i, j;
    float subtot, total;
    for(i = 0, total = 0; i < years; i++)
    {
        for(j = 0, subtot = 0; j < months; j++)
        {
            subtot += t[i][j];
        }
        printf("%d: %.1f\n", 2010 + i, subtot);
        total += subtot;
    }
    printf("year_average: %.1f.\n", total/years);
}

void month_average(int years, int months, float t[years][months])
{
    int i, j;
    float subtot;
    for(i = 0; i < months; i++)
    {
        for(subtot = 0, j = 0; j < years; j++)
        {
            subtot += t[j][i];
        }
        printf("%.1f  ", subtot/years);
    }
}

 

13、

#include <stdio.h>
#define ROWS 3
#define COLS 5

void get_row_average(double ar[], int n);
double get_all_average(double ar[][COLS], int n);
double get_max(double ar[][COLS], int n);

int main(void)
{
    int i, j;
    double data[ROWS][COLS];
    
    printf("please input 15 double number.\n");
    for(i = 0; i < ROWS; i++)
    {
        for(j = 0; j < COLS; j++)
        {
            printf("data[%d][%d] = ", i, j);
            scanf("%lf", &data[i][j]);    
        }    
    } 
    
    for(i = 0; i < ROWS; i++)
    {
        printf("line %d: ", i + 1);
        get_row_average(data[i], COLS);
    }
    
    printf("all_average: %.1f.\n", get_all_average(data, ROWS));
    
    printf("the max: %.1f.\n", get_max(data, ROWS));
    
    return 0;
}

void get_row_average(double ar[], int n)
{
    int i;
    double temp = 0;
    for(i = 0; i < n; i++)
    {
        temp += ar[i];
    }
    printf("average: %.1f.\n", temp/n);
}

double get_all_average(double ar[][COLS], int n)
{
    int i, j;
    double sum = 0;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < COLS; j++)
        {
            sum += ar[i][j];    
        }    
    }    
    return sum/(n * COLS);
}

double get_max(double ar[][COLS], int n)
{
    int i, j;
    double max = ar[0][0];
    
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < COLS; j++)
        {
            if(max < ar[i][j])
            {
                max = ar[i][j];
            }
        }
    }
    return max;
}

 

#include <stdio.h>

#define ROWS 3
#define COLS 5

void input_array(int rows, double arr[][COLS]);

double col_average(int cols, double arr[]);
double array_average(int rows, double arr[][COLS]);
double array_max_number(int rows, double arr[][COLS]);
void show_result(int rows, double arr[][COLS]);

int main(void)
{
    double array[ROWS][COLS];
    input_array(ROWS, array);
    show_result(ROWS, array);
    printf("\n");
    
    
    
    return 0;
}

void input_array(int rows, double arr[][COLS])
{
    printf("Enter the array number.\n");
    int i, j;
    for(i = 0; i < rows; i++)
    {
        printf("Enter five double number by enter:\n");
        for(j = 0; j < COLS; j++)
        {
            scanf("%lf", &arr[i][j]);
        }
    }
}

double col_average(int cols, double arr[])
{
    double sum = 0;
    int i;
    for(i = 0; i < cols; i++)
    {
        sum += arr[i];
    }
    return sum/cols;
}

double array_average(int rows, double arr[][COLS])
{
    double sum = 0;
    int i;
    for(i = 0; i < rows; i++)
    {
        sum += col_average(COLS, arr[i]);
    }
    return sum/rows;
}

double array_max_number(int rows, double arr[][COLS])
{
    double max = arr[0][0];
    int i, j;
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < COLS; j++)
        {
            if(max < arr[i][j])
            {
                max = arr[i][j];    
            }    
        }    
    } 
    return max;
}

void show_result(int rows, double arr[][COLS])
{
    printf("Now, let's check the array!\n");
    printf("The array you input is:\n");
    int i, j;
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < COLS; j++)
        {
            printf("%5g", arr[i][j]);
        }
    }
    putchar('\n');
    
    printf("The avrage of every colum is. \n");
    
    for(i = 0; i < rows; i++)
    {
        printf("The average is %g.\n", col_average(COLS, arr[i]));
    }
    
    printf("The array's data average is %g\n", array_average(ROWS, arr));
    printf("The max datum in the array is %g\n", array_max_number(ROWS, arr));
}

 

#include <stdio.h>

#define ROWS 3
#define COLS 5

void get_array(int rows, double ar[][COLS]);
double row_mean(int num, double ar[]);
double all_mean(int rows, double ar[][COLS]);
double get_max(int rows, double ar[][COLS]);
void show_outcome(int rows, double ar[][COLS]);

int main(void)
{
    double data[ROWS][COLS];
    get_array(ROWS, data);
    show_outcome(ROWS, data);
    
    return 0;
}

void get_array(int rows, double ar[][COLS])
{
    int i, j;
    for(i = 0; i < rows; i++)
    {
        printf("input five double num(then enter): ");
        for(j = 0; j < COLS; j++)
        {
            scanf("%lf", &ar[i][j]);
        }
    }
}

double row_mean(int num, double ar[])
{
    int i;
    double sum = 0;
    for(i = 0; i < num; i++)
    {
        sum += ar[i];
    }
    return sum/num;
}

double all_mean(int rows, double ar[][COLS])
{
    int i;
    double sum = 0;
    for(i = 0; i < rows; i++)
    {
        sum += row_mean(COLS, ar[i]);
    }
    return sum/rows;
}

double get_max(int rows, double ar[][COLS])
{
    int i, j;
    double max = ar[0][0];
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < COLS; j++)
        {
            if(max < ar[i][j])
            {
                max = ar[i][j];
            }
        }
    }
    return max;
}

void show_outcome(int rows, double ar[][COLS])
{
    printf("Now let us check the result!\n");
    
    int i, j;
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < COLS; j++)
        {
            printf("%.1f  ", ar[i][j]);
        }
    }
    putchar('\n');
    
    for(i = 0; i < rows; i++)
    {
        printf("lines %d average: %.1f.\n", i + 1, row_mean(COLS, ar[i]));
        
    }
    
    printf("all mean: %.1f   \n", all_mean(rows, ar));
    printf("the  max: %.1f   \n", get_max(rows, ar)); 
}

 

 

14、

#include <stdio.h>

#define ROWS 3
#define COLS 5

void get_line_average(int num, double ar[num]);

double get_all_average(int rows, int cols, double ar[rows][cols]);

double get_max(int rows, int cols, double ar[rows][cols]);

int main(void)
{
    double data[ROWS][COLS];
    int i, j;
    
    printf("please input 15 double numbers.\n");
    for(i = 0; i < ROWS; i++)
    {
        for(j = 0; j < COLS; j++)
        {
            printf("data[%d][%d]: ", i, j);
            scanf("%lf", &data[i][j]);
        }
    }
    
    for(i = 0; i < ROWS; i++)
    {
        get_line_average(COLS, data[i]);
    }
    
    printf("all_average: %.1f.\n", get_all_average(ROWS, COLS, data));
    
    printf("the max: %.1f.\n", get_max(ROWS, COLS, data));
    
    return 0;
}

void get_line_average(int num, double ar[num])
{
    int i;
    double temp = 0;
    for(i = 0; i < num; i++)
    {
        temp += ar[i];
    }
    printf("average: %.1f.\n", temp/num);
}

double get_all_average(int rows, int cols, double ar[rows][cols])
{
    int i, j;
    double sum = 0;
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            sum += ar[i][j];
        }
    }
    return sum/(rows * cols);
}

double get_max(int rows, int cols, double ar[rows][cols])
{
    int i, j;
    double max = ar[0][0];
    
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            if(max < ar[i][j])
            {
                max = ar[i][j];
            }
        }
    }
    return max;
}

 

#include <stdio.h>

#define ROWS 3
#define COLS 5

void get_array(int rows, int cols, double ar[rows][cols]);

void get_line_average(int num, double ar[num]);

double get_all_average(int rows, int cols, double ar[rows][cols]);

double get_max(int rows, int cols, double ar[rows][cols]);

int main(void)
{
    double data[ROWS][COLS];
    int i, j;
    
    get_array(ROWS, COLS, data);
    
    for(i = 0; i < ROWS; i++)
    {
        get_line_average(COLS, data[i]);
    }
    
    printf("all_average: %.1f.\n", get_all_average(ROWS, COLS, data));
    
    printf("the max: %.1f.\n", get_max(ROWS, COLS, data));
    
    return 0;
}

void get_array(int rows, int cols, double ar[rows][cols])
{
    int i, j;
    printf("please input 15 double num.\n"); 
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            printf("ar[%d][%d]: ", i, j);
            scanf("%lf", &ar[i][j]);
        }
    }
}


void get_line_average(int num, double ar[num])
{
    int i;
    double temp = 0;
    for(i = 0; i < num; i++)
    {
        temp += ar[i];
    }
    printf("average: %.1f.\n", temp/num);
}

double get_all_average(int rows, int cols, double ar[rows][cols])
{
    int i, j;
    double sum = 0;
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            sum += ar[i][j];
        }
    }
    return sum/(rows * cols);
}

double get_max(int rows, int cols, double ar[rows][cols])
{
    int i, j;
    double max = ar[0][0];
    
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            if(max < ar[i][j])
            {
                max = ar[i][j];
            }
        }
    }
    return max;
}

 

#include <stdio.h>

#define ROWS 3
#define COLS 5

void get_array(int rows, int cols, double ar[rows][cols]);

double get_line_mean(int num, double ar[num]);

double get_all_mean(int rows, int cols, double ar[rows][cols]);

double get_all_max(int rows, int cols, double ar[rows][cols]);

void show_result(int rows, int cols, double ar[rows][cols]);

int main(void)
{
    double data[ROWS][COLS];
    
    get_array(ROWS, COLS, data);
    
    show_result(ROWS, COLS, data);
    
    return 0;
}

void get_array(int rows, int cols, double ar[rows][cols])
{
    int i, j;
    printf("please input 15 double number.\n");
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            printf("data[%d][%d]: ", i, j);
            scanf("%lf", &ar[i][j]);
        }
    }
}

double get_line_mean(int num, double ar[num])
{
    int i;
    double temp = 0;
    for(i = 0; i < num; i++)
    {
        temp += ar[i];
    }
    return temp/num;
}

double get_all_mean(int rows, int cols, double ar[rows][cols])
{
    int i, j;
    double sum;
    for(i = 0; i < rows; i++)
    {
        sum += get_line_mean(cols, ar[i]);
    }
    return sum/rows;
}

double get_all_max(int rows, int cols, double ar[rows][cols])
{
    int i, j;
    double max = ar[0][0];
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            if(max < ar[i][j])
            {
                max = ar[i][j];
            }
        }
    }
    return max;
}

void show_result(int rows, int cols, double ar[rows][cols])
{
    int i, j;
    printf("Let us check the result!\n");
    
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            printf("%.1f  ", ar[i][j]);
        }
        putchar('\n');
    }
    putchar('\n');
    
    printf("Show the lien mean!\n");
    
    for(i = 0; i < rows; i++)
    {
        printf("lines %d mean: %.1f\n", i + 1, get_line_mean(cols, ar[i]));
    }
    
    printf("all mean: %.1f.\n", get_all_mean(rows, cols, ar));
    
    printf("all max:  %.1f.\n", get_all_max(rows, cols, ar));
}

 

#include <stdio.h>

void input_array(int rows, int cols, double arr[rows][cols]);
double col_average(int cols, double arr[cols]);
double array_average(int rows, int cols, double arr[rows][cols]);
double array_max_number(int rows, int cols, double arr[rows][cols]);
void show_result(int rows, int cols, double arr[rows][cols]);

int main(void)
{
    int rows = 3;
    int cols = 5;
    double array[rows][cols];
    input_array(rows, cols, array);
    show_result(rows, cols, array);
    return 0;    
} 

void input_array(int rows, int cols, double arr[rows][cols])
{
    int i, j;
    printf("Enter the array number.\n");
    for(i = 0; i < rows; i++)
    {
        printf("Enter five double number seperate by enter:\n");
        for(j = 0; j < cols; j++)
        {
            scanf("%lf", &arr[i][j]);
        }
    }
}

double col_average(int cols, double arr[cols])
{
    double sum = 0;
    int i;
    for(i = 0; i < cols; i++)
    {
        sum += arr[i];
    }
    return sum/cols;
}

double array_average(int rows, int cols, double arr[rows][cols])
{
    double sum = 0;
    int i;
    for(i = 0; i < rows; i++)
    {
        sum += col_average(cols, arr[i]);
    }
    return sum/rows;
}

double array_max_number(int rows, int cols, double arr[rows][cols])
{
    double max = arr[0][0];
    int i, j;
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            if(max < arr[i][j])
            {
                max = arr[i][j];
            }
        }
    }
    return max;
}

void show_result(int rows, int cols, double arr[rows][cols])
{
    printf("Now, let us check the result!\n");
    printf("The array you input is!\n ");
    int i, j;
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            printf("%5g", arr[i][j]);
        }
    }
    putchar('\n');
    
    printf("The average of every line is!\n");
    for(i = 0; i < rows; i++)
    {
        printf("the %d line's average is %g .\n", i + 1, col_average(cols, arr[i]));
    }
    
    printf("The array data average is  %g  \n", array_average(rows, cols, arr));
    printf("The max datum in the array is %g \n", array_max_number(rows, cols, arr));
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


一.C语言中的static关键字 在C语言中,static可以用来修饰局部变量,全局变量以及函数。在不同的情况下static的作用不尽相同。 (1)修饰局部变量 一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存
浅谈C/C++中的指针和数组(二) 前面已经讨论了指针和数组的一些区别,然而在某些情况下,指针和数组是等同的,下面讨论一下什么时候指针和数组是相同的。C语言标准对此作了说明:规则1:表达式中的数组名被编译器当做一个指向该数组第一个元素的指针; 注:下面几种情况例外 1)数组名作为sizeof的操作数
浅谈C/C++中的指针和数组(一)指针是C/C++的精华,而指针和数组又是一对欢喜冤家,很多时候我们并不能很好的区分指针和数组,对于刚毕业的计算机系的本科生很少有人能够熟练掌握指针以及数组的用法和区别。造成这种原因可能跟现在大学教学以及现在市面上流行的很多C或者C++教程有关,这些教程虽然通俗易懂,
从两个例子分析C语言的声明 在读《C专家编程》一书的第三章时,书中谈到C语言的声明问题,《C专家编程》这本书只有两百多页,却花了一章的内容去阐述这个问题,足以看出这个问题的重要性,要想透彻理解C语言的声明问题仅仅看书是远远不够的,需要平时多实践并大量阅读别人写的代码。下面借鉴《C专家编程》书中的两个
C语言文件操作解析(一)在讨论C语言文件操作之前,先了解一下与文件相关的东西。一.文本文件和二进制文件 文本文件的定义:由若干行字符构成的计算机文件,存在于计算机系统中。文本文件只能存储文件中的有效字符信息,不能存储图像、声音等信息。狭义上的二进制文件则指除开文本文件之外的文件,如图片、DOC文档。
C语言文件操作解析(三) 在前面已经讨论了文件打开操作,下面说一下文件的读写操作。文件的读写操作主要有4种,字符读写、字符串读写、块读写以及格式化读写。一.字符读写 字符读写主要使用两个函数fputc和fgetc,两个函数的原型是: int fputc(int ch,FILE *fp);若写入成功则
浅谈C语言中的位段 位段(bit-field)是以位为单位来定义结构体(或联合体)中的成员变量所占的空间。含有位段的结构体(联合体)称为位段结构。采用位段结构既能够节省空间,又方便于操作。 位段的定义格式为: type [var]:digits 其中type只能为int,unsigned int,s
C语言文件操作解析(五)之EOF解析 在C语言中,有个符号大家都应该很熟悉,那就是EOF(End of File),即文件结束符。但是很多时候对这个理解并不是很清楚,导致在写代码的时候经常出错,特别是在判断文件是否到达文件末尾时,常常出错。1.EOF是什么? 在VC中查看EOF的定义可知: #def
关于VC+ʶ.0中getline函数的一个bug 最近在调试程序时,发现getline函数在VC+ʶ.0和其他编译器上运行结果不一样,比如有如下这段程序:#include &lt;iostream&gt;#include &lt;string&gt;using namespace std;int
C/C++浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为 10000100(低地址单元) 00000100(高地址单元),因为Intel CPU
浅析C/C++中的switch/case陷阱 先看下面一段代码: 文件main.cpp#includeusing namespace std;int main(int argc, char *argv[]){ int a =0; switch(a) { case ...
浅谈C/C++中的typedef和#define 在C/C++中,我们平时写程序可能经常会用到typedef关键字和#define宏定义命令,在某些情况下使用它们会达到相同的效果,但是它们是有实质性的区别,一个是C/C++的关键字,一个是C/C++的宏定义命令,typedef用来为一个已有的数据类型
看下面一道面试题:#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;int main(void) { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&amp;aʱ); printf(&quot;%d,%d&quot;,*(
联合体union 当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构; 2)它的所有成员相对于基地址的偏移量都为0; 3)此结构空间要大到足够容纳最&quot;宽&quo
从一个程序的Bug解析C语言的类型转换 先看下面一段程序,这段程序摘自《C 专家编程》:#include&lt;stdio.h&gt;int array[]={23,34,12,17,204,99,16};#define TOTAL_ELEMENTS (sizeof(array)/sizeof(ar
大端和小端 嵌入式开发者应该对大端和小端很熟悉。在内存单元中数据是以字节为存储单位的,对于多字节数据,在小端模式中,低字节数据存放在低地址单元,而在大端模式中,低字节数据存放在高地址单元。比如一个定义一个short型的变量a,赋值为1,由于short型数据占2字节。在小端模式中,其存放方式为0X40
位运算和sizeof运算符 C语言中提供了一些运算符可以直接操作整数的位,称为位运算,因此位运算中的操作数都必须是整型的。位运算的效率是比较高的,而且位运算运用好的话会达到意想不到的效果。位运算主要有6种:与(&amp;),或(|),取反(~),异或(^),左移(&gt;)。1.位运算中的类型转换位
C语言文件操作解析(四)在文件操作中除了打开操作以及读写操作,还有几种比较常见的操作。下面介绍一下这些操作中涉及到的函数。一.移动位置指针的函数 rewind函数和fseek函数,这两个函数的原型是:void rewind(FILE *fp); 将位置指针移动到文件首 int fseek(FILE
结构体字节对齐 在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排
C语言文件操作解析(二)C语言中对文件进行操作必须首先打开文件,打开文件主要涉及到fopen函数。fopen函数的原型为 FILE* fopen(const char *path,const char *mode) 其中path为文件路径,mode为打开方式 1)对于文件路径,只需注意若未明确给出绝