C 语言_数组算法例子

数组


数组是一种构造类型, 相同数据类型组成的新数据类型。 数组的每个成员称为一个数组元素。


数组的定义 : int array[常量表达式] = {值1,值2,值3...}   数组定义的时候 必须使用常量表达式,  后期引用打印的时候可以使用变量。


注意事项:

系统不会检测 数组元素的下标是否越界,编程时,必须保证数组下标不能越界。

数组是一个整体,不能直接拿来运算, 每次只能取用单个元素进行处理,通常用到数组的地方就会用到循环.


例://定义一个具有20个元素的整型数组,每个元素的取值范围是30-70之间,求数组元素的和,最大值,最小值,平均值

   int array[20] = {0};

   int sum = 0;

//    int max = 0;

//    int min = 100;

   int maxIndex = 0, minIndex =0;

   for (int i =0; i < 20; i++) {

        array[i] =arc4random()%(70 -30 + 1) + 30;

       printf("%d ", array[i]);

//        max = max > array[i] ? max : array[i];

//        min = min < array[i] ? min : array[i];

//        

        maxIndex = array[maxIndex] > array[i] ? maxIndex : i;

        minIndex = array[minIndex] < array[i] ? minIndex : i;

        

        sum += array[i];

    }

   printf("\n");

   printf("和 = %d\n", sum);

//    printf("max = %d\n", max);

//    printf("min = %d\n", min);

   printf("平均值 = %f\n", sum /20.0);

   printf("最大值为:array[%d],值为 %d\n", maxIndex, array[maxIndex]);

   printf("最小值为:array[%d],值为 %d\n", minIndex, array[minIndex]);



  // 复制⼀个数组,即两个数组容量⼀样,把其中一个数组中的元素复制到另外⼀个数组中

   int array1[5] = {1, 4,3, 6,2};

   int array2[5] = { };

   for (int i =0; i < 5; i++) {

        array2[i] = array1[i];   //元素挨个复制,不能直接对数组进行操作

       printf("array2[%d] = %d\n", i, array2[i]);

    }




    //冒泡排序

    int array[10] = { };

    printf("排序前的数组:\n");

   for (int i =0; i < 10; i++) {

        array[i] =arc4random() % 100 +1;

       printf("%d ",array[i]);

    }

   printf("\n");

        printf("冒泡之后:\n");

   for (int i =0; i < 10 -1; i++) {

        printf("%d次冒泡过程如下:\n", i);

       for (int j =0; j < 10 - i -1; j++) {

           printf("比较数组中第%d个元素%d%d个元素%d\n", j, array[j], j +1, array[j + 1]);

           //相邻的两个比较,如果顺序错误,则交换元素位置

           if (array[j] > array[j + 1]) {

               printf("顺序错误,交换两个元素\n");

               int temp = array[j];

                array[j] = array[j +1];

                array[j +1] = temp;

            }

        }

    }

    

   for (int i =0; i < 10; i++) {

       printf("%d ", array[i]);

    }

   printf("\n");


//7. (***)给定某年某月某日,输出其为这一年的第几天

    printf("请输入年月日,输入格式为 YYYY-MM-DD:\n");

    int year = 0, month = 0, day = 0;

    int sum = 0;

    scanf("%d-%d-%d", &year, &month, &day);

    int monthArray[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    //判断闰年

    if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {

        monthArray[1] ++;

    }

    //判断日期输入错误

    if (year <= 0 || month <= 0 || day <= 0 || month > 12) {

        printf("别逗,日期哪有负数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值