C语言----循环结构2(基础篇六)
好久么有写博客,近期项目基本完成,日常的学习也需要提上日程,尽管未来么有希望,但还是低着脑袋往前走吧.....不啰嗦进入主题。
死循环
※软死机:CPU占用100%,双核占50%,机器明显变慢。出现软死机其实就是死循环。如while(1);就是个死循环语句,请不要用在歪门邪道处。
※硬死机:鼠标、键盘、显示器无响应。
※大部分的死循环是忘记改变循环变量的值造成的。
进化
程序1
使用for语句 将1 到 10 输入到屏幕上。
//for 循环语句,输出在屏幕上 1 - 10 #include <stdio.h> main() { int i; for (i = 1;i<=10;i++) { printf("%d\t",i); } printf("\n"); }
for语句
格式:
for(循环变量赋初值;条件表达式;循环变量增值)
{
若干语句
…
}
for循环执行流程
for(①n=0; ②⑤n<100; ④⑦n++) //循环的运行步骤是按照上流程里面的数字依次进行的
{
③⑥循环体
}
相当于
n=0;
while(n<100)
{
循环体
n++;
}
continue和break语句
continue可结束本次循环,但不跳出循环,break语句可直接跳出本层循环。
程序2
用continue求1到100的偶数之和
// 6_2_用 ccontinue 编写 1 - 100 的偶数之和 #include <stdio.h> main() { int i, n = 0; for(i = 0;i<=100;i++) { if (i%2 != 0) //除不尽2就是奇数 { continue; //直接跳出本次循环,进行下次循环 } else { n = n + i; } } printf("%d", n); printf("\n"); }
break语句
//break 语句 #include <stdio.h> main() { int i; for (i = 1;i <= 10; i++) { printf("%d\n", i); // 1 2 3 4 5 结束 if (i == 5) break; // 如果i = 5, for循环全部结束 } }
简单的标记法程序
//6_2 标记法程序 #include <stdio.h> main() { int n, t; scanf_s("%d", &n); if (n % 2 == 0) { t = 0; } else { t = 1; } if (t = 0) { printf("偶数\n"); } else { printf("奇数\n"); } }
判断一个数是否为素数;
假设这个数是n,要判断n是否素数,必须用n除以2到n-1,有任意一个除断即不是素数,全部除不断就是素数。
2到n-1可以用一个for循环解决,在for循环中如果n除以任意一个数除断,就要立刻跳出循环。
在循环中要使用一个变量作为标志,如果是用break跳出循环的,就将这个标志置0,如果是自然退出循环的,标志就置1。当循环结束后,查看标志为0就输出“不是素数”,为1就输出“是
素数”。
简单的思路:
定义i,n,j三个变量
输入n
j置1(默认是素数)
循环i=2到n-1
如果n÷i可以除断
把标志位j置0
跳出循环
判断j的值
如果是0就输出“不是素数”
如果是1就输出“是素数”。
代码如下:
//6_3_判断一个数是否为素数 #include <stdio.h> main() { int i, n, j = 1; printf("请输入一个数:"); scanf_s("%d", &n); for (i = 2; i < n ; i++) { if(n%i == 0) { j = 0; break; } } if (j == 0)printf("此数不是素数\n"); else printf("此数是素数\n"); }
规律:
一般循环中的break或continue语句都使用if语句判断后执行。
for循环的变化
for语句中两个分号之间可以没有表达式,比如:
for(;i<100;i++){…} 是一种常用写法。
如果写成for(;;); 就成了死循环。
这表示,for循环中的所有表达式,它可以根据实际需要进行增减,有些人就喜欢放在循环体中判断循环条件,再用break来跳出循环。
作业
1、求
代码:
///6_4:求西格马k,k=1到100 加上 西格马k平方,k=1到50 加上 西格马k分之一,k=1到10 #include <stdio.h> main() { float n = 0; //累加的值 int k; //计数器 for (k = 1;k<=100;k++) { n = k + n; } for (k = 1; k <= 50; k++) { n = n + k *k; } for (k = 1; k <= 50; k++) { n = n + 1.0 / k; } printf("%f\n", n); }
五一将至,近期不断的更新自己的博客!若有疑问可在评论区留言。