3.12笔记

1,如何交换两个值,不用第三个变量?
①代入第三个变量法:

int main()
{
    
    
	int num1 = 10;
	int num2 = 20;
	int num = 0;
	cout << num1 << '\t' << num2<<endl;
	num = num1;
	num1 = num2;
	num2 = num;
	cout << num1 << '\t' << num2<<endl;
}

//此方法一般具有很好的可读性。
②加减法:

int main()
{
    
    
	int num1 = 10;
	int num2 = 20;
	cout << num1 << '\t' << num2 << endl;
	num1 = num1 + num2;
	num2 = num1 - num2;
	num1 = num1 - num2;
	cout << num1 << '\t' << num2 << endl;
}

//满足了不使用第三个变量的条件,但存在一个问题,如果定义的数太大,就会造成溢出现象,不是一个最佳的方法。
③位运算(异或法):

int main()
{
    
    
	int num1 = 10;
	int num2 = 20;
	cout << num1 << '\t' << num2 << endl;
	num1 = num1 ^ num2;
	num2 = num1 ^ num2;
	num1 = num1 ^ num2;
	cout << num1 << '\t' << num2 << endl;
}

//异或规则:按二进制进行异或:相同为0,相异为1。此方法满足了不使用第三个变量的条件,且不会存在溢出现象,但可读性太差,一般自己使用中,推荐使用方法①。
2,找一次出现的数?
①直接找,数数字:

int main()
{
    
    
	int a[] = {
    
     1,2,3,4,5,1,2,3,4 };
	int i;
	int sz = sizeof(a)/sizeof(a[0]);
	for (i = 0; i < sz; i++)
	{
    
    
		int count = 0;
		int j;
		for (j = 0; j < sz; j++)
		{
    
    
			if (a[i] == a[j])
			{
    
    
				count++;
			}
		}
		if (count == 1)
		{
    
    
			cout << a[i] << endl;
			break;
		}
	}
}

//此方法太过冗余,不够简练,但也能实现要求。
②异或法:

int main()
{
    
    
	int a[] = {
    
     1,2,3,4,5,1,2,3,4 };
	int i;
	int sz = sizeof(a)/sizeof(a[0]);
	int ret = 0;
	for (i = 0; i < sz; i++)
	{
    
    
		ret ^= a[i];
	}
	cout << ret << endl;
}

//此方法可以很简洁的实现要求,且极具可读性。
//在上面两个列子中可以看出来,一种运算可以解决许多的问题,这需要对知识掌握的更加牢靠,更有深度。
3,一个有趣的小例子:
Windows的自动关机命令是:shutdownn -s -t 时间(以秒来运算)

int main()
{
    
    
	char input[20];
	int i;
	system("shutdown -s -t 60");
	cout << "你的电脑将在一分钟之后关机,请输入我是猪取消操作>";
again:
	cin >> input;
	if (strcmp(input, "我是猪")==0)
	{
    
    
		system("shutdown -a");
	}
	else
	{
    
    
		cout << "你的电脑将在一分钟之后关机,请输入我是猪取消操作>" ;
		goto again;
	}
}

//在这里呢,用到了strcmp函数,其用法为strcmp(str1,str2),str1,str2均为字符,对两字符进行比较并返回函数值:
(1) 如果字符串1=字符串2,则函数值为0;
(2) 如果字符串1>字符串2,则函数值为1;
(3)如果字符串1<字符串2,则函数值为-1。
//字符串的比较规则与其它语言中的规则相同,即对两个字符串自左向右逐个字符进行相比(按ASCⅡ码值大小比较),直到出现不同的字符或“\0”为止。

猜你喜欢

转载自blog.csdn.net/w903414/article/details/104828396