牛客网编程初学者入门训练4
BC29 2的n次方计算
描述
不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。
输入描述:
一行输入整数n,数据范围: 0 < = n < = 31 0 <= n <= 31 0<=n<=31
输出描述:
输出对应的2的n次方的结果。
示例1:
输入:
2
输出:
4
示例2:
输入:
10
输出:
1024
内心想法:
没用过移位运算,学!发现这篇博客说的比较清楚:
本题代码实现如下:
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
cout<<(1 << n)<<endl;
}
}
其中,(1 << n)输出的就是2的n次方。
BC34 进制A+B
描述
输入一个十六进制数a,和一个八进制数b,输出a+b的十进制结果(范围 -2 31 ~ 2 31 -1)。
输入描述:
一行,一个十六进制数a,和一个八进制数b,中间间隔一个空格。
输出描述:
一行,a+b的十进制结果。
示例1
输入:
0x12 05
输出:
23
备注:
十六进制Hexadecimal一般以0x开头,例如0xFF。八进制Octal,一般以0开头,例如07。
内心想法:
要注意在C++中cout或cin默认输出输入的都是十进制数字,只有加上hex(十六进制)、oct(八进制)后才能输入或输出要求的进制。
代码实现如下:
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>hex>>a>>oct>>b;
cout<<dec<<a + b<<endl;
}
BC35 判断字母
描述
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)。
输入描述:
输入包括一个字符。
输出描述:
输出该字符是字母(YES)或不是(NO)。
示例1:
输入:
H
输出:
YES
示例2:
输入:
9
输出:
NO
内心想法:
这本来应该是可以用ASCII码来做的,但是显得比较low,想装一下,就用个函数吧。
判断字母的函数可以用 isalpha() ,这个函数包含在这个头文件中:
#include<ctype.h>
这篇博客列了一些该头文件中包含的函数,很有意思:
此题代码实现如下:
#include<iostream>
#include<ctype.h>
using namespace std;
int main()
{
char a;
cin>>a;
if(isalpha(a))
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}
就eng装······
BC46 判断是元音还是辅音
描述
KiKi开始学习英文字母,BoBo老师告诉他,有五个字母A(a), E(e), I(i), O(o),U(u)称为元音,其他所有字母称为辅音,请帮他编写程序判断输入的字母是元音(Vowel)还是辅音(Consonant)。
输入描述:
多组输入,每行输入一个字母。
输出描述:
针对每组输入,输出为一行,如果输入字母是元音(包括大小写),输出“Vowel”,如果输入字母是非元音,输出“Consonant”。
示例1
输入:
A
b
输出:
Vowel
Consonant
内心想法:
第一想法当然是在 if 判断条件那里暴力把十个字母都列上,但是好不甘心,又想装了······
这里用一下string中自带的 find() 函数查找字符,真的很爽。
具体可以看看这篇博客:
代码实现如下:
#include<iostream>
using namespace std;
int main()
{
char ch;
string s = "AEIOUaeiou";
while(cin>>ch)
{
if(s.find(ch) != -1)
{
cout<<"Vowel"<<endl;
}
else
{
cout<<"Consonant"<<endl;
}
}
}