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

  • 相关阅读:
    修复UBUNTU的NetworkManager applet不见方法
    在 Windows下用 Visual Studio 编译 OpenSSL
    Linux下Firefox汉化方法
    查看SQL Server数据库表、索引视图等占用的空间大小
    Oracle Instant Client的安装和使用
    angular 单页应用程序实现浏览器后退按钮跳转到前一页面,优化用户体验
    十分钟彻底理解javascript 的 this指向,不懂请砸店
    提高前端生产力的小技巧:谷歌开发人员工具保存修改
    十分钟带你入门bootstrap
    做一个自己的字符图标
  • 原文地址:https://www.cnblogs.com/MetaWang/p/9874321.html
Copyright © 2020-2023  润新知