【编程】华为机考-求int型正整数在内存中存储时1的个数,数字颠倒,取近似值,

【编程】华为机考

时间: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;
}

解释:强行取整

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值