西工大2015年计算机机试题

题目来源:西工大计算机(微信公众号)

字符串匹配解决方法和连阴雨参考该篇博客

六数码和真值表问题来自该篇博客

第一题:求三个数中最小的一个

   输入样例:5 3 98 
   输出样例:3
#include<iostream>
using namespace std;
int min1(int n1, int n2, int n3)
{
	if (n1 < n2)
	{
		if (n1 < n3)
			return n1;
		else 
			return n3;
	}
	else
	{
		if (n2 > n3)
			return n3;
		else
			return n2;
	}
}
int main()
{
	int a, b, c;
	cout << "Please input:";
	cin >> a >> b >> c;
	cout << min1(a, b, c) << endl;
	return 0;
}

第二题:十进制转化为二进制

 输入样例:1030
 输出样例:10000000110
实际中解决问题时,十进制转换为二进制是通过长除法来实现,本次数制转换也可以通过这种思想,编程解决实际问题。

长除法10进制转换为2进制是将余数写在一侧,商写在底下,计算结束后将余数逆写便为转换而成的目标字符串。递归调用刚好有这一特性,递归结束后,位于递归调用语句后的语句的执行顺序和各个被调用函数的顺序相反。

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
void convto(char c[], int n1, int n2)//进制转换函数,n1为待转换数,n2为目标进制,将n1转化为n2进制的数据
{
	int len;       //转换而成的字符串长度;
	char bit[] = { "0123456789ABCDEF" };//最大可转换为16位;
	if (n1 == 0)                         //0转化为空
	{
		strcpy(c, "");
		return;
	}
	convto(c, n1 / n2, n2);      //递归,递归结束之后,逆调用方向输出下列语句;
	len = strlen(c);
	c[len] = bit[n1 % n2];       //bit对应位和目标字符串一一对应
	c[len + 1] = '\0';
}
int main()
{
	char c[20] = {};   //c用来保存转换而成的字符串
	int number;        
	cin >> number;     //输入待转换数字
	convto(c, number, 2);//调用进制转换子函数
	cout << c<<endl;
	return 0;
}

第三题:迷宫问题1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值