p17面试题

品茗面试题

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;

}

以上的写法缺点就是有有可能会发生溢出问题

采用异或不会溢出的

cpp 复制代码
#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(arr0);

for(i=0;i<sz;i++)

{

//统计arri在arr数组中出现了几次

int j=0;

int count=0;

for(j=0;j<sz;j++){

if(arri==arrj){

count++;

}

}

if(count==1)

{

printf("单身狗:%d\n",arri);

break;

}

}

return 0;

}

我们使用异或方法

cpp 复制代码
#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分钟后关机,如果输入:我是猪,就取消关机

cpp 复制代码
#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;
}
相关推荐
weixin_468466857 分钟前
图像滤波算法新手实战指南
图像处理·人工智能·算法·计算机视觉·ai·机器视觉·滤波
Ulyanov9 分钟前
深入QML-Python通信 构建响应式交互界面的桥梁设计:QML+PySide6现代开发入门(五)
开发语言·python·算法·交互·qml·系统仿真
重生之我是Java开发战士14 分钟前
【贪心算法】加油站,单调递增的数字,坏了的计算器,合并区间,用最少数量的箭引爆气球
算法·贪心算法
小欣加油22 分钟前
leetcode 3300 替换为数位和后的最小元素
数据结构·c++·算法·leetcode
晚风予卿云月23 分钟前
【枚举】普通枚举
数据结构·c++·算法·竞赛·算法随笔
IronMurphy28 分钟前
【算法五十三】1143. 最长公共子序列
算法
被AI抢饭碗的人29 分钟前
算法:动态规划
算法
妄想出头的工业炼药师30 分钟前
激光雷达点云退化多地图会话
算法·开源
不会就选b42 分钟前
数据结构之顺序表
数据结构
z落落1 小时前
C# Hashtable 哈希表+SortedList 有序键值对集合
数据结构·散列表