嵌入式学习第六天!(for循环和一维数组)

续3. 循环结构:

  3. for循环:

      1. 基本形式:

嵌入式学习第5天!(分支结构和循环结构)-CSDN博客

      2. 嵌套形式:
for(A; B; C)
{
    D;
    for(E; F; G)
    {
        H;
    }
}

          分析嵌套结构:1. 先执行A;2. 执行外层循环条件B;3. 执行D外层循环体内部代码;4. 再执行E;5. 执行内层循环条件F; 6. 执行内层循环体内部代码H;7. 每次内层循环体结束后都执行G,直到不满足条件F,结束内层循环;8. 外层内部代码每次循环结束后都执行C,再跳到第2依次循环执行,直到不满足条件B后结束代码。

          总结:外层循环执行一次,里层循环执行一遍。

          练习:

              1. 利用双层for循环实现打印99乘法表。

#include 

int main(void)
{
	for(int i = 1; i < 10; i++)
	{
		for(int j = 1; j <= i; j++)
		{
			printf("%d*%d=%-2d ",j,i, j*i);
		}
		printf("\n");
	}
	return 0;
}

嵌入式学习第六天!(for循环和一维数组)_第1张图片

  4. goto:

      出错处理

4. 辅助控制语句:

  1. break

        跳出循环或者switch结构

        循环不再执行,用break

  2. continue

         结束本次循环

         一次循环中屏蔽某几次循环可以使用continue

  3. return

         结束当前函数

  练习:

         1. 从终端接收若干个成绩,以-1结尾,计算所有输入有效成绩的平均分

#include 

int main(void)
{
	double score = 0;
	double sum = 0;
	double num = 0;

	while(1)
	{
		scanf("%lf",&score);
		if(score == -1) break;
		sum += score;
		num++;
	}

	printf("平均分为: %.2lf\n",sum / num);

    return 0;
}

嵌入式学习第六天!(for循环和一维数组)_第2张图片

1. 数组

         1. 数组: 一组类型相同的有限个元素的集合

         2. 分类:一维数组、二维数组、多维数组

    1. 一维整形数组:

         1. 定义形式:

数组类型 数组名[元素个数];  //int a[5];

             注意:元素个数必须为常量或常量表达式,不能是变量或变量表达式

             举例:

int n = 5;
int a[n];      //错
int a[n+2];    //错
int a[5];      //对
int a[2+3];    //对

         2. 元素访问

数组名[元素下标];

             注意:

                  1. 元素下标从0开始计数,元素个数从1开始计数。

                  2. 元素下标:可以用变量、常量或者表达式访问。

                  3. 不能越界访问

             举例

a[n];        //对
a[0];        //对
a[0+1];      //对
a[n+1];      //对

         3. 数组的初始化:

             定义数组时对数组元素赋初值

             初始化 != 赋值

             1. 全部初始化:

                  所有数组元素都可以得到初值

int a[5] = {1, 2, 3, 4, 5};
             2. 局部初始化:

                  给定一部分元素的值,没有给定初值的元素,默认初始化为0

int a[5] = {1, 2, 3};
int a[5] = {0};
             3. 默认初始化:

                  不给定数组元素个数,通过初值元素个数决定数组元素个数

int a[] = {1, 2, 3, 4, 5};
             4. 内存空间
int a[5];
int len = sizeof(a) / sizeof(a[0]);  //获得数组元素个数

                   数组所占空间大小 = 数据类型所占空间大小 * 元素个数

                   1. 连续性:数组所占空间连续

                   2. 有序性:数组空间存放顺序有序,先存下标为0的元素,再存下标为1的元素,...

                   练习:

                       1. 从终端接收5个数放入数组中,打印出所有数据的平均值

#include 

int main(void)
{
	int a[5] = {0};
	int len = sizeof(a) / sizeof(a[0]);
	int num = 0;
	int sum = 0;

	for(int i=0; i

嵌入式学习第六天!(for循环和一维数组)_第3张图片

             5. 获得数组中最大值或最大值,并获得最大最小值的下标:
#include 

int main(void)
{
	int a[5] = {0};
	int i = 0;
	int len = sizeof(a) / sizeof(a[0]);
	int MaxNum = 0;
	int MinNum = 0;
	int _max = 0;
	int _min = 0;

	for(i=0; i a[i])
		{
			MinNum = a[i];
			_min = i;
		}
	}

	printf("MaxNum = %d, _max = %d\n", MaxNum, _max);
	printf("MinNum = %d, _min = %d\n", MinNum, _min);

	return 0;
}

嵌入式学习第六天!(for循环和一维数组)_第4张图片

             6. 数组中元素实现倒置
#include 

int main(void)
{
	int a[5] = {0};
	int len = sizeof(a) / sizeof(a[0]);
	int i = 0;
	int Tmp = 0;

	for(i = 0; i

嵌入式学习第六天!(for循环和一维数组)_第5张图片

作业:

        1. 从终端接收10个成绩,去掉最高分,去掉最低分,计算选手的最终平均分成绩:

#include 

int main(void)
{
	int sco[10] = {0};
	int len = sizeof(sco) / sizeof(sco[0]);
	int i = 0;
	int sum = 0;
	int num = 0;
	int Max = 0;
	int Min = 0;

	for(i = 0; i sco[i])
		{
			Min = sco[i];
		}
	}
	
	sum = sum - Max - Min;

	printf("平均分为:%.3lf\n",(double)sum / (double)(len-2));

	return 0;
}

嵌入式学习第六天!(for循环和一维数组)_第6张图片

        2. 打印出所有的水仙花数:

                1. 是一个三位数;

                2. 每位数上的立方和值为该数本身;

                例:153 == 1*1*1 + 5*5*5 + 3*3*3

#include 

int main(void)
{
	int i = 0;
	int shi = 0;
	int bai = 0;
	int ge = 0;

	for(i=99; i<1000; i++)
	{
		bai = i / 100;
		shi = i % 100 / 10;
		ge = i % 100 % 10;
 
		if(bai*bai*bai + shi*shi*shi + ge*ge*ge == i)
		{
			printf("%d ",i);
		}
	}

	printf("\n");

	return 0;
}

嵌入式学习第六天!(for循环和一维数组)_第7张图片

你可能感兴趣的:(学习)