Linux 学习记录5(C基础篇)

Linux 学习记录5

在这里插入图片描述

本文目录

  • Linux 学习记录5
  • 一,C语言结构
    • 1. 分支结构
      • (1,switch 分支结构
    • 2. 循环结构
      • (1,while循环
      • (2,do while循环
      • (3,for循环
  • 辅助控制关键字
    • 1. break
    • 2. return
    • 3. continue
  • 思维导图
  • 练习
    • 练习for
      • 1. 使用for循环输出5行helloworld。
      • 2. 1-100中的偶数
      • 3. 求1-100的和
      • 4. 输出100-999内的所有水仙花数
    • 练习while
      • 1. 求1-100内奇数的和。
      • 2. 终端输入一个数,求该数的所有因子,如12,输出1234612。
      • 3. 输出下三角的九九乘法表。
      • 4. 终端输入行数,打印直角三角形

一,C语言结构

1. 分支结构

(1,switch 分支结构

格式:
switch (变量)
{
		case 常量表达式1  :
		代码块1
		break;
		case 常量表达式2  :
		代码块2
		break;
		case 常量表达式3  :
		代码块3
		break;
		........
		default :
		代码块n
		break;
}
执行逻辑:
1. 进入switch..·case判断变量的结果,和case后的常量表达式判断,走满足的case后面的分支
2. 如果一个case后面没有break,执行完该case后会顺序向后执行下面的case/switch..·case语句,
3. default的作用,如果不关心其他分支,就写一个default,其他分支就走default

switch和后面括号内的内容是,选择的变量,case后面的常量表达式,就是switch后面的变量可能出现的情况。哪个case后面的常量是变量的结果,就执行哪个case后面的代码块。

注意事项

1. switch后面的变量只能是char/int
2. 如果不加break会顺序向后执行,叫做case击穿
3. case击穿可以根据使用场景的不用利用起来。
4. case的顺序,不会影响程序的执行

例:

int a = 0
scanf("%d",&a)
switch(a)
{
	case 1:
	printf("1\r\n");
	break;
	case 2:
	printf("2\r\n");
	break;
	case 3:
	printf("3\r\n");
	break;
	case 4:
	printf("4\r\n");
	break;
	default: printf("其他数据");
}
输入a<< 1
输出>>  1

输入a<< 3
输出>>  3

输入a<< 5
输出>>  其他数据

2. 循环结构

(1,while循环

格式:
while(条件)
{
	代码块;
	改变循环条件;
}
 执行逻辑:
1. 先判断条件,如果条件为真,执行代码块内的语句
2. 当代码块执行完成后根据需要改变执行条件;
3. 当改变条件语句后,如果条件为真继续执行代码块,如果为假则循环结束

例:

 int i = 0;
 int cnt = 0;
 while(i<5)//当i<5时执行while内的语句 当i=5时结束循环
 {
 	cnt++;//记录循环执行次数
 	i++;//更新循环条件;
 }
 printf("cnt = %d",cnt);
 结果>> 循环了5次
 cnt = 5;

(2,do while循环

格式:
do
{
	代码块;
	改变循环条件;
}while(条件);
执行逻辑:
1. 先执行代码块
2. 当代码块执行完成后根据需要改变执行条件;
3. 执行完代码块后,判断循环条件,为真继续执行代码块,如果为假则循环结束

与while相比,do while内的代码块至少执行一次

例:

 int i = 0;
 int cnt = 0;
 do
 {  //先执行代码块
 	cnt++;//记录循环执行次数
 	i++;//更新循环条件;
 }while(i<5);//当i<5时执行while内的语句 当i=5时结束循环
 printf("cnt = %d",cnt);
 结果>> 循环了5次
 cnt = 5;

(3,for循环

格式:
for(表达式1; 表达式2 ; 表达式3 )
{
	代码块
}
执行逻辑:
1. 先执行表达式1,表达式1通常是循环变量初始化语句
2. 再执行表达式2,表达式2是for循环判断条件
3. 如果条件成立,执行循环体内的语句,再执行表达式3,表达式3就是循环变量的步长
4. 如果条件不成立,退出for循环

表达式1仅在初次进入循环时执行,表达式2在每次循环内的代码块执行完毕后都会执行
在for中的表达式1,表达式2,表达式3 都可以不输入,但两个 ; ; 必须输入,如:for(;; )
例:

 int i = 0;//循环条件
 int cnt = 0;//循环计数
 for(i=0;i<5;i++)
 {  //先执行代码块
 	cnt++;//记录循环执行次数
 }
 printf("cnt = %d",cnt);
 结果>> 循环了5次
 cnt = 5;

辅助控制关键字

1. break

break只能用在循环和switch---case中
break用在循环中,表示退出本层循环

2. return

退出当前函数

3. continue

跳出本次循环

思维导图

Linux 学习记录5(C基础篇)_第1张图片

练习

练习for

1. 使用for循环输出5行helloworld。

#include 
int main(void)
{
	int i = 0;
	for(i=0;i<5;i++)
	{
		printf("hello word!!!\r\n");
	}
	return 0;
}
输出结果>>
hello word!!!
hello word!!!
hello word!!!
hello word!!!
hello word!!!

2. 1-100中的偶数

#include 
int main(void)
{
	int i = 0;
	for(i=1;i<=100;i++)
	{
		if(!(i%2)) printf("%d\r\n",i);
	}
	return 0;
}
输出结果>>
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
68
70
72
74
76
78
80
82
84
86
88
90
92
94
96
98
100

3. 求1-100的和

#include 
int main(void)
{
	int i = 0;
	int sum = 0;
	for(i=1;i<=100;i++)
	{
		sum+=i;
	}
	printf("sum = %d\r\n",sum);
	return 0;
}
输出结果>>
sum = 5050

4. 输出100-999内的所有水仙花数

#include 
#include 
int main(void)
{
	int i = 0;
	for(i=100;i<=999;i++)
	{
		if(i==((pow(i/100,3)+pow((i/10)%10,3)+pow(i%10,3))))
		{
			printf("%d\r\n",i);
		}
	}
	return 0;
}
输出结果>>
153
370
371
407

练习while

1. 求1-100内奇数的和。

#include 
int main(void)
{
	int i = 1;
	int sum = 0;
	while(i<=100)
	{
		if(i%2)sum+=i;
		i++;
	}
	printf("sum = %d\r\n",sum);
	return 0;
}
输出结果>>
sum = 2500

2. 终端输入一个数,求该数的所有因子,如12,输出1234612。

#include 
#include 

int main(void)
{
	int i = 1;//外循环
	int in_num = 0;
	scanf("%d",&in_num);
	while(i<in_num)
	{
		if(in_num%i==0)
		{
			printf("%d\r\n",i);
		}
		i++;
	}
	return 0;
}
输入<<
输出结果>>
1
3
7
21

3. 输出下三角的九九乘法表。

#include 
#include 

int main(void)
{
	int i = 0;//外循环
	int z = 0;//内循环
	while(i<9)
	{
		z=0;
		while(z<i+1)
		{
			printf("%d*%d=%-3d",z+1,i+1,(i+1)*(z+1));
			z++;
		}
		printf("\r\n");
		i++;
	}
	return 0;
}

输出结果>>
1*1=1  
1*2=2  2*2=4  
1*3=3  2*3=6  3*3=9  
1*4=4  2*4=8  3*4=12 4*4=16 
1*5=5  2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7  2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8  2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9  2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

4. 终端输入行数,打印直角三角形

#include 
int main(void)
{
	int i = 1;
	int z = 1;
	int len = 0;
	scanf("%d",&len);
	while(i<len)
	{
		z=0;
		while(z<i+1)
		{
			printf("*");
			z++;
		}
		printf("\r\n");
		i++;
	}
	return 0;
}
输入行数<< 7
输出结果>>
*
**
***
****
*****
******
*******

你可能感兴趣的:(Linux学习记录,学习)