C语言 - 训练营:数组

数组训练营

1 - 互换两个数组数据元素

 1     // 两行三列
 2     int array1[2][3] = {{1,2,3},{4,5,6}};
 3     // 三行两列
 4     int array2[][2] = {11,12,13,14,15,16}; 
 5     // 遍历输出
 6     printf("交换前---------\n");
 7     printf("array1\n");
 8     for (int i = 0; i < 2; i++) {
 9         for (int j = 0; j < 3; j++) {
10             printf("%d  ",array1[i][j]);
11         }
12         printf("\n");
13     }
14     printf("\narray2\n");
15     
16     for (int i = 0; i < 3; i++) {
17         for (int j = 0; j < 2; j++) {
18             printf("%d  ",array2[i][j]);
19         }
20         printf("\n");
21     }
22     
23     
24     // 开始交换,搞一个中间变量
25     int arrayTem[3][2] ={0};
26     
27     // 行列互换
28     for (int i = 0; i < 3; i++) {
29         for (int j = 0; j < 2; j++) {
30             // 先把三行两列的数组赋值给中间数组
31             arrayTem[i][j] = array2[i][j];
32             // array1 的元素赋值给 array2
33             array2[i][j] = array1[j][i];
34         }
35     }
36     // 然后把中间变量赋值给 array1
37     for (int i = 0; i < 2; i++) {
38         for (int j = 0; j < 3; j++) {
39             array1[i][j] = arrayTem[j][i];
40         }
41     }
42     
43     printf("\n交换后----------\n");
44     printf("array2\n");
45     for (int i = 0; i < 3; i++) {
46         for (int j = 0; j < 2; j++) {
47             printf("%d  ",array2[i][j]);
48         }
49         printf("\n");
50     }
51     
52     printf("\narray1\n");
53     for (int i = 0; i < 2; i++) {
54         for (int j = 0; j < 3; j++) {
55             printf("%d  ",array1[i][j]);
56         }
57         printf("\n");
58     }

日志信息

2 - 找出数组中的最大值以及下标

 1     int array [3][4]={0};
 2     int max = 0;
 3     for (int i =0; i<3; i++) {
 4         for (int j =0; j<4; j++) {
 5             array [i][j]= rand()%41+10; // 搞一个数组
 6             printf("%d  ",array[i][j]);
 7             if (max < array[i][j]) {
 8                 max = array[i][j];
 9             }
10         }
11         printf("\n");
12     }
13     printf("最大值为 %d,",max);
14     for (int i =0; i<3; i++) {
15         for (int j=0; j<4; j++) {
16             if (max == array[i][j]) {
17                 printf("其下标为 %d,%d\n",i,j);
18             }
19         }
20     }
21      

日志信息

3 - 有两个数组,它们的取值范围均是 20-40。请分别将两数组中相同下标对应的元素相加,然后把结果放到一个新数组中 

1     int a [10]={0};// 数组1
2     int b [10]={0};// 数组2
3     int c [10]={0};// 存放结果的数组
4     for (int i=0;i<10;i++) {
5         a [i]=rand()%21+20;
6         b [i]=rand()%21+20;
7         c[i]=a[i]+b[i];
8         printf("%d+%d=%d\n",a[i],b[i],c[i]);
9     }

4 - 查找字符之间的空格个数

1 int count = 0;
2 char str [50]="I love iOS, I have no iPhone";
3 for (int i =0; i< strlen(str); i++) {
4     if (str[i]==' ') {
5         count ++;
6     }
7 }
8 printf("字符串之间空格的个数为:%d\n",count);

5 - 找出最长名字及其下标

 1 char names [4][21]={"Raphael","Donatello","Leonardo da vinci","Michelangelo"};
 2 unsigned long max = 0;
 3 int index = 0;
 4 for (int i =0; i<4; i++) {
 5     unsigned long strLong = strlen(names[i]);
 6     if (max < strLong) {
 7         max = strLong;
 8         index = i;
 9     }
10 }
11 printf("最大的字符下标为:%d,其长度为:%lu\n ",index,max);

6 - 将数组元素按照首字母升序排列:冒泡排序

 1 char names [4][100]={"Raphael","Donatello","Leonardo da vinci","Michelangelo"};
 2 for (int i =0; i<4-1; i++) {
 3     for (int j=0; j<4-1-i; j++) {
 4         // 两两比较
 5         if (strcmp(names[j], names[j+1])>0) {
 6             char temp [20] ={0};
 7             strcpy(temp , names[j]);
 8             strcpy(names[j], names[j+1]);
 9             strcpy(names[j+1], temp );
10         }
11     }
12 }
13 for (int i=0; i<4; i++) {
14         printf("%s\n",names[i]);
15 }

 

posted on 2017-08-02 11:53  低头捡石頭  阅读(24)  评论(0编辑  收藏  举报

导航