#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<limits.h>
#include<stdlib.h>//system
#include<string.h>//strcmp
int main()
{
int a = 3;
int b = 5;
int c = 0;
printf("交换前: a=%d b=%d\n", a, b);
c = a;
a = b;
b = c;
printf("交换后: a=%d b=%d\n", a, b);
return 0;
}
//只使用两个变量
int main()
{
int a = 3;
int b = 5;
int c = 0;
printf("交换前: a=%d b=%d\n", a, b);
//INT_MAX; 2147483647
//溢出的问题
//int - 4个字节 - 32bit位 - 最大值
a = a + b;//a - 和, b还是原来的b
b = a - b;//b得到原来的a
a = a - b;//得到的是原来的b
printf("交换后: a=%d b=%d\n", a, b);
return 0;
}
int main()
{
int a = 3;
int b = 5;
int c = 0;
printf("交换前: a=%d b=%d\n", a, b);
//^ 按(二进制)位异或
//相同为0,相异为1
//不会溢出
//没有使用第三个变量
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("交换后: a=%d b=%d\n", a, b);
return 0;
}
int main()
{
int arr[] = { 1,2,3,4,5,1,2,3,4 };
//找出单生狗
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);//计算数组的元素个数
for (i = 0; i < sz; i++)
{
//统计arr[i]在arr数组中出现了几次;
int count = 0;
int j = 0;
for (j = 0; j < sz; j++)
{
if(arr[i] == arr[j])
{
count++;
}
}
if (count == 1)
{
printf("单生狗:%d\n", arr[i]);
break;
}
}
return 0;
}
//优化算法
//异或是满足交换律的
int main()
{
int arr[] = { 1,2,3,4,5,1,2,3,4 };
int i = 0;
int ret = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
{
ret = ret ^ arr[i];
}
printf("单生狗:%d\n", ret);
return 0;
}
int main()
{
char input[20] = { 0 };//存储数据
//关机
//system() - 专门用来执行系统命令的
system("shutdown -s -t 60");//关机
again:
printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪,就取消关机\n");
scanf("%s", input);//%s - 字符串
if (strcmp(input, "我是猪") == 0)//判断input中放的是不是“我是猪” - strcmp - string compare
{
system("shutdowm -a");
}
else
{
goto again;
}
return 0;
}