目录
第一题-选择题1
答案:123 173
思路:
int m = 0123是八进制表示形式,n = 123是十进制表示形式
%o是八进制输出形式,所以m直接输出123,n需要转化成八进制然后输出
第二题-选择题2
答案:afternoon
思路
数组名表示首元素地址,只有&sizeof之后才表示数组本身,所以++m跳过的是一个元素,然后将这个元素打印出来
第三题-选择题3
答案:8
思路:
功能返回x中有多少个1,9999对应二进制是10 0111 0000 1111,有8个1
第四题-计算糖果
思路:
我们由四个式子分别求出ABC,A = (a+c)/2,B1 = (c-a)/2,B2 = (b+d)/2,C = (d-b)/2,此时我们只要判断这两个数是否相等。
#include<iostream>
using namespace std;
int main ()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
int A = (a+c)/2;
int B1 = (c-a)/2;
int B2 = (b+d)/2;
int C = (d-b)/2;
if(B1!=B2)
{
cout << "No" <<endl;
}
else
{
cout<<A<<" "<<B1<<" "<<C<<endl;
}
}
第五题-进制转换
思路:
首先记录m是否为0和m的正负数,之后通过table将m中每一位存储到s当中,最后翻转输出s即可
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main ()
{
int m, n;
string s, table = "0123456789ABCDEF";
cin>>m>>n;
//判断m是否是0
if(m == 0)
{
cout<<"0"<<endl;
}
bool flag = false;
//记录m是否是负数
if(m < 0)
{
m = -m;
flag = true;
}
//将m一位一位存储到s中
while(m != 0)
{
s = s + table[m%n];
m = m/n;
}
//处理m是负数情况
if(flag == true)
{
s += "-";
}
reverse(s.begin(), s.end());
cout<<s<<endl;
}