语句:
用分号(;)隔开的就是一条语句
如:
int a = 0;
int b =0;
if语句:
语法结构:
if(表达式)
语句1;
esle
语句2;
如:输出1-100内的所有奇数
#include<stdio.h>
int main()
{
int i = 0;
while(i<100)
{
if(i%2==1)
printf("%d ",i);
i++;
}
return 0;
}
if括号内的内容用于判断;
如果判断条件不止一个,可以使用else if 语句:
如:
include<stdio.h>
int main()
{
int i =0;
scanf("%d\n",&i);
if(i%2==0)
printf("%d是偶数\n",i);
elseif(i%2==1)
printf("%d是奇数\n",i);
else
printf("%d既不是奇数也不是偶数\n",i);
return 0;
}
if和else如果要控制多个语句,则应该用{}
else与离它最近的尚未匹配的if相匹配;
switch语句
语法结构:
switch(整形表达式)
{
语句;
}
switch语句中,常常和case与break一起使用
如:
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
case 7:
printf("星期七");
break;
default:
printf("输入错误");
break;
}
return 0;
}
其中,case为入口,break为出口,如果没有break,从case1入口进入的话,则输出为:
星期一星期二星期三星期四星期五星期六星期七
default为输出错误代码,如果scanf函数中输入day的值为8的时候,则执行结果为:输入错误
case后必须为整形常量(数字)
编程好习惯:在每个switch语句后都放入一个default,甚至可以再放一个break;
循环语句:
三大循环语句:
while
for
do while
while循环:
语法结构:
while(表达式)
{
循环语句;
}
如:用while循环打印1-10
#include<stdio.h>
int main()
{
int i=1;
while(i<=10)
{
printf("%d\n",i);
i++;
}
return 0;
}
while循环中,常常伴有break和continue的使用
break:终止语句,停止break语句后的所有循环
continue:终止本次循环后跳到while语句的开头
如:
#include<stdio.h>
int main()
{
int i=0;
while(i<=10)
{
if(i==5)
break;
printf("%d\n",i);
i++;
}
return 0;
打印结果为:0 1 2 3 4
因为i==5时出现break,则此后的循环不再进行。
又如:
#include<stdio.h>
int main()
{
int i=0;
while(i<=10)
{
if(i==5)
continue;
printf("%d\n",i);
i++;
}
return 0;
}
此代码的输出结果为 0 1 2 3 4
因为此时进入了死循环,
while(i<=10)
{
if(i==5)
continue;
i一直等于5,此循环一直进行
又如:
#include<stdio.h>
int main()
{
int i=0;
while(i<=10)
{
i++;
if(i==5)
continue;
printf("%d\n",i);
}
return 0;
}
此代码的运行结果为 0 1 2 3 4 6 7 8 9 10
当i=5时候,i++的值为6,此时不满足if语句的条件,所以直接跳过if语句,继续执行while语句
while((ch = getchar())!=EOF)
此代码的getchar为读取字符,相当于scanf;而putchar为输出字符,相当于printf;
当一段代码需要输入时,会先储存到输入缓存区,而后等待读取。注意,字符串的结束标识是'\0',这里不做过多解释。
for循环:(while循环的升级版)
语法结构:
for(exp1;exp2;exp3)
循环语句;
需要注意的是,exp1表示初始化,exp2表示判断,exp3表示调整
如计算10的阶乘
#include<stdio.h>
int main()
{
int i=0;
int n=0;
int ret =1;
int sum = 0;
for(n=1;n<=10;n++)
{
ret=1;
for(i=1;i<=n;i++)
{
ret = ret * i;
}
}
printf("%d\n",ret);
return 0;
}
此代码执行结果为3628800,即10的阶乘
break:跳出循环
continue:跳出次次循环后跳到for语句中
continue在while语句和在for语句中的作用大同小异(关键看调整的部分在continue之前还是之后)
注意:不可在for循环体内改变循环变量
如:
int main()
{
int i=0;
for(i=0;i<=10;i++)
if(i=5)
printf("%d",i);
return 0;
}
此代码中的if(i=5)中的=是赋值而不是判断,所以此代码的执行结果为死循环
1、建议for循环彩印前闭后开区间的写法;
2、for循环的初始化,调整,判断都可省略;
3、如果判断部分被省略,则判断条件就是:恒为真
4、因此,不要随便省略!
do.........while()循环:
语法:
do
循环语句;
while(表达式)
break和continue与在while语句中的作用相同
如:
#include<stdio.h>
int main()
{
int i = 0;
do
{
i++;
printf("%d\n",i);
}
while(i<=10);
return 0;
}
注意,此时while需要加分号(;)
当循环中不止一条语句时,需要用{}(所有循环都应如此)
此代码输出结果为:1 2 3 4 5 6 7 8 9 10 11
小练习:
用循环语句查找数组中的元素
#include<stdio.h>
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int i=0;
int k=9;
int sz=(sizeof(arr)/sizeof(arr[1])) ;
for(i=0;i<sz;i++)
{
if(k==arr[i])
{
printf("已找到,下标是%d",i);
break;
}
if(i==sz)
printf("找不到了哦");
}
return 0;
}
其中,int sz=(sizeof(arr)/sizeof(arr[1])) 为判断数组中元素的个数