C语言基础知识点汇总(2)-分支、循环结构

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;
}

文章系本人原创,转载请注明作者和出处。

猜你喜欢

转载自blog.csdn.net/weixin_45695870/article/details/106291383