循环结构与数组:
1.do while循环:
1.语法:do{语句}while(表达式);注意(while后面需要有分号)
2,语义:先执行语句,再判断表达式,表达式为真则继续执行语句,直到表达式为假,则跳出do while循环,继续执行后面的语句;
3.do while循环与while循环做对比:
while循环是先判断表达式再执行表达式,而do while循环是先执行语句再判断表达式,所以do while至少会执行一次。
2.for循环:
1.语法:for(表达式1(即初始条件);表达式2(即循环条件);表达式3(即使循环趋于结束的条件)) 无分号
{循环体语句}
语义:先求解表达式1,然后判断表达式2,真则执行循环体语句,然后继续判断循环条件,重复操作,直至表达式为2为假,跳出for 循环;继续执行后面的语句。
for循环的三个表达时都可以省略,但括号里的分号不能省略,对应的循环要素也不能省略。当省略表达式2时,表示循环条件永远为真,进入死循环。
while、do while循环求水仙花数:
#include <stdio.h>
int main()
{
int i,hund,ten,one;
i = 100;
#if 0
while(i <= 999)
{
one = i % 10;
ten = i/10%10;
hund = i/100%10;
if(i== hund*hund*hund + ten*ten*ten + one*one*one)
{
printf("i = %d\n",i);
}
i++;
}
#endif
do
{
one = i % 10;
ten = i/10%10;
hund = i/100%10;
if(i== hund*hund*hund + ten*ten*ten + one*one*one)
{
printf("i = %d\n",i);
}
i++;
}while(i<=999);
return 0;
}
for循环求水仙花数:
#include <stdio.h>
int main()
{
int one,ten,hund;
for(int i = 100;i <= 999;i++)
{
one = i % 10;
ten = i / 10 %10;
hund = i / 100 %10;
if(i == hund*hund*hund + ten*ten*ten + one*one*one)
{
printf("i = %d\n",i);
}
}
return 0;
}
数组:
数组:相同数据类型的集合,每个元素的地址都是连续的,并且下标(索引)是从0开始的,最大下标是数组的大小。
数组的定义:数据类型 数组名【size】={初始值};
普通变量:数据类型 变量名 =初始值;
数组特点:
连续性:数组空间是一片连续的内存空间。
有序性:数组中的元素挨个存放。
单一性:数组中的数据都是同一类型的。
int a[5];
a代表的值为数组所占空间的首地址,a代表整个数组类型(即数组的数据类型为int[]);
0~4是数组下标,表示的是相对于数组名的偏移量;
a[0]表示第一个相对自己的偏移量为0;
a[1]表示第一个相对自己的偏移量为1;
Int a[]={1,2,3,4,5,5,6,77,7} 不指定数组大小的初始化方式;
此时求数组大小:int len = sizeof(age)/sizeof(age[0]);每个元素是int 4byte,有10个元素;
全部初始化:a[5]={1,3,4,5,6};
部分初始化:a[5]={1,3,4};后面系统自动初始化为0;
Int a[5]={,3}; 初始化只能从左到右依次初始化,不能跳过某个元素。
Int a[5]={1,2,3,4,5,6} 数组的最大下标为最大数量减一。