嵌入式学习第5天!(分支结构和循环结构)-CSDN博客
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;
}
出错处理
跳出循环或者switch结构
循环不再执行,用break
结束本次循环
一次循环中屏蔽某几次循环可以使用continue
结束当前函数
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;
}
1. 数组: 一组类型相同的有限个元素的集合
2. 分类:一维数组、二维数组、多维数组
数组类型 数组名[元素个数]; //int a[5];
注意:元素个数必须为常量或常量表达式,不能是变量或变量表达式
举例:
int n = 5;
int a[n]; //错
int a[n+2]; //错
int a[5]; //对
int a[2+3]; //对
数组名[元素下标];
注意:
1. 元素下标从0开始计数,元素个数从1开始计数。
2. 元素下标:可以用变量、常量或者表达式访问。
3. 不能越界访问
举例
a[n]; //对
a[0]; //对
a[0+1]; //对
a[n+1]; //对
定义数组时对数组元素赋初值
初始化 != 赋值
所有数组元素都可以得到初值
int a[5] = {1, 2, 3, 4, 5};
给定一部分元素的值,没有给定初值的元素,默认初始化为0
int a[5] = {1, 2, 3};
int a[5] = {0};
不给定数组元素个数,通过初值元素个数决定数组元素个数
int a[] = {1, 2, 3, 4, 5};
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
#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;
}
#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
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;
}
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;
}