01-C基础第06天(数组)笔记

01 等腰三角星星

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 
 5 int main()
 6 {
 7 
 8     int row;
 9     printf("请输入行数:\n");
10     scanf("%d", &row);
11     for (int i = 1; i <= row; i++)
12     {
13         for (int j = 1; j <= row - i; j++)
14         {
15             printf(" ");
16         }
17         for (int k = 1; k <= i * 2 - 1; k++)
18         {
19             printf("*");
20         }
21         printf("\n");
22 
23     }
24         system("pause");
25     return EXIT_SUCCESS;
26 }

数组:

1、数组的定义和使用

格式:

数据类型 数组名[元素个数]

元素个数,代表该数组有多少个相同数据类型的变量

下标 用来表示数组中的某一个元素 例如int arr[10];arr[1]数组的第二个元素

数组下标是从0开始的 到元素个数-1

数组下标越界:超出了数组元素个数的下标,如果操作越界会出现程序错误(1.乱码;2.报错)

02 数组的定义和使用

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 
 5 int main()
 6 {
 7     //定义数组
 8     int scores[10];
 9     //初始化数组
10     for (int i = 1; i < 10; i++)
11     {
12         scores[i] = 90 + i;
13     }
14     //打印数组
15     for (int i = 1; i < 10; i++)
16     {
17         printf("%d\n", scores[i]);
18     }
19     return 0;
20 }

03学生成绩-1

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 
 5 int main()
 6 {
 7     int scores[10];
 8     for (int i = 0; i < 10; i++)
 9     {
10         //在通过键盘为数组赋值的时候,需要取地址符号【&】
11 
12         scanf("%d", &scores[i]);
13     }
14     for (int i = 0; i < 10; i++)
15     {
16         printf("第%d名学生,成绩:%\n", i + 1, scores[i]);
17     }
18     return 0;
19 }

03学生成绩-2

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 
 5 int main()
 6 {
 7     int scores[10];
 8     int sum = 0;
 9     for (int i = 0; i < 10; i++)
10     {
11         //在通过键盘为数组赋值的时候,需要取地址符号【&】
12 
13         scanf("%d", &scores[i]);
14         sum += scores[i];//sum=sum+scores[i] avg=sum/10
15     }
16     for (int i = 0; i < 10; i++)
17     {
18         printf("第%d名学生,成绩:%d\n", i + 1, scores[i]);
19     }
20     printf("班级的平均成绩:%d\n", sum / 10);
21     return 0;
22 }

求出数组元素个数:

int(size_t)unsigned int 个数 =sizeof(数组名)/sizeof(数组元素|数组数据类型)

求出数组地址:

printf(“%p\n”,数组名)

printf("%p\n",数组元素)

数组元素+1(sizeof(数据类型))

数组名+1(sizeof(数组名))

练习:十只小猪称体重  定义一个数组  存储小猪体重  通过遍历找到最重小猪   找到数组中数据最大值的下标  根据下标打印

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 
 5 int main()
 6 
 7 {
 8     int fits[10];
 9     for (int i = 0; i < 10; i++)
10     {
11         scanf("%d",&fits[i]);
12     }
13     //小猪称体重
14     //int max = 0;
15     //for (int i = 0; i < 10; i++)
16     //{
17     //    if (max < fits[i])
18     //    {
19     //        max = fits[i];
20     //    }
21     //}
22     int max = fits[0];
23     for (int i = 1; i < 10; i++)
24     {
25         if (max < fits[i])
26         {
27             max = fits[i];
28         }
29     }
30     printf("最重的小猪体重为:%d\n", max);
31     return 0;
32 }

练习: 找到小猪中第二重的

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 
 5 int main()
 6 
 7 {
 8     int fits[10] = { 1, 2, 1, 2, 3, 4, 5, 6, 7, 9 };
 9     //小猪称体重
10     //int max = 0;
11     //for (int i = 0; i < 10; i++)
12     //{
13     //    if (max < fits[i])
14     //    {
15     //        max = fits[i];
16     //    }
17     //}
18     int firstmax = 0;
19     int secondmax = 0;
20     int i = 0;
21     for (int i = 1; i < 10; i++)
22     {
23         if (fits[firstmax] < fits[i])
24         {
25             firstmax = i;
26         }
27     }
28     for (int i = 1; i < 10; i++)
29     {
30         if (fits[secondmax] < fits[i] && fits[i]!= fits[firstmax])
31         {
32             secondmax = i;
33         }
34     }
35     printf("小猪中第二重的为:%d\n", fits[secondmax]);
36     return 0;
37 }

练习:冒泡排序

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 
 4 #include<stdlib.h>
 5 
 6 int main08()
 7 
 8 {
 9     int arr[10] = { 8, 7, 10, 6, 2, 3, 5, 4, 1, 9 };
10     int len = sizeof(arr) / sizeof(arr[0]) - 1;
11     //冒泡排序   从小到大
12     //外层循环每次执行都能确定一个最大值
13     for (int i = 0; i <= len; i++)
14     {
15         //内层循环内次执行能确定两个数值中的最大值
16         for (int j = 0; j < len - i; j++)
17         {
18             if (arr[j] > arr[j + 1])
19             {
20                 //两个数据交换位置
21                 int temp = arr[j];
22                 arr[j] = arr[j + 1];
23                 arr[j + 1] = temp;
24             }
25         }    
26     }
27     for (int i = 0; i < 10; i++)
28     {
29         printf("%d\n", arr[i]);
30     }
31     
32     return 0;
33 }

猜你喜欢

转载自www.cnblogs.com/comeonxm/p/10721157.html