一、for循环
一般形式
for(表达式1;表达式2;表达式3)
{
c语句块;
}
表达式1:通常是一个赋值表达式
表达式2:条件或者逻辑表达式
表达式3:能够该改变表达式2结果的语句
1 ----> 2 ----> c ---->3 ---->2
注意:表达式1只会执行一次
int i;
for(i = 0;i < 5;i++)
continue:跳过当次循环,直接执行下一次循环
完全数:如6 = 1 + 2 + 3
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i,j;
int sum =0;
for(i=1;i<=1000;i++)
{
sum = 0;//每次要初始化
for(j=1;j<i;j++) //优化 j<i/2
{
if(i%j==0)
{
sum+=j;
}
}
if(sum == i)//比较要在j判断完成后
{
printf("%d ",i);
}
}
return 0;
}
二、goto构成死循环
#include <stdio.h>
int main(int argc, const char *argv[])
{
loop1://死循环
printf("hello");
goto loop1;
return 0;
}
for(; ;)死循环=while(1)
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
float a1,a2;
int b;
char ch;
scanf("%f%d%c%f",&a1,&b,&ch,&a2);
printf("%c %d %.2f %.2f\n",ch,b,a1,a2);
return 0;
}
键盘输入时要这样:2.12 88c 3.1(即88要与c放在一起)
数组的初始化int a [ ] 是错误的,没有确定元素的个数,空间无法申请;
三、数组
一些数据的组合
1、数组的类型为构造类型
2、通过下标来判断是一维数组还是多维数组
3、数组中元素的类型必须保持一致
4、在内存空间中是连续分布的
【1】一维数组
一般形式
数据类型 数组名[数组内元素个数];
|
数组内存放的数据的数据类型
int a[3];
数组的初始化
int a[3] = {10,20,30};
完全初始化
int a[3] = {10,20,30};
int a[] = {10,20,30};
不完全初始化
int a[3] = {1};
当数组不完全初始化时,未初始化的元素默认为0
不初始化
int a[3];
当数组处于栈区空间时,其内部为随机值
当数组处于全局区时,其默认值为0
如何引用数组内元素
通过 数组名[下标] 来引用数组内元素
注意:下标从0开始
a[0] a[1] a[2]
如果想要打印数组内元素,需要用for循环遍历数组
数组越界
1、往数组后扩展空间,可能是随机值,也可能是其他数据
2、可能会导致段错误
Segmentation fault (core dumped)