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。
posted @ 2024-07-31 08:16  java帝国  阅读(6)  评论(0)    收藏  举报