C语言基础知识点汇总(2)——分支、循环结构
一、分支结构
(一)条件表达式:
格式:
表达式1 ?表达式2 :表达式3
a)口诀:真前假后。
b)注意是当表达式1的数值是非0(为真)时,才采用表达式2的数值做为整个运算结果,当表达式1的数值为0(为假)时,就用表达式3的数值做为整个的结果。
例如: int a=1,b=2,c=3,d=4,e=5;
k=a>b?c:d>e?d:e;求k的数值是多少? 答案为5
(二)if—else语句
格式:
if(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
else if(表达式3)
{
语句3;
}
……
1、C语言中是用非0表示逻辑真的,用0表示逻辑假的。if只管后面一个语句,要管多个,请用大括号!一定要注意悬空else!!!
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
其实是下面的含义:
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
{
printf("hehe\n");
}
}
else
{
printf("haha\n");
}
return 0;
}
2、 else 是与最接近的if且没有else的语句匹配。
3、 下面两个的区别,考试多次考到了!
if(a<b)
t=a;
a=b;
b=t;
if(a<b)
{t=a;
a=b;
b=t;}
4、几种if语句示例:
if(a<b)t=a;//单独的if语句
//标准的if语句
if(a<b)
min=a;
else
min=b;
//嵌套的if语句:
if(a<b)
if(b>c)
printf(“ok!”);
//多选一的if语句
if(a==t)
printf(“a”);
else if(b==t)
printf(“b”);
else if(c==t)
printf(“c”);
else
pritnf(“d”);
5、例题一
猜字游戏
#include<stdio.h>
#include<stdlib.h>
void menu()
{
printf("***************************************\n");
printf("**** 1.play 0.exit *********\n");
printf("***************************************\n");
}
void game()
{
int n;
//生成一个随机数
int m = rand() % 100 + 1;
//判断
while (1)
{
printf("请输入你猜的数:\n");
scanf("%d", &n);
if (n<m)
printf("猜小了,请重新猜:\n");
else if (n>m)
printf("猜大了,请重新猜:\n");
else
{
printf("恭喜您猜对了\n");
break;
}
}
}
int main()
{
int a;
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择:\n");
scanf("%d", &a);
switch (a)
{
case 0:
printf("不玩了,退出游戏\n");
break;
case 1:
printf("猜数字\n");
game();
break;
default:
printf("选择错误\n");
break;
}
} while (a);
return 0;
}
6、例题二
三个数从小到大输出。
int main()
{
int a, b, c;
int cnt;
printf("请输入与三个数\n");
scanf("%d,%d,%d", &a, &b, &c);
if (a > b)
{
cnt = a;
a = b;
b = cnt;
}
if (b>c)
{
cnt = b;
b = c;
c = cnt;
}
if (a>b)
{
cnt = a;
a = b;
b = cnt;
}
printf("这三个数从大到小为:%d %d %d\n", a, b, c);
return 0;
}
(三)switch语句
1、注意有break 和没有break的差别,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。
2、switch只可以和break一起用,不可以和continue用。
switch(x)// x:是整型常量,字符型常量,枚举型数据。
{
case 1: …. //不可以是变量。
case 2: ….
}
二、循环结构
(一)while循环:
while(表达式)//当表达式为真时进入循环,否则退出循环。
{
循环语句;
}
比如:在屏幕上打印1-10的数字。
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
注意:
(1) 其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。
(2) continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
(二)for循环:
for(表达式1;表达式2;表达式3)
{
循环语句;
}
1、表达式1为初始化,用于初始化循环变量的。表达式2为条件判断部分,用于判断循环时候终止。表达式3为调整部分,用于循环条件的调整。
2、for循环当中必须是两个分号,千万不要忘记。
3、写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。
例如:
1~200内的素数
#include<stdio.h>
#include<math.h>
int main()
{
int i;
for (i = 1; i < 200; i += 2)
{
int j = 2;
while (j <= sqrt(i))
{
if (i%j == 0)
{
break;
}
j++;
}
if (j > sqrt(i))
printf("%d ", i);
}
return 0;
}
(一)do-while循环:
do
{
循环语句;
} while(表达式);
1、循环至少执行一次,使用的场景有限,所以不经常使用
2、循环的最后一个while();的分号一定不能够丢。
int main()
{
int i = 10;
do
{
if(5 == i)
break;
printf("%d\n", i);
}while(i<10);
return 0;
}
文章系本人原创,转载请注明作者和出处。