网站索引量突然下降,合肥好的app开发公司,wordpress 教程 模板,新河网站建设C语言
循环结构
直到型循环的实现
特点#xff1a;先执行#xff0c;后判断#xff0c;不管条件是否满足#xff0c;至少执行一次。典型代表#xff1a;do…while#xff0c;goto#xff08;已淘汰#xff0c;不推荐使用#xff09;
do…while 语法#xff1a; d…C语言
循环结构
直到型循环的实现
特点先执行后判断不管条件是否满足至少执行一次。典型代表do…whilegoto已淘汰不推荐使用
do…while 语法 do
{循环体
}
while(循环条件)说明 ①循环条件的返回值必须是逻辑值0或者非0②{}包起来的内容整体称之为循环体③我们要在循环体中控制循环条件的变化否则会产生死循环。 执行过程 特点先执行后判断不管条件是否满足循环体语句至少执行一次。 案例 需求求1~100以内的偶数和 分析 创建一个变量用来存储sum创建一个循环变量 i 2创建一个do…while循环在循环体中校验偶数 i % 2 0如果满足就实现偶数和计算 sum i计算完之后在循环体的末行对循环条件进行更新i限制循环条件i 100循环结束打印输出 sum 的值 代码 #include stdio.hint main()
{// 创建一个变量用来存储偶数和int sum 0;// 创建一个循环变量int i 2;do{if(i % 2 0){sum i;}i;// 更新循环变量} while(i 100);printf(1~100以内的偶数和是%d\n,sum);return 0;
}goto 语法 goto 标签(label)标签标明目标的代码的位置是一个不加的字符串。 案例 需求求1~100以内的偶数和 代码 #include stdio.hint main()
{// 创建一个变量存放偶数和int sum 0;// 创建一个循环变量int i 2;// 定义一个标签标签名自定义这是一个不带引号的字符串我们一般给需要重复执行的代码添加标签
loop: // 这个标签需要通过goto触发if(i % 2 0){sum i;}i;// 循环条件的校验if (i 100){// 触发循环goto loop;}printf(1~100以内的偶数和是%d\n,sum);return 0;
}注意事项 ①可读性goto语句会破坏代码的结构和可读性使得代码难以理解和维护。因此应尽量避免使用。②替代方案大多数情况下可以使用循环、条件语句、函数等结构来替代goto语句使代码更加清晰和易于管理。③嵌套限制虽然goto语句可以跨函数跳转即跳转到另一个函数中的标签但这种用法是不合法的并且会导致编译错误。 goto语句只能在同一函数内部跳转。④错误处理在某些情况下goto语句可以用于错误处理例如从嵌套的多层循环中跳出。但即使在这种情况下也应谨慎使用并考虑是否有更好的替代方案。 总结 虽然 goto 语句在C语言中是合法的并且有时可能看起来很方便但过度使用或不当使用会导致代码质量下降。因此建议尽量避免使用goto语句而是采用更结构化和可维护的编程方法。
循环的嵌套 3种循环while、do…while、for可以互相嵌套。在前一个循环结构的内容有存在一个完成的循环结构。例如 案例 需求求100~200之间的所有的素数素数又被称为质数 分析 只能被1和自身整除的数叫做素数或质数。做这个题思路要反着来过滤合数剩余的就是素数 代码 #include stdio.hint main()
{// 创建一个变量存放100200之间的自然数int num 100;// 循环变量默认从2开始因为自然数除以1没有意义因为所有自然数都能被1整数我们现在需要校验 2 自身 -1之间int i;// 定义一个标志位用来记录1自身之间能被当前自然数整除的次数用来校验是否位素数int is_flag; // 默认就是素数// 第1层for循环生成100200之间的自然数for(; num 200; num){// 每个自然数在判别之前需要重置标志位is_flag 1;// 第2层循环校验每一个自然数检测其是否是非素数 举例num 4, i 2~3 9// for (i 2; i num / 2; i)// for (i 2; i*1 num; i)for(i 2;i num; i) // 排除1和自身 9, 9 % 20,9 % 30...9%80 20 2 45 10{// 被校验数是否能被校验数整除如果能就是非素数if ( num % i 0){// 如果是和数就跳出is_flag 0;break;// break就是结束循环}}// 根据标志位判断该自然数是否是素数if (is_flag) // 条件判断is_flag 1 缩写 is_flag(推荐)is_flag 0 缩写!is_flag(推荐){printf(%-4d,num);}}printf(\n);return 0;
}循环结构的典型应用场景
求累和举例123...100的和,sum 0求累积举例1*2*3*...*100的积,result 1求均值举例 (123...100)/100的值求极值举例 12,34,56,67中的最大值、最小值元素遍历常用于数组元素的遍历。…
基础算法模型
累和 定义一个变量sum,并赋初值为0 该变量累加每一个数据项i 当访问完每一个数据项此时该变量的取值就是累加和的结果。
累乘 定义一个变量并赋初值为1 用该变量累乘*每一个数据项 当访问完每一个数据项此时该变量的取值就是累乘的结果。
极值多应用于数组 定义一个变量并赋初值为第一个数据项 从第二个数据项开始依次于该变量进行比较如果大于/小于该变量则将当前数据项的数据赋值给该变量。 当访问完每一个数据项此时该变量的取值就是求极值的结果。
break与continue
break 功能 ①用在switch中用来跳出switch的case语句如果case没有break可能会产生case穿透。②用在循环中while、do…while、for提前结束循环也就是跳出整个循环。 说明 ①break不能用于循环语句和switch语句之外的任何其他语句之中。②break只能终止并跳出最近一层的循环结构。 图例 案例 需求四海同学参与运算符考试如果考试及格就跳出循环否则就一直考。 代码 #include stdio.hint main()
{printf(运算符考试\n);// 创建一个变量用来存放小明兄弟的考试成绩int score;do{printf(小明兄弟开始运算符考试...\n);scanf(%d,score);// 考试合格跳出循环if (score 60){// printf(恭喜小明兄弟通过考试\n);break;}else{printf(很遗憾小明兄弟你需要重新考试\n);}} while(1);printf(恭喜小明兄弟通过考试\n);return 0;
}continue 功能continue语句不会结束整个循环而是跳过本次循环尚未执行的语句进入下一次循环。 说明 ①仅用于循环语句中。② 在嵌套循环的情况下continue语句只对包含它的最近一层的循环起作用。 图例 案例 需求求1~100以内的偶数和 代码 #include stdio.h/**
* continue案例求1~100以内的偶数和不使用continue
*/
int continue_test1()
{int sum 0;for(int i 1; i 100; i){// 查找偶数if ( i % 2 0){sum i;}}printf(1~100以内的偶数和是%d\n,sum);
}/**
* continue案例求1~100以内的偶数和使用continue
*/
int continue_test2()
{int sum 0;for(int i 1; i 100; i){// 查找计数if ( i % 2 ! 0){continue;}sum i;}printf(1~100以内的偶数和是%d\n,sum);
}
int main()
{continue_test1();continue_test2();
}