实验四

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #define N 4
 4 int main()
 5 {
 6     int i;
 7     int a[N] = { 1,9,8,4 };
 8     char b[N] = { '1','9','8','4' };
 9     printf("sizeof(int)=%d\n", sizeof(int));
10     printf("sizeof(char)=%d\n", sizeof(char));
11     printf("\n");
12     for (i = 0; i < N; i++)
13     {
14         printf("&a[%d]=%p,a[%d]=%d\n", i, &a[i], i, a[i]);
15     }
16     printf("\n");
17     for (i = 0; i < N; i++)
18     {
19         printf("&b[%d]=%p,b[%d]=%c\n",i, &b[i], i, b[i]);
20     }
21     printf("\n");
22     printf("&a=%p\n", a);
23     printf("&b=%p\n", b);
24         return 0;
25 }

1、int型数组在内存中是按行连续存放的,每个元素占内存单元4个字节;

2、char同理,但每个元素只占1个字节;

3、数组名和他们所存第一个元素地址一样。

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #define N 2
 4 #define M 4
 5 int main()
 6 {
 7     int i,j;
 8     int a[N][M] = { {1,9,8,4}, {2,0,2,2} };
 9     char b[N][M] = {{'1','9','8','4'}, {'2','0','2','2'}};
10     for (i = 0; i < N; i++)
11     {
12         for(j=0;j<M;j++)
13         printf("%p    %d\n",&a[i][j],a[i][j]);
14     }
15     printf("\n");
16     for (i = 0; i < N; i++)
17     {
18         for(j=0;j<M;j++)
19         printf("%p    %c\n", &b[i][j], b[i][j]);
20     }
21     printf("\n");
22     printf("%p\n", a);
23     printf("%p\n", b);
24         return 0;
25 }

结论同上,二维数组仍是连续存放,int占四个字节,char占1个字节。

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #define N 13
 5 int sum(int year, int month, int day);
 6 int main()
 7 {
 8     int day, month, year;
 9     int s=0;
10     while (scanf("%d%d%d", &year, &month, &day) != EOF)
11     {
12         s = sum(year, month, day);
13         printf("%4d-%02d-%02d是这一年的第%d天.\n\n", year, month, day, s);
14     }
15         return 0;
16 }
17 int sum(int year, int month, int day)
18 {
19     int i,s=0;
20     int a[N] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
21     for (i = 1; i < month; i++)
22     {
23         s += a[i];
24     }
25     if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
26         s = s + day + 1;
27     else
28         s = s + day;
29     return s;
30 }

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #define N 5
 5 void input(int a[], int n);
 6 void output(int a[], int n);
 7 double average(int a[], int n);
 8 void bubble_sort(int a[], int n);
 9 int main()
10 {
11     int a[N];
12     double avg;
13     printf("录入%d个分数:\n",N);
14     input(a, N);
15     printf("输出课程分数:\n");
16     output(a, N);
17     printf("\n课程分数处理: 计算均分、排序...\n");
18     avg = average(a, N);
19     bubble_sort(a, N);
20     printf("\n 输出课程均分:%.2lf", avg);
21     printf("\n输出课程分数(高->低):\n");
22     output(a, N);
23     return 0;
24 }
25 void input(int a[], int n)
26 {
27     int i;
28     for (i = 0; i < n; i++)
29         scanf("%d", &a[i]);
30 }
31 void output(int a[], int n)
32 {
33     int i;
34     for (i = 0; i < n; i++)
35     {
36         printf("%d ", a[i]);
37     }
38     printf("\n");
39 }
40 double average(int a[], int n)
41 {
42     double s=0.0;
43     int i;
44     for (i = 0; i < n; i++)
45         s += a[i];
46     s = s / i;
47     return s;
48 }
49 void bubble_sort(int a[], int n)
50 {
51     int i, j,t;
52     for (i = 0; i < n-1; i++)
53     {
54         for (j = 0; j < n - 1 - i; j++)
55         {
56             if (a[j] < a[j + 1])
57             {
58                 t = a[j];
59                 a[j] = a[j + 1];
60                 a[j + 1] = t;
61             }
62         }
63     }
64     output(a, n);
65 }

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #define N 100
 5 void dec2n(int x, int n);
 6 int main()
 7 {
 8     int x;
 9     printf("输入一个十进制整数:");
10     while (scanf("%d", &x) != EOF)
11     {
12         dec2n(x, 2);
13         dec2n(x, 8);
14         dec2n(x, 16);
15         printf("输入一个十进制整数:");
16     }
17     return 0;
18 }
19 void dec2n(int x, int n)
20 {
21     char a[N],i=0,t;
22     char b[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
23     do 
24         {
25             t=x % n;
26             x = x / n;
27             a[i++] = b[t];
28         } while (x != 0);
29 
30     for (i--; i >= 0; i--)
31         {
32             printf("%c", a[i]);
33         }
34         printf("\n");
35     
36 }

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define N 100
void func(int x[][N], int n);
void output(int a[][N], int n);
int main()
{
    int a[N][N];
    int n;
    printf("Enter n: ");
    while (scanf("%d", &n) != EOF)
    {
        printf("\n");
        func(a, n);
        output(a, n);
        printf("\n");
        printf("Enter n: ");
    }
    return 0;
}
void func(int x[][N], int n)
{
    int i, j;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            if (i <= j)
                x[i][j] = i + 1;
            else
                x[i][j] = j + 1;
        }
    }
}
void output(int a[][N], int n)
{
    int i, j;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            printf("%d   ",a[i][j]);
        }
        printf("\n\n");
    }
}

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#define N 80
int main()
{
    char views1[N]= "hey, C, I have not love u yet.";
    char views2[N] = "hey, C, how can I love u?";
    char t[N];
    printf("交换前: \n");
    printf("\n");
    printf("views1: %s\n", views1);
    printf("views2: %s\n", views2);
    strcpy(t, views2);
    strcpy(views2, views1);
    strcpy(views1, t);
    printf("\n");
    printf("交换后: \n");
    printf("views1: %s\n", views1);
    printf("views2: %s\n", views2);
    return 0;
}

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#define N 80
int main()
{
    char views1[2][N] = { "hey, C, I have not love u yet.","hey, C, how can I love u?" };
    char t[N];
    printf("交换前: \n");
    printf("\n");
    printf("views1: %s\n", views1[0]);
    printf("views1: %s\n", views1[1]);
    printf("交换后: \n");
    strcpy(t, views1[1]);
    strcpy(views1[1], views1[0]);
    strcpy(views1[0], t);

    printf("\n");
    printf("views1: %s\n", views1[0]);
    printf("views1: %s\n", views1[1]);
    return 0;
}

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

 

posted @ 2022-11-27 19:36  随风守  阅读(5)  评论(0编辑  收藏  举报