初始代码:
#include <stdio.h>
int main() {
int first;
int second;
scanf("%d+%d", &first, &second);
printf("=%d", first + second);
return 0;
}
修改后:
#include <stdio.h>
int main() {
int first;
int second;
char operator;
scanf("%d%c%d", &first,&operator, &second);
if(operator == '+'){
printf("=%d",first + second);
}
else if(operator == '-'){
printf("=%d",first - second);
}
else if(operator == '*'){
printf("=%d",first * second);
}
else if(operator == '/'){
printf("=%d",first / second);
}
else(operator == '%'){
printf("=%d",first % second);
}
return 0;
}
C ++版本:
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b; // 运算的整数
char op; // 操作符,+ - * / % 均是字符
cin >> a >> op >> b; // 注意输入的顺序
switch (op) {
// switch 语句的常量表达式可以是字符型
case '+': // 若 op == '+',则输出 a + b 的值
cout << a + b;
break; // 记得要 break
case '-': // 若 op == '-',则输出 a - b 的值
cout << a - b;
break; // 记得要 break
case '*': // 若 op == '*',则输出 a + b 的值
cout << a * b;
break; // 记得要 break
case '/': // 若 op == '/',则要先判断除数是否为 0
// 若除数为 0,则输出 Error,否则输出 a / b 的值
if (b == 0) cout << "Error";
else cout << a / b;
break; // 记得要 break
case '%': // 若 op == '%',则输出 a % b 的值
cout << a % b;
break; // 记得要 break
default: // 若是其他符号,则输出 Invalid operator
cout << "Invalid operator";
}
return 0;
}
根据用户的输入整数判断整数的二进制里含有多少个1
/*
根据用户的输入整数判断整数的二进制里含有多少个1
*/
#include<iostream>
using namespace std;
int main()
{
int count=0;//计数
int number;
printf("please input a number");
cin>>number;
for(;number;number=number>>1)
{
if (number&1==1)
count++;
}
cout<<count<<endl;
return 0;
}
怎样判断一个整数的二进制表示有几个1(或0)
作者:mrbean
来源:https://www.cnblogs.com/mrljc/archive/2014/01/20/3527576.html
看到这个问题我们的第一反应就是根据二进制的位直接统计,这也是我已开始想到的,于是有了如下代码
image
这份代码的逻辑很清晰,就是将这个数慢慢的移,每一位都进行判断最终得出结果,乍一看没什么错误。并且进行测试会发现对于正整数它运行的非常好,没有什么错误,但是我们尝试一下负整数就会发现他有巨大的问题。
这里首先要提一下,计算机对负数的存储是按照其正数的补码表示的,所以进行这种简单的移位判断就不可避免的会出现错误。
这里我们就要提到第二中解法,这种方法不金额以解决负数的问题,而且可以提高算法的效率。先看代码:
image
这种解法的精髓就在image这个操作上面,我们首先要考虑x和x-1的二进制的差别在哪,我们列出几个
扫描二维码关注公众号,回复:
13130085 查看本文章

image
从这些例子我们不难发现,这两个数存在着这么一个关系:x的最后一个一变成了零,其后(可能没有)的零变成了一。于是我们可以发现只要将两个数进行与操作,那么最后一个一以及它后面的就都置零了,通过判断可以进行多少次这样的操作就可以知道有多少个一。
判断有多少零只需要将判断改一下就好。