【记录自己复习中总结的一些小知识2】

记录自己复习中的第二个小总结


前言

第二次记录自己的最近所学知识点的一个小总结,希望能对大家有帮助。


一、选择结构

在C语言中,经常使用的两种选择语句:
(1)if 语句:一般用来实现两个分支的选择的结构。
(2)Switch 语句:一般用来实现多个分支的选择的结构。

1.if 语句

举个例子:输入两个数,按从小到大的顺序输出这两个数

代码如下:

#include<stdio.h>
int main()
{
	float a, b, t;
	scanf_s("%f %f", &a, &b);
	if (a > b)
	{
		t = a;
		a = b;
		b = t;//如果if成立的话则交换位置并输出
	}
	printf("%5.2f %5.2f\n", a, b);
	return 0;
}

if语句

2.Switch 语句

举个例子:将考试成绩按照等级制度来分为多个分数段,A是85分以上,B是70—84分,C是60—69分,D是60分以下,输入等级之后显示你的分数段。

代码如下:

#include<stdio.h>
int main()
{
	char grade;
	scanf_s("%c", &grade);
	printf("Your score:");
	switch (grade)
	{
	case'A':printf("85~100\n"); break;
	case'B':printf("70~84\n"); break;
	case'C':printf("60~69\n"); break;
	case'D':printf("<60\n"); break;
	default:printf("enter date error!\n");
	}
	return 0;
}

Switch语句

3.选择的嵌套

在 if 语句中还包括一个或者多个的 if 语句称为 if 语句的嵌套。一般形式如下:
if 嵌套

但在写的时候应该注意 if 与 else 的配对关系。else总是习惯于它上面最近的未配对的 if 配对。如果是这种情况:
特殊

在写的时候把 else 写在了第一个 if 的同一列上,但是实际上 else 是与第二个 if 配对。
你可以换一种方式,将第二个 if 用花括号括起来。
特殊

二、循环结构

1.while 语句

while语句的一般形式是:while(表达式) 语句
while语句的特点是先执判断条件表达式,后执行循环体语句。

举个例子:求1+2+3+····+100

代码如下:

#include<stdio.h>
int main()
{
	int i = 1, sum = 0;
	while (i<=100)//当i>100,不执行语句,反之执行
	{
		sum = sum + i;
		i++;
	}
	printf("sum=%d\n", sum);
	return 0;
}

2.do…while 语句

do…while 语句一般形式:
do
语句
while(表达式)

举个例子:求1+2+3+····+100

代码如下:

#include<stdio.h>
int main()
{
	int i = 1, sum = 0;
	do
	{
		sum = sum + i;
		i++;
	} while (i<=100);
	printf("sum=%d\n", sum);
	return 0;
}

跟上面的while语句比较,do…while语句的特点是不一样的,do…while执行过程是先执行循环体,然后再检查条件是否成立,若成立,再执行循环体,所以当条件不成立的时候,while一次循环体也不执行,但是do…while至少会执行一次。

3.for 语句

for语句的一般形式:
for(循环变量赋初值;循环条件;循环变量增减值)
语句

可以将上面的例子用for语句执行:

代码如下:

#include<stdio.h>
int main()
{
	int i,sum=0;
	for (i = 1; i <= 100; i++)
		sum = sum + i;
	printf("sum=%d\n", sum);
	return 0;
}

显然,使用for语句将会更加简单、方便。

4.循环的嵌套

上面几种循环之间都可以互相嵌套,嵌套形式如下:
循环嵌套

三、相关问题实现

1.输出除了1以外,100以内的所有素数。

代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
	int i, k, n, m = 0;
	for (n = 2; n <= 100; n++)
	{
		k = sqrt(n);//sqrt是平方根函数
		for (i = 2; i <= k; i++)
			if (n % i == 0)
			break;//若n被i整除,终止内循环,此时i<k+1
		if (i >= k + 1)
		{
			printf("%3d", n);
				m = m + 1;//m是用来控制换行的,一行输出10个数
		}
		if (m % 10 == 0)
		printf("\n");//累计的10的倍数,换行
	}
	printf("\n");
	return 0;
}

运行结果:
结果

代码解析:
首先是求除了1以外,100以内的所有素数,所以定义完变量之后,第一个循环中 i 直接从2开始。为了减少循环次数,所以我们在做算法的时候,使得 n 被 2—√n 的整数除即可。
判断是否为素数的话是根据最后结束循环时 i 的值是多少,如果n能够被 2—√n 的整数相除的话,肯定是由break导致的的语句提前结束,即 i 并未达到 n 得值循环就结束了。显然此时 i <n ,如果不能被
2—√n 的任何一个整数整除,就不会执行break语句, i 一直变化到等于 n ,然后再根据第一个 for 循环里面的判断 i<n ,得到条件不成立,从而结束循环。这种才属于正常的结束循环。最后在根据结束时的 i 等于多少,跟 n 相比即可得到是否为素数。

2.Fibonaccci(斐波那契数列)

有一对兔子,从出生后第三月起每个月都生一对兔子,小兔子长到第三个月又生一对兔子。假设所有兔子不死,问每个月的兔子总数是?

解题思路:
根据题意,可以根据刚开始两个月的兔子数退出第三个月的兔子数。假设第一个月的兔子数是 f1=1, 第二个月兔子数是 f2=1 ,则第三个月的兔子数是 f3=f1+f2=2。以此类推,f4=f2+f3,f5=f3+f4。

代码如下:

#include<stdio.h>
int main()
{
	int f1 = 1, f2 = 1;
	int i;
	for (i = 1; i <= 20; i++)//每个循环中输出2个月的数据,所以循环20次
	{
		printf("%12d %12d", f1, f2);//输出已知两个月的兔子数
		if (i % 2 == 0)printf("\n");//输入四个数后换行
		f1 = f1 + f2;//将下一个月的兔子数放在f1中
		f2 = f2 + f1;//将下两个月的兔子数放在f2中
	}
	return 0;
}

运行结果:
结果

总结

这些就是我在C语言中总结关于选择和循环的一些知识点,选择跟循环不管在什么时候都是我们经常会使用到的一个语法结构,希望我的一些小总结能够帮助到大家,我也会再接再厉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值