C 语言_数组算法例子

来源:互联网 发布:sql注入的危害 编辑:程序博客网 时间:2024/05/16 17:27

数组


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


数组的定义 : 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