C语言基础3“选择结构+循环结构”
选择结构+循环结构
Merry Christmas
#include<stdio.h>
int main()
{
一 :if语句
if(如果)语句,用来判断表达式的值。 条件判断语句
printf("");
else(否则)
条件成立
做这件事
条件不成立
干另外一件事
表达式返回真或假, 0:假; 非0:表示真
if (表达式)
if、else、else if 后面作用只管一条语句,除非后面是一个语句块,才能同时打印两个语句. 如果不加语句块,不管成不成立都会打印第二个语句
/*
表达方式:
(1)、if(表达式)
一条语句
例:
int a = 10, b = 20;
int c = a < b;//c=1 因为a<b成立,为真,输出为一,所以c=1
int c = a > b;//因为a>b不成立,为假,所以c=0
if、else、else if 后面作用只管一条语句,除非后面是一个语句块,才能同时打印两个语句. 如果不加语句块,不管成不成立都会打印第二个语句
if (0)//if(1) 条件永远成立; if(0) 条件永远不会成立
{
printf("今天下雨\n");
printf("而且温度还很低\n");
}
(2)、if(表达式)
一条语句
else
一条语句
例:
int a = 10, b = 20;
int c = a < b;//c=1 因为a<b成立,为真,输出为一,所以c=1
int c = a > b;//因为a>b不成立,为假,所以c=0
if后面作用只管一条语句,除非后面是一个语句块
if (a>b)//if(1) 条件永远成立; if(0) 条件永远不会成立
printf("今天下雨\n");
else //后面也只能跟一条语句,除非加语句块,才能打印出两条或多条语句
{
printf("今天出太阳\n");
printf("并且今天天气很热\n");
}
(3)、if(表达式) 例:如果今天下雨
一条语句 我就去图书馆
else if 否则如果 //另外一种条件 如果今天阴天
一条语句 我就去打篮球
else if 、、、
一条语句
、、、
else 如果下冰雹
一条语句 我就、、、
例:
int a = 70, b = 20;
int c = a > b;//因为a>b不成立,为假,所以c=0
if后面作用只管一条语句,除非后面是一个语句块
if (a<b)//if(1) 条件永远成立; if(0) 条件永远不会成立
printf("今天下雨\n");
else if (a == b)
{
printf("今天下雨并且出太阳\n");
}
else if (a>=50)
{
printf("今天天气特别热,50度\n"); //如果两个条件都满足,他只会打印一个,即第一个,因为else if只执行一条语句,即只执行一种情况,不会执行多种情况。上面的情况满足了,下面就不会执行了
}
else if (a >= 40)
{
printf("今天天气特别热,40度\n");
}
else //后面也只能跟一条语句,除非加语句块,才能打印出两条或多条语句
{
printf("今天出太阳\n");
printf("并且今天天气很热\n");
}
*/
/*
int c = a > b;//因为a>b不成立,为假,所以c=0
if后面作用只管一条语句,除非后面是一个语句块
if (a<b)//if(1) 条件永远成立; if(0) 条件永远不会成立
printf("今天下雨\n");
else if (a == b)
{
printf("今天下雨并且出太阳\n");
}
else if (a>=50)
{
printf("今天天气特别热,50度\n"); //如果两个条件都满足,他只会打印一个,即第一个,因为else if只执行一条语句,即只执行一种情况,不会执行多种情况。上面的情况满足了,下面就不会执行了
}
else if (a >= 40)
{
printf("今天天气特别热,40度\n");
}
else //后面也只能跟一条语句,除非加语句块,才能打印出两条或多条语句
{
printf("今天出太阳\n");
printf("并且今天天气很热\n");
}
if (a > 20) //在一个程序中,可以存在多个if 语句。 上面的if语句已经执行,下面的这个语句也可以执行,因此,if语句可以存在多个。即if语句的嵌套
{
printf("今天天气一般,20度\n");
}
if语句的嵌套
if语句里面还可以有if语句
不要嵌套太深
例:20<=a<=50
a = 30;
if (a >= 20)
{
printf("a大于等于20\n");
if (a <= 50)
{
printf("a小于等于50\n");
}
else
{
printf("a大于50\n");
}
}
else
{
printf("a小于20\n");
}
*/
二:switch 语句
/*
switch (整型或整型表达式)可以是字符,因为字符的存储方式为ASCII码,ASCII就是一个整数。把字符类型归纳为整型。 //括号只能是整型或者整型表达式,不能是浮点型,但是可以是字符类型:a,b,c...
{
case (选择判断) : 整型常量,不能是变量 。case里面不能重复匹配,即原来已经匹配了的,不能再次匹配 。 case语句里不能直接定义语句,要加语句块
注意:
1.case语句必须是整型常量、常量表达式
2.case语句如果定义变量要打花括号,定义语句块
break:跳出switch语句 ,如果不适用,它就不跳出来,程序会继续执行下面的语句
default:(上面所列举的都不满足),即什么都匹配不了
}
*/
/*
int a;
printf("请输入今天星期:\n");
scanf("%d", &a);
switch (a)
{
case 0: //判断a 为什么值
printf("输入错误:\n");
break; //跳出switch语句
case 1:
printf("星期一:\n");
break;
case 2:
printf("星期二:\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期七\n");
break;
default: //表示上面的情况都不满足,即默认
printf("你输入的情况都没有\n");
break;
}
*/
int a;
printf("请输入今天星期:\n");
scanf("%d", &a);
把字符类型归纳为整型
switch (a)
{
case 'a': //字符常量 //判断a 为什么值
printf("输入错误:\n");
break; //跳出switch语句
case 1:case 2: //case里面可以连着写,即可以一起实现,只需输入1或2就可以执行
printf("星期一和星期二是国家节日:\n");
break;
case 3:
case 4: //可以放在同一行,也可以不用
printf("星期三和星期四不用上班\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期七\n");
break;
default: //表示上面的情况都不满足,即默认
printf("你输入的情况都没有\n");
break;
}
注意: case语句里不能直接定义变量,要加语句块
例:
int a;
printf("请输入今天星期:\n");
scanf("%d", &a);
把字符类型归纳为整型
switch (a)
{
case 'a': //字符常量 //判断a 为什么值
printf("输入错误:\n");
break; //跳出switch语句
case 1:case 2: //case里面可以连着写,即可以一起实现,只需输入1或2就可以执行
{
int num = 0;
printf("星期一和星期二是国家节日:\n");
break;
}
case 3:
case 4: //可以放在同一行,也可以不用
printf("星期三和星期四不用上班\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期七\n");
break;
default: //表示上面的情况都不满足,即默认
printf("你输入的情况都没有\n");
break;
}
判断你输入的三条边能否构成三角形
任意两边之和大于第三边
int a;
int b;
int c;
printf("请输入三角形的三条边:\n");
scanf("%d%d%d", &a, &b, &c);
if (a + b > c && a + c > b && b + c > a)//或者用嵌套的方式
{
printf("你输入的:%d,%d,%d能构成三角形\n",a,b,c);
}
else
{
printf("你输入的:%d,%d,%d不能构成三角形\n",a,b,c);
}
switch语句能做的,if语句都能做 只能判断整型,不能判断浮点型
if语句能做的,switch不一定能做
三、循环语句
1、while语句
while(表达式) 直到条件不满足,退出循环,可以利用a++ 或a-- 来实现。 后面也只能跟一个语句,要想打印多个语句,要加语句块
一条语句或一个语句块
int a = 1;
//while(1)条件永远成立,永远循环,死循环。
//while(0) 表示条件永远不成立,不会执行,一句都不会打印
while (a < 10)//不满足条件就不会执行
{
printf("a=%d\n", a);
printf("是否成立");
a++;//a=a+2
}
(1)先判断a<10表达式是否成立,若成立,执行,又继续判断表达式是否成立,若成立,继续打印。一直循环下去
求1+2+3+...+100=5050
int i = 1, result = 0;
while (i <= 100)
{
result = result + i;
i++;
}
printf("result=%d\n", result);
(2)循环也可以嵌套 九九乘法表
int a = 1, b = 1;
while (a<= 9)//外层循环
{
b = 1;//b每次都要从1开始
while (b <= a)//里层循环 (b<=a):例1<=1.所以只打印一次。。。若a=2,有1<2;2<=2,所以打印两次,以此类推。。。。
{
printf("%d*%d=%d", a, b, a*b);
b++;//b=b+1,只有里层加一,因为每次从外层到里层b=1, 而里层每次加一
}
a++;//使外层的a每次都能加一
printf("\n");
}
2、 do...while循环 不管条件成不成立,都会先执行一遍
形式
/*
do
...
while(表达式);
*/
例:
int a = 1;
do //先执行一遍再去判断条件是否成立
{
printf("Hello world\n");
a++;
}
while (a < 10);//若条件成立,继续执行,进行循环。若不成立,不会执行
a++;
例:
(1)求1+2+3+...+100=5050
int i = 1, result = 0;
do
{
result= result + i;
i ++;
}
while (i <= 100);
printf("result=%d\n",result);
(2)九九乘法表
int i = 1, j = 1;
do
{
j = 1;
do
{
printf("%d*%d=%d", i, j, i*j);
j++;
}
while (j <= i);
i++;
printf("\n");
}
while (i <= 9);
for 循环
形式
/*
for(语句1;语句2;语句3)
一条语句或语句块
语句1:进行初始化
语句2:判断条件 若不加判断条件,就会陷入死循环
语句3:条件修正
执行顺序:(1)先执行初始化,只执行一次;(2)执行判断,条件成立,执行printf;(3)执行printf,即输出;(4)执行条件修正
*/
例:
ingt a=1
for( ; i<100;a++) 括号的的分号表示一个空语句,这个空语句不能省略,因为括号里必须有三个语句
for (int a = 1; a < 100; a++)//若已经在外面进行初始化,那么括号里可以不用写
printf("a=%d\n", a);
(1)求1+2+...+100=5050
int i=1,result=0; 若已经在外面进行初始化,那么括号里可以不用写
for( ; i<=100;i++) 括号的的分号表示一个空语句,这个空语句不能省略,因为括号里必须有三个语句 若不加判断条件,就会陷入死循环
int result = 0;
for (int i = 1; i <= 100; i++)
{
result+=i;
}
printf("result=%d\n", result);
(2)九九乘法表
int i = 1, j = 1;
for (i = 1; i <= 9; i++)
{
for (j=1;j<=i;j++)
{
printf(" %d*%d=%d", i, j, i*j);
}
printf("\n");
}
(3)
int i = 0, result = 0;
int b = 0;
int n = 0;
for (i = 0, b = 0; i < 100, b < 200; i += 5, b+= 40)//两个判断条件都要满足才能执行
{
printf("%3d+%3d=%3d\n",i, b, i + b);
n++;
}
printf("执行次数:n%d\n", n);
四、跳转语句:
1、goto语句
2、break语句
3、continue语句
1、break语句,跳出语句,终止循环 只能用于循环,switch, 跟它最近的这一层循环
int i = 0, j = 0;
while (i < 100)
{
while (j < 200)
{
if (i == 85)
break;//跳出循环, 只能跳出它最近的这一层循环
printf("j=%d\n", j);
j++;
}
printf("%d\n", i);
i++;
}
2、continue语句, 结束当前循环,开启下一次循环
int a = 0;
while (a < 100)
{
if (a % 2 == 0)
{
printf("偶数:%d\n");
a++;
continue;//结束当前循环,开启下一次循环,因此不会继续执行下面的程序,直接进入循环
}
printf("奇数:%d\n", a);//第二次a++等于1,为奇数,所以打印奇数,即执行下面的程序,进入循环,第三次,a++=2,为偶数,打印偶数,continue结束当前循环,进入下一次循环,。。。
a++;
}
3、goto语句, 标识符,后面冒号
int a = 0, b = 10;
int n;
ABC:
{
printf("hello world\n");
}
goto ABC;
return 0;
}
我知道你在看哟
新浪微博:@秀米XIUMI