C语言数组强化训练

1) 一维数组的最值

 1 #include <stdio.h>
 2 
 3  
 4 
 5 int main()
 6 
 7 {
 8 
 9        int a[] = {  1, -2, 3,- 4, 5, -6, 7, -8, -9, 10 };//定义一个数组,同时初始化所有成员变量
10 
11  
12 
13        int i = 0;
14 
15        int max = a[0];
16 
17        for (i = 0; i < sizeof(a) / sizeof(a[0]); i++)
18 
19        {
20 
21               if (a[i] > max)
22 
23               {
24 
25                      max = a[i];
26 
27               }
28 
29        }
30 
31        printf("数组中最大值为:%d\n", max);
32 
33  
34 
35        return 0;
36 
37 }

2) 一维数组的逆置

 1 #include <stdio.h>
 2 
 3  
 4 
 5 int main()
 6 
 7 {
 8 
 9        int a[] = {  1, -2, 3,- 4, 5, -6, 7, -8, -9, 10 };//定义一个数组,同时初始化所有成员变量
10 
11  
12 
13        int i = 0;
14 
15        int j = sizeof(a) / sizeof(a[0]) -1;
16 
17        int tmp;
18 
19  
20 
21        while (i < j)
22 
23        {
24 
25               tmp = a[i];
26 
27               a[i] = a[j];
28 
29               a[j] = tmp;
30 
31               i++;
32 
33               j--;
34 
35        }
36 
37  
38 
39        for (i = 0; i < sizeof(a) / sizeof(a[0]); i++)
40 
41        {
42 
43               printf("%d ", a[i]);
44 
45        }
46 
47        printf("\n");
48 
49  
50 
51        return 0;
52 
53 }

3) 冒泡法排序

 1 #include <stdio.h>
 2 
 3  
 4 
 5 int main()
 6 
 7 {
 8 
 9        int a[] = {  1, -2, 3,- 4, 5, -6, 7, -8, -9, 10 };//定义一个数组,同时初始化所有成员变量
10 
11  
12 
13        int i = 0;
14 
15        int j = 0;
16 
17        int n = sizeof(a) / sizeof(a[0]);
18 
19        int tmp;
20 
21  
22 
23        //1、流程
24 
25        //2、试数
26 
27        for (i = 0; i < n-1; i++)
28 
29        {
30 
31               for (j = 0; j < n - i -1 ; j++)//内循环的目的是比较相邻的元素,把大的放到后面
32 
33               {
34 
35                      if (a[j]  > a[j + 1])
36 
37                      {
38 
39                             tmp = a[j];
40 
41                             a[j] = a[j+1];
42 
43                             a[j+1] = tmp;
44 
45                      }
46 
47               }
48 
49        }
50 
51  
52 
53        for (i = 0; i < n; i++)
54 
55        {
56 
57               printf("%d ", a[i]);
58 
59        }
60 
61        printf("\n");
62 
63  
64 
65        return 0;
66 
67 }

 等腰三角星星

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<string.h>
 4 #include<stdlib.h>
 5 
 6 int main()
 7 {
 8 
 9     int row;
10     printf("请输入行数:\n");
11     scanf("%d", &row);
12     for (int i = 1; i <= row; i++)
13     {
14         for (int j = 1; j <= row - i; j++)
15         {
16             printf(" ");
17         }
18         for (int k = 1; k <= i * 2 - 1; k++)
19         {
20             printf("*");
21         }
22         printf("\n");
23 
24     }
25 
26     system("pause");
27     return EXIT_SUCCESS;
28 }

水仙花

输出0-1000以内的水仙花数

水仙花数算法:一个数=它各位的立方和,例如:153= 1*1*1 + 5*5*5 + 3*3*3

提示:for循环,求余(%)、取整(/)运算符

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<string.h>
 4 #include<stdlib.h>
 5 
 6 int main()
 7 {
 8 
 9     for (int i = 0; i < 1000; i++)
10     {
11         //将一个三位数拆解成个位 十位 百位
12         int a = 0, b = 0, c = 0;
13         //百位
14         a = i / 100;
15         //十位 
16         b = i / 10 % 10;
17         //个位
18         c = i % 10;
19         if (a*a*a + b*b*b + c*c*c == i)
20         {
21             printf("%d是水仙花\n", i);
22         }
23     }
24 
25     system("pause");
26     return EXIT_SUCCESS;
27 }

九九乘法口诀

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<string.h>
 4 #include<stdlib.h>
 5 
 6 int main()
 7 {
 8 
 9     //linux 无法编译程序  -std=c90  c99   gcc -o .exe .c -std=c99
10     int i, j;
11     for (i = 1; i <= 9; i++)
12     {
13         for (j = 1; j <= i; j++)
14         {
15             printf("%d*%d=%d\t", j, i, i*j);
16         }
17         printf("\n");
18     }
19 
20 
21     system("pause");
22     return EXIT_SUCCESS;
23 }

 二维数组

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     //定义了一个二维数组,名字叫a
 6     //二维数组是本质上还是一维数组,此一维数组有3个元素
 7     //每个元素又是一个一维数组int[4]
 8     int a[3][4] = { 1, 2, 3, 4 , 5, 6, 7, 8, 9, 10, 11, 12 };
 9 
10     //数组名为数组首元素地址,二维数组的第0个元素为一维数组
11     //第0个一维数组的数组名为a[0]
12     printf("a = %p\n", a);
13     printf("a[0] = %p\n", a[0]);
14 
15     //测二维数组所占内存空间,有3个一维数组,每个一维数组的空间为4*4
16     //sizeof(a) = 3 * 4 * 4 = 48
17     printf("sizeof(a) = %d\n", sizeof(a));
18 
19     //测第0个元素所占内存空间,a[0]为第0个一维数组int[4]的数组名,4*4=16
20     printf("sizeof(a[0]) = %d\n", sizeof(a[0]));
21 
22     //测第0行0列元素所占内存空间,第0行0列元素为一个int类型,4字节
23     printf("sizeof(a[0][0]) = %d\n", sizeof(a[0][0]));
24 
25     //求二维数组行数
26     printf("i = %d\n", sizeof(a) / sizeof(a[0]));
27 
28     // 求二维数组列数
29     printf("j = %d\n", sizeof(a[0]) / sizeof(a[0][0]));
30 
31     //求二维数组行*列总数
32     printf("n = %d\n", sizeof(a) / sizeof(a[0][0]));
33 
34 
35     system("pause");
36     return 0;
37 }

 1 #include <stdio.h>
 2 
 3 int main1()
 4 {
 5     //定义了一个二维数组,名字叫a
 6     //二维数组是本质上还是一维数组,此一维数组有3个元素
 7     //每个元素又是一个一维数组int[4]
 8     int a[3][4] = { 1, 2, 3, 4 , 5, 6, 7, 8, 9, 10, 11, 12 };
 9 
10     //数组名为数组首元素地址,二维数组的第0个元素为一维数组
11     //第0个一维数组的数组名为a[0]
12     printf("a = %p\n", a);
13     printf("a[0] = %p\n", a[0]);
14 
15     //测二维数组所占内存空间,有3个一维数组,每个一维数组的空间为4*4
16     //sizeof(a) = 3 * 4 * 4 = 48
17     printf("sizeof(a) = %d\n", sizeof(a));
18 
19     //测第0个元素所占内存空间,a[0]为第0个一维数组int[4]的数组名,4*4=16
20     printf("sizeof(a[0]) = %d\n", sizeof(a[0]));
21 
22     //测第0行0列元素所占内存空间,第0行0列元素为一个int类型,4字节
23     printf("sizeof(a[0][0]) = %d\n", sizeof(a[0][0]));
24 
25     //求二维数组行数
26     printf("i = %d\n", sizeof(a) / sizeof(a[0]));
27 
28     // 求二维数组列数
29     printf("j = %d\n", sizeof(a[0]) / sizeof(a[0][0]));
30 
31     //求二维数组行*列总数
32     printf("n = %d\n", sizeof(a) / sizeof(a[0][0]));
33 
34 
35     system("pause");
36     return 0;
37 }
38 int main()
39 {
40     //二维数组:  五行、三列
41     //行代表人:  老大到老五
42     //列代表科目:语、数、外
43     float a[5][3] = { { 80, 75, 56 },{ 59, 65, 71 },{ 59, 63, 70 },{ 85, 45, 90 },{ 76, 77, 45 } };
44 
45     int i, j, person_low[3] = { 0 };
46     float s = 0, lesson_aver[3] = { 0 };
47 
48     for (i = 0; i < 3; i++)
49     {
50         for (j = 0; j < 5; j++)
51         {
52             s = s + a[j][i];
53             if (a[j][i] < 60)
54             {
55                 person_low[i]++;
56             }
57         }
58 
59         lesson_aver[i] = s / 5;
60         s = 0;
61     }
62 
63     printf("各科的平均成绩:\n");
64     for (i = 0; i < 3; i++)
65     {
66         printf("%.2f\n", lesson_aver[i]);
67     }
68 
69     printf("各科不及格的人数:\n");
70     for (i = 0; i < 3; i++)
71     {
72         printf("%d\n", person_low[i]);
73     }
74     system("pause");
75     return 0;
76 }

原文地址:https://www.cnblogs.com/MetaWang/p/9874321.html