4process contro-选择
流程控制[使我们学习C语言的第一个重点,程序设计的重点内容:流程、函数、指针]
1什么是流程控制
程序代码执行的顺序
2流程控制的分类
1)顺序执行
代码从上到下按顺序执行。
2)选择执行
if用法
(1)定义:某些代码可能执行,也可能不执行,有选择执行某些代码
(2)分类:
A.if最简单的用法
#include <stdio.h>
int main(void)
{
if (3 > 2)
printf("AAAAAA\n");
if (3)
printf("BBBBBB\n");
if (0)
printf("CCCCCC\n");//条件为假,语句不执行
if (0 == 0)
printf("DDDDDD\n");
return 0;
}
/*
格式:if (表达式)
语句;
功能:如果表达式为真,执行语句;如果表达式为假,语句不执行。
*/
B.if的范围问题
#include <stdio.h>
int main(void)
{
if (1 > 2)
printf("AAAAAA\n");
printf("BBBBBB\n");
if (3 > 2)
{
printf("CCCCC\n");
printf("DDDDDD\n");
}
return 0;
}
/*
1.
if (表达式)
语句A;
语句B;
if 默认只能控制语句A的执行和不执行;if无法控制语句B的执行或不执行。
或者讲:语句B一定会执行
2.
if (表达式)
{
语句A;
语句B;
}
由此可见:if默认只能控制一个语句的执行或不执行;如果想要控制多个语句的执行或不执行就必须把这些语句用{}括起来
*/
C.if...else..的用法
#include <stdio.h>
int main(void)
{
if (3 > 2)
printf("AAAAAA\n");
else //否则
printf("BBBBBB\n");
printf("CCCCCC\n");
return 0;
}
/*
* 1.格式:
* if (表达式)
* 语句A;
* else
* 语句B;
*2.if...else...范围问题:if默认只能控制一个语句,else也只能控制一个语句;if...else...算一个语句;
*/
D.if...else if ...else...的用法
#include <stdio.h>
int main(void)
{
float delta;
scanf_s("%f", &delta);
if (delta > 0)
printf("有两个解\n");
else if (delta == 0)
printf("有一个解\n");
else
printf("无解\n");
return 0;
}
/*
* 1.格式:
* if (表达式1)
* 语句1;
* else if (表达式2)
* 语句2;
* else
* 语句3;
* 2.程序执行过程:表达式1成立,执行语句1;表达式1不成立,表达式2成立,执行语句2,表达式1和表达式2都不成立,执行语句3。
* 3.scanf()函数输入时候,float类型变量,用%f输入控制符输入;double类型变量,用%lf输入控制符输入。
*/
if...else...程序出错典型错误
#include <stdio.h>
int main(void)
{
float delta;
scanf_s("%f", &delta);
if (delta > 0)
printf("有两个解\n");
printf("哈哈!\n");
else if (delta == 0) //没有匹配 if 的非法 else
printf("有一个解\n");
else
printf("无解\n");
return 0;
}
E.C语言对真假的处理
非零是真;零是假;真是用1表示;假是用0表示;
F.if举例
if求分数的等级
#include <stdio.h>
int main(void)
{
float score;//score分数
printf("请输入您的考试成绩:\n");
scanf_s("%f", &score);
if (score > 100)
printf("这是做梦!\n");
else if (score <= 100 && score >= 90)//不能写成 90 <= score <= 100, 无论score为何值,表达式永远为真
printf("成绩优秀!\n");
else if (score >= 80 && score < 90)
printf("良好!\n");
else if (score >= 60 && score < 80)
printf("及格!\n");
else if (score >= 0 && score < 60)
printf("不及格!继续加油!");
else
printf("输入的分数过低,不要如此自卑!\n");
return 0;
}
if实现任意三个数排序
#include <stdio.h>
int main(void)
{
//定义变量
int a, b, c;
int t;
printf("请输入三个整数(中间用空格隔开):");
scanf_s("%d %d %d", &a, &b, &c);
//编写代码完成三个数排序
if (a < b)
{
t = a;
a = b;
b = t;
}
if (a < c)
{
t = a;
a = c;
c = t;
}
if (b < c)
{
t = b;
b = c;
c = t;
}
//结果输出
printf("结果输出:");
printf("a = %d, b = %d, c = %d\n", a, b, c);
return 0;
}
c语言学习的方法和技巧:
判断一个数字是否是素数
判断一个数字是否是回文数
编程实现求一个十进制数字的二进制形式
把一个数字的每位是奇数的数字取出来组合形成新数字
求一个数字倒过来的数字
这些题目属于算法的题目,算法有些情况是集体的智慧,不会看懂程序,不可阻碍你前进的脚步。
如何看懂程序,分三步:1.流程;2.每个语句的功能;3.试数;
对一些小算法的程序,尝试自己去编程解决它,如果解决不了,就看答案,关键是把答案看懂,大部分人自己都无法解决,这个要花很大精力,这也是我们学习的重点,看懂之后尝试去修改程序,并知道修改之后的不同输出结果的含义,照着答案去敲并调试错误,最终不看答案能够独立敲出来,如果程序无法彻底理解,就把它背会。
G.if常见问题解析
1)空语句问题 if (3 > 2);
等价于 if (3 > 2)
;//这是一个空语句
2)
if (表达式1)
A;
else
B;//这是错误的
if (表达式1);
A;
else
B;//这是错误的
3)
#include <stdio.h>
int main(void)
{
if (3 > 2)
printf("AAAAAA\n");
else if (3 > 1)
printf("BBBBBB\n");
else if (3 > 0)
printf("CCCCCC\n");
else
printf("DDDDDD");
return 0;
}
/*
在vc++6.0中的输出结果:AAAAAA
说明:
if (表达式1)
A;
else if (表达式2)
B;
else if (表达式3)
C;
else
D;
即便表达式1和2同时成立,也只会执行A语句。
*/
4)
if (表达式1) A; else if (表达式2) B; else if (表达式3) C;
语法上没有错误,逻辑上有缺陷;
5)
if (表达式1) A; else if (表达式2) B; else if (表达式3) C;
else (表达式4)
D;
语法上是错误的,要不去掉表达式4,要么在else后面加if。

浙公网安备 33010602011771号