
笔记里面有一些代码的首字母是大写的,自己写时候要用小写,这是OneNote编写时软件的问题。此笔记仅是我个人学习的笔记,接下来会持续更新,希望对初学者有所帮助,如果发现错误,望在评论区指正。
循环
while循环
while语句和if语句的对比
if语句:
if (表达式)
语句;
while语句:
while (表达式)
语句;(或者是加{}代码块)
执行流程
例子
练习:在屏幕上打印1-10的值
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 0;
while (i < 10)
{
printf("%d\n", i);
i++;
}
return 0;
}
练习
练习:输入一个正的数,逆序打印这个数的每一位
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 0;
int n = 0;
scanf("%d", &i);
while (i)
{
n = i % 10;
printf("%d ", n);
i /= 10;
}
return 0;
}
for循环
形式
for(表达式1,表达式2,表达式3)
语句;(或者是加{}代码块)
表达式1⽤于循环变量的初始化;
表达式2⽤于循环结束条件的判断;
表达式3⽤于循环变量的调整;
for循环的执行过程
(表达式1初始化→表达式2判断→循环语句→表达式3调整)
其实和while循环的差别在于,调整的表达式3放在了for里面
实践
练习:在屏幕上打印1~10的值
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1;i < 10;i++)
printf("%d\n", i);
return 0;
}
while和for的对比区别
while循环代码比较分散
for循环代码比较集中
代码较多时,for维护起来比较方便
练习
计算1~100之间3的倍数的数字之和
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 0;
int sum1 = 0;
for (i = 3; i < 100; i += 3)
sum1 = sum1 + i;
printf("%d\n",sum1);
return 0;
}
##do-while循环
形式
do
语句;
while(表达式);
执行过程
与while类似,不过do-while是先执行一次语句
练习
输入一个整数,判断这个整数有多少位
//方法一
#define _CRT_SECURE_NO_WARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main()
{
int num = 0;
int i = 0;
scanf("%d", &num);
if (num == 0)
printf("1")
else
{
for (i = 0;num / (int)pow(10, i);i++)
;
printf("%d\n", i);
}
return 0;
}
//方法二
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main()
{
int num = 0;
int i = 0;
scanf("%d", &num);
do
{
i++;
num = num / 10;
} while (num)
printf("%d",i);
return 0;
}
这里方法二使用了do-while循环,不是必须使用do-while循环但是因为n存在为0的情况,所以最好i先变为1。
while循环里的break和comtinue语句
break举例
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
break;//当i等于5后,就执⾏break,循环就终⽌了
printf("%d ", i);
i = i+1;
}
return 0;
}
//1 2 3 4
comtinue举例
//把上面代码里的break换为comtinue
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;//continue之后就直接跳过后面代码,去判断循环的地方
//导致i一直为5
printf("%d ", i);
i = i+1;
}
return 0;
}
//1 2 3 4 5 5 5 …….
for循环的break和continue
break举例
#include <stdio.h>
int main()
{
int i = 1;
for(i=1; i<=10; i++)
{
if(i == 5)
break;
printf("%d ", i);
}
return 0;
}
//1 2 3 4
comtinue举例
#include <stdio.h>
int main()
{
int i = 1;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;//这里continue只是跳过后面的打印,然后返回语句3
printf("%d ", i);
}
return 0;
}
//1 2 3 4 6 7 8 9 10
do-while循环中的break和continue
与while中几乎完全一致
循环的嵌套
练习
找出100~200之间的素数,并打印在屏幕上
//方法1
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main(){
int i = 0;
for (i= 100;i <= 200;i += 1) //循环产生100-200的数字
{
int j = 1;
int flag = 1;
for(j = 2;j < i - 1;j++)
{
if (i% j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
printf("%d ", i);
}
return 0;
}
//方法二
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
for (i = 100;i <= 200;i++)
{
int j = 0;
int flag = 1;
for (j = 2; j <= sqrt(i);j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
printf("%d ", i);
}
return 0;
}
goto语句
C语言规定了一种特别的语法,即使用goto和跳转符号可以实现同一个函数设置好的标号处。
例如:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
printf("hello\n");
goto next;
printf("hello\n");
next :
printf("hi\n");
return 0;
}
goto可以减少break的次数
例如当需要跳出多层循环时,goto就显得十分高效
66万+

被折叠的 条评论
为什么被折叠?



