品茗面试题
1.交换两个int变量的值,不能使用第三个变量,即a=3,b=5,交换后,a=5,b=3;
#include<stdio.h>
 //int main(){
 //    //打印函数,引用头文件.stdio.h
 //    printf("hello world\n");//打印函数
 //    return 0;
 //}
    int a=3;
     int b=5;
     int c=0;
 int main()
 {
     printf("交换前:a=%d b=%d\n",a,b);
     //交换2个整型变量
     
     //1
     c=a;
     a=b;
     b=c;
     printf("交换后:a=%d b=%d\n",a,b);
     return 0;
 }

#include<stdio.h>
 int main(){
     //交换2个整型变量
     int a=3;
     int b=5;
     printf("交换前:a=%d b=%d\n",a,b);
     a = a+b;
     b = a-b;//b得到了原来的a
     a = a-b;//a得到了原来的b
     printf("交换后:a=%d b=%d\n"a,b);
return 0;
 }

以上的写法缺点就是有有可能会发生溢出问题
采用异或不会溢出的
#include<stdio.h>
int main(){
	//交换2个整型变量
	int a=3;
	int b=5;
	printf("交换前:a=%d b=%d\n",a,b);
//	a = a+b;
//	b = a-b;//b得到了原来的a
//	a = a-b;//a得到了原来的b
	a=a^b;
	b=a^b;
	a=a^b;
	printf("交换后:a=%d b=%d\n",a,b);
	return 0;
}
 

进入企业会采用临时变量(第三个变量)的方法----代码的可读性高,执行效率高
第三种方法可读性差,执行效率低于其他方法。
2. 找出只出现一次的数
题面:给定一个非空整形数组,除了某个元素只出现一次以外,其余的每个元素均出现两次,找出那个只出现一次的元素。
样例:int a[]={1,2,3,4,5,1,2,3,4},该数组中只出现了5一次,其余数字都是成对出现的,找出5.
方法一 :
暴力求解
#include<stdio.h>
 #include<limits.h>
 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 j=0;
         int count=0;
         for(j=0;j<sz;j++){
             if(arr[i]==arr[j]){
                 count++;
             }
         }
         if(count==1)
         {
             printf("单身狗:%d\n",arr[i]);
             break;
         }
}
    return 0;
 }

我们使用异或方法
#include<stdio.h>
#include<limits.h>
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;
	return 0;
} 

3. 写一个关机程序
程序运行,你的电脑在1分钟后关机,如果输入:我是猪,就取消关机

#include<stdio.h>
#include<limits.h>
#include<stdlib.h>//ststem
#include<string>//strcmp
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("shutdown -a");
	}
	else
	{
		goto again;
	}
return 0;
} 


















