C语言,C++随记(2)

**

关于死循环的一些问题

**
(1)看似不是死循环,其实是死循环
例:

#include<stdio.h>
int main()
{
	char c=1;
	int s=0;
	while(c<151)
	{
		s+=c++;
	}
	printf("%d",s);
	return 0;
}

这个例题中因为c是char型数据,所以它的取值范围是-128~127;而c的初值为1,当执行while语句时c是加不到128的,c=128其实是c=-128,所以c是永远也到不了151的,s输出是0,所以这个while是死循环。
(2)看似是死循环,其实并不是,他是伪死循环
例:

#include<stdio.h>
int main()
{
	int i=0;
	while(i<100)
	{
		i--;
	}
}

这个例题中i是int型数据,所以它的取值范围是-2147483648~2147483647;i的初值为1,1<100成立,所以执行i–,当i减到-2147483649时他其实是2147483647,所以i的值就大于100,循环结束。
**

a,b互换其值的几种方法

**
(1)

  #include<stdio.h>
    int main()
    {
    	int a,b,c;
    	scanf("%d%d",&a,&b);
    	c=a;
    	a=b;
    	b=c;
    }
(2)
#include<stdio.h>
    int main()
    {
    	int a,b,c;
    	scanf("%d%d",&a,&b);
    	a=a+b;
    	b=a-b;
    	a=a-b;
    }

(3)

#include<stdio.h>
    int main()
    {
         int a,b,c;
    	scanf("%d%d",&a,&b);
    	a=a^b;
    	b=a^b;
    	c=a^b;
    }    

需要注意的是第三种情况只能用于整数。
**

浮点数

**
因为浮点数在计算机中是存不准的,所以不能判断两个浮点数是否相等,要判断其是否相等可以让他们两个作差,若差值小到规定的精度以下时认为其相等即fabs(a-b)<=精度时认为其相等。
**

输入密码并且错误不能超过三次代码

**

#include<stdio.h>
int main()
{
	char s[6] = { '1','2','3','4','5','6' }, b[6] = {};
	int n, k;
	k = 0;
	while (1)
	{
		n = 0;
		printf("请输入密码:\n");
		for (int i = 0; i < 6; i++)
		{
			b[i] = getch();
			printf("*");
		}
		for (int i = 0; i < 6; i++)
		{
			if (s[i] == b[i])
			{
				n++;
			}
		}
		if (n == 6)
		{
			printf("密码正确!"); break;
		}
		else
		{
			printf("密码错误!");
		}
		k++;
		if (k == 3)
		{
			printf("三次机会已完!"); break;
		}
	}
	return 0;
}    

这个代码中使用了while循环,并且他是一个死循环,如果密码正确则使用break跳出循环,如果密码错误就继续循环输入密码,在判断密码是否正确时定义了一个数用来计数,当判断密码次数为三次时break跳出循环。
**

关于break和continue

**
break是直接结束循环体执行循环之后的语句,而continue是跳过本次循环中还未执行的语句进行下一次循环判断,如果为真则继续执行循环体。
需要注意的是break只能跳出一层循环,并不可以从多次循环中直接跳出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值