【编程】华为机考
时间:20180716
题目来源:牛客网
整理出来方便在app复习使用
一.求int型正整数在内存中存储时1的个数
题目描述
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
PYTHON:
print(bin(int(input())).count("1"))
把输入的数据先取整数,使用bin()函数二进制转化,count()函数计算“1”的个数,使用print()函数输出
C++:
#include<iostream>
using namespace std;
int main(){
int n=0,i=0;
int count=0;
int a[65500]={0};
//输入N
cin>>n;
//把十进制的n转化成二进制
while(n) {
a[i]=n%2;
n=n/2;
i++;
}
for(i=0;i<65500;i++){
if(a[i]==1)
count++;
}
//把cout和endl之间的数值输出
cout<<count<<endl;
return 0;
}
C语言:
#include<stdio.h>
int main(){
int n=0,i=0;
int count=0;
int a[65500]={0};
scanf("%d",&n);
while(n) {
a[i]=n%2;
n=n/2;
i++;
}
for(i=0;i<65500;i++){
if(a[i]==1)
count++;
}
printf("%d",count);
return 0;
}
C语言和C++只有输入输出稍作改动,并且不用判断数据类型,感觉方便好多~
PS:有时间的话学习C++
二.数字颠倒
描述:
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
输入描述:
输入一个int整数
输出描述:
将这个整数以字符串的形式逆序输出
示例
输入 1516000
输出 0006151
PYTHON:
a=list(input())
a.reverse()
print("".join(a))
解析:
python中列表有join()函数
join() 链接列表中的字符串
设置连接方式
L=['my','name','is','Alice']
print(' '.join(L))
>> my name is Alice
意思就是用“ ”(空格)把列表中的字符串链接起来。
C语言:
#include<stdio.h>
int main(){
int a;
scanf("%d",&a);
while(a>0){
printf("%d",a%10);
a=a/10;
}
return 0;
}
解释:使用取余数和取整数的方式,默认输入是正整数。
C++:字符反转
#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
cin>>str;
for (int i=str.size()-1;i>=0;i--){
cout<<str[i];
}
return 0;
}
解释:如果是字符串类型,之前取余的方法不使用,就选择string函数以及字符串长度函数--》str.size()。
C++:进阶-如果中间有空格
#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
getline(cin,str);
for(int i=str.size()-1;i>=0;i--){
cout<<str[i];
}
return 0;
}
解释:
C++中cin,cin.getline(),getline()的用法:
1.cin>>
用法1:输入一个数字或字符
用法2:接收一个字符串,遇“空格”、“TAB”、“回车”就结束
2.cin.getline()
用法:接收一个字符串,可以接收空格并输出
char m[20];
cin.getline(m,5);//接收5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;
3.getline()
用法:接收一个字符串,可以接收空格并输出,需包含“#include<string>”
string str;
getline(cin,str);
三.取近似值
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
输入描述:
输入一个正浮点数值
输出描述:
输出该数值的近似整数值
PYTHON:
import math
a=float(input())
print(round(a+0.05))
解释:使用float函数,使用浮点数,引入math;模块,
C++语言:
#include<iostream>
using namespace std;
int main(){
float n;
cin>>n;
cout<<int(n+0.05);
return 0;
}
解释:强行取整