一维数组、数组排序、字符数组

//   定义了一个整形数组,数组中有5个元素

//    使用数组元素:数组名[下标],下标从0开始,到元素个数减去1

//    int array[5] = {1 ,3, 6, 5, 4};

//    int i = 3;

//    array[3] = 10;

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

//    //数组三个元素,每个元素都为0

//    int array1[3] = {0};

//    printf("%d\n",array1[1]);

//    //数组有五个元素,下标为0的位置上值为3

//    int array2[5] = {3};

//    printf("%d\n",array2[0]);

//    int array3[5] = {1, 3, 4, 5, 7};

//    //定义数组的时候,[]中能是常量或者是常量表达式,不能是变量

//    printf("%d\n",array3[3]);


//    int array[] = {1 ,3, 6, 5, 4};

//        int i = 3;

//        array[3] = 10;

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

//    printf("%lu",sizeof(i));

    

//    int array[3] = {1, 3, 6, 3};

//    printf("%d\n",array[3]);

    

 

//    int array[] = {1, 1, 1, 3, 4, 6, 5, 3};

//    for (int i = 0; i <8; i++) {

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

//    }

//    printf("\n%lu\n",sizeof(array));

    

//    int array[10]={0};

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

//        array[i] = arc4random() % 51 + 10;

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

//    }

 

//    int a[3] = {1, 2, 8};

//    int b[3] = {0};

//    b = a ;//数组是整体,不能直接参与运算,只能单个元素运算。

    

    

//    int array[20] = {0};

//    int sum = 0;

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

//        array[i] = arc4random() % 41 + 30;

//        sum = sum + array[i];

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

//    }

//    printf("%d",sum);

   

//    int a[10] = {0};

//    int b[10] = {0};

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

//        b[i]=arc4random()%51;

//        a[i] = b[i];

//        printf("%d ",b[i]);

//        

//    }

//    printf("\n");

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

//        printf("%d ",a[i]);

//    }

   

//    int array[10] = {0};

//    int array1[10] = {0};

//    int array2[10] = {0};

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

//        array[i] = arc4random() % 21 + 20;

//        array1[i] = arc4random() % 21 + 20;

//        array2[i] = array1[i] + array[i];

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

//        printf("%d %d %d\n",array[i],array1[i],array2[i]);

//    }

    

//    int n = 0;

//    printf("请输入一个数字:%d",n);

//    scanf("%d",&n);

    

//    int array[10] = {0};

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

//        array[i] = arc4random() % 100;

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

//    }

//    for (int i = 0; i < 9; i++) {

//        for (int j = 0; j < 9 - i; j++) {

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

//                int temp = array[j];

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

//                array[j+1] = temp;

//            }

//        }

//    }

//    printf("\n");

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

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

//    }

    

//    冒泡排序

//    int array[10] = {0};

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

//        array[i] = arc4random() % 101;

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

//    }

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

//        for (int j = 0; j < 9 - i; j++) {

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

//                int temp = array[j];

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

//                array[j + 1] = temp;

//            }

//        }

//    }

//    printf("\n");

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

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

//    }

    

    选择排序

//    

//        int array[10] = {0};

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

//            array[i] = arc4random() % 101;

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

//        }

//    //   外层循环控制趟数

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

//    //   每趟开始,假定最开始的位置上的数为最小值

//            int minIndex = i;

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

//    //   如果当前数,比最小值更小

//            if (array[j] < array[minIndex]) {

//    //   更新最小值的下标

//                minIndex = j;

//            }

//            }

//    //   一趟结束之后,如果最小值的下标和开始的时候,假定的不是同一个数,则交换。

//            if (minIndex != i) {

//                int temp = array[i];

//                array[i] = array[minIndex];

//                array[minIndex] = temp;

//            }

//        

//            printf("\n");

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

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

//            }

//        }

 

//    int array[10] = {0};

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

//        array[i] = arc4random() % 101;

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

//    }

//    for (int i = 0; i < 9; i++) {

//        int min = i;

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

//            if (array[j] < array[min]) {

//                min = j;

//            }

//

//        }

//        if (min != i) {

//            int temp = array[i];

//            array[i] = array[min];

//            array[min] = temp;

//        }

//           }

//    printf("\n");

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

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

//    }

    

    // 字符数组,字符串

    //char str[10] = {'i', 'p', 'h', 'o', 'n', 'e'};

//    char str[10] = "iphone";

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

//        printf("%c ",str[i]);

//    }

    

    //%s的输出原理:从数组的第一个元素开始输出,到\0结束,用于输出字符串,后面直接跟数组名。

//    char str1[] = {'i','p','h','o','n','e','\0'};

//    char str[] = "iphone!";

    str[3] = '\0';

//    printf("%s \n",str);

//    printf("size of str:%lu\n",sizeof(str));

//    for (int i = 0; i < 8; i++) {

//        printf("%c",str1[i]);

//    }


//sizeof 运算符,用来测算数据类型或者变量所占用的空间

// strlen是一个函数,只能用来计算字符串的长度,是不含\0

//    char string[] = "hf\0aj";

//    unsigned long length = strlen(string);

//    printf("%lu",length);

 

//    char str1[20] = "aaaaaaaaaaa";

//    char str1[2] = "aa";

//    char str2[12] = "iphone";

    str2里面的内容拷贝到str1中,拷到\0结束

    把拷入的字符串,内存得足够大,否则很危险

//    strcpy(str1,str2);

//    printf("%c\n",str1[1]);

//    printf("%s\n",str1);

//    unsigned long length = sizeof(str1);

//    unsigned long len = strlen(str1);

//    printf("%lu %lu",length,len);

    

//    char str1[100] = "iphone";

//    char str2[100] =  "Android";

//    strcat(str1, str2);

//    printf("%s\n",str1);

//    printf("%s",str2);

    

//    char str1[100] = "aeeref";

//    char str2[100] =  "ace";

//    int result = strcmp(str1, str2);

//    int len = strlen(str1);

//    printf("%d\n",result);

//    printf("%s",str2);

 

//    char str1[100] = "I love ios,i want a ipone6s,do you know?";

//    int sum = 0;

//    for (int i = 0; i < 35; i++) {

//        while (str1[i] == ' ' )

//        {

//            str1[i] = '\0';

//            sum++;

//        }

//

//    }

//    printf("%d",sum);

//2。将数组a反向输出

//    int a[10] = {0};

//   

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

//        a[i] = arc4random()%101;

//        printf("%d ",a[i]);

//    }

//    printf("\n");

//    for (int i = 9; i >=0; i--) {

//        printf("%d ",a[i]);

//    }

    

    //3 (*)对第一题中的数组进行求和操作,打印计算结果。

    

//    int a[10] = {0};

//    int sum = 0;

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

//        a[i] = arc4random()%101;

//        printf("%d ",a[i]);

//        sum = sum + a[i];

//    }

//    printf("和为:%d",sum);


    

    

//4. (**)计算第一题数组连减,打印计算结果。

//       int array[20] = {};

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

//           array[i] = arc4random()%101;

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

//       }

//       printf("\n");

//       for (int i = 0; i < 19; i++) {

//           array[i] = array[i + 1] - array[i];

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

//       }

//      


//5. (**)随机产生 20 10~50 的正整数存放到数组中,并求数组中的多有 元素最大值、最小值、平均值及各元素之和。

//    int a[20] = {0};

//    int max = 0;

//    int min = 0;

//    float average = 0;

//    float sum = 0;

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

//            a[i] = arc4random()%101;

//            printf("%d ",a[i]);

//           sum = sum + a[i];

//       }

//       average = sum / 20;

//       printf("\n");

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

//    if (a[max] < a[i]) {

//            max = i;

//            }

//            if (a[min] > a[i]) {

//                min = i;

//                  }

//              }

//       printf("最大值为:%d,最小值为:%d,和为:%f,平均值为:%f",a[max],a[min],sum,average);


//  6. 编写一个程序,输入两个包含 5 个元素的数组,先将两个数组升序排序, 后将这两个数组合并成一个升序数组。

//    int a[5] = {0};

//    int b[5] = {0};

//    

//    printf("数组a中的元素为:");

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

//        a[i] = arc4random() % 100;

//        printf("%d ",a[i]);

//    }

//    printf("\n");

//    

//    for (int i = 0; i < 4; i++) {

//        for (int j = 0; j < 4 - i; j++) {

//            if (a[j] >  a[j+1]) {

//                int temp = a[j];

//                a[j] =a[j + 1];

//                a[j + 1] = temp;

//            }

//        }

//    }

//    printf("a中的元素升序排列之后为:");

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

//        printf("%d ",a[i]);

//    }

//    printf("\n");

//    printf("数组b中的元素为:");

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

//        b[i] = arc4random() % 100;

//        printf("%d ",b[i]);

//    }

//        for (int i = 0; i < 4; i++) {

//        for (int j = 0; j < 4 - i; j++) {

//            if (b[j] >  b[j+1]) {

//                int temp = b[j];

//                b[j] =b[j + 1];

//                b[j + 1] = temp;

//            }

//        }

//    }

//    printf("\n");

//    printf("数组b中的元素升序排列之后为:");

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

//        printf("%d ",b[i]);

//    }

//    printf("\n");

//    int c[10] = {0};

//    printf("数组c中的元素为:");

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

//        c[i] =  a[i];

//        printf("%d ",c[i]);

//    }

//    for (int i = 5; i < 10; i++) {

//        c[i] = b[10 - i];

//        printf("%d ",c[i]);

//    }

//    for (int i = 0; i < 9; i++) {

//        for (int j = 0; j < 9 - i; j++) {

//            if (c[j] >  c[j+1]) {

//                int temp = c[j];

//                c[j] =c[j + 1];

//                c[j + 1] = temp;

//            }

//        }

//    }

//    printf("\n");

//    printf("数组c中的元素升序排列之后为:");

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

//        printf("%d ",c[i]);

//    }

       

       

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

//    int a = 0, b = 0, c = 0, d = 0;

//    printf("请输入年月日:");

//    scanf("%d%d%d", &a, &b, &c);

//    if (c > 31 || c < 1){

//        printf("你的输入有误");

//    }else{

//    switch (b) {

//        case 1:

//            d = b;

//            break;

//        case 2:

//            d = b + 31;

//            break;

//        case 3:

//            d = b + 59;

//            break;

//        case 4:

//            d = b + 90;

//            break;

//        case 5:

//            d = b + 120;

//            break;

//        case 6:

//            d = b + 151;

//            break;

//        case 7:

//            d = b + 181;

//            break;

//        case 8:

//            d = b + 212;

//            break;

//        case 9:

//            d = b + 243;

//            break;

//        case 10:

//            d = b + 273;

//            break;

//        case 11:

//            d = b + 304;

//            break;

//        case 12:

//            d = b + 334;

//            break;

//        default:

//            printf("你的输入有误:");

//            break;

//    }if (a % 400 == 0 ||(a % 4 ==0 && a % 100 != 0)) {

//        if (b < 3) {

//            printf("这一天是该年的第%d", d);

//        }else{

//            printf("这一天是该年的第%d", d+1);

//        }

//    }else{

//        printf("这一天是该年的第%d", d);

//    }

//    }

    

//8. (**)编写整型值数组排序程序(冒泡排序、选择排序、快速排序--升序)

//int a[] = {3,-9,32,77,63,-24,14,0,21,45};

//    int a[] = {3,-9,32,77,63,-24,14,0,21,45};

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

//           for (int j = 0; j < 9 - i; j ++) {

//               if (a[j] > a[j+1]) {

//                   int temp = a[j];

//                   a[j] = a[j+1];

//                   a[j + 1] = temp;

//               }

//           }

//       }

//       printf("\n");

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

//           printf("%d ",a[i]);

//       }

       

       

//           int a[] = {3,-9,32,77,63,-24,14,0,21,45};

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

//                  int min = i;

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

//                      if (a[j] < a[min]) {

//                          min = j;

//                      }

//                  }

//                  if (min != i) {

//                      int temp = a[i];

//                    a[i] = a[min];

//                    a[min] = temp;

//                      

//                  }

//

//              }

//              printf("\n");

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

//                  printf("%d ",a[i]);

//              }

       

       

    //快速排序

       

//9(***)找出下列整型数组中最大和最小值及其所在位置 i

//  int a[] = {5,-9,32,77,64,-24,14,0,21,45};

//       int min = 0;int max = 0;

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

//           if (a[max] < a[i]) {

//               max = i;

//           }

//           if (a[min] > a[i]) {

//               min = i;

//           }

//       }

//       printf("最大值下标为:%d,最小值下标为:%d",max,min);


//     10(*) str1, str2, str3 合并到 result 数组中。 char

//result[50] = {0}; 结果:“Lanou 23_class is niu best!”

//       char result[50] = {0};

//       char str1[] = "Lanou ";

//       char str2[] = "23_class ";

//       char str3[] = " is niu best!";

//       result[50] = strcat(strcat(strcat(result, str1),str2),str3);

//       printf("%s",result);

       

   //   11(**)找出下面程序的错误:

//           char string[10], str1[10];

//           int i;

//           for(i = 0; i < 10; i++)

//           {

//               str1[i] = 'a'; }

//           strcpy(string, str1); 

 //string初始化的内存太小,copy的时候需要copy一个/0来结束 当内存为10个字节的时候全被字符占据 copy无法停止 引起系统崩溃

    

//       char string[11]={0};

//       char str1[10];

//       int i;

//       for(i = 0; i < 10; i++)

//       {

//           str1[i] = 'a';

//           printf("%c ",str1[i]);

//       }

//       printf("\n");

//       strcpy(string, str1);

//       for(i = 0; i < 10; i++)

//       {

//           printf("%c ",string[i]);

//       }


       //12(**)下面这个程序执行后会有什么错误或者效果:

//   出现的错误提示为:Comparison of constant 256 with expression of type 'unsigned char' is always true

//       unsigned char str[10], i;

//       for(i = 0; i < 256;i++)

//       {

//           str[i] = i;

//       }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值