给你一个正整数 � ( 1 ≤ � ≤ 100 ) A(1≤A≤100),输出 � A 的最低数。 例如,给你 � = 26 A=26,我们可以将 � A 化成二进制为 11010 11010,则 � A 的最低数是 10 10,输出 10 10 的十进制为 2 2。 再例如,给你 � = 88 A=88,我们可以将 � A 化成二进制为 1011000 1011000,则 � A 的最低数是 1000 1000,输出为 8 8。 输入格式 输入包含多组测试样例。每行输入一个正整数 � ( 1 ≤ � ≤ 100 ) A(1≤A≤100)。当输入 0 0 时,输入结束。 输出格式 对于每一个输入,输出对应的最低数。#include<iostream> using namespace std; int n, m, k[1000],k2[2000],j=0; int main() { while(cin>>n&&n!=0) { int a=0, b=0, c=1; for (int i = 0; i <6; i++) { m = n % 2; a = n / 2; n = a; k[i] = m; } for (int i = 5; i >= 0; i--) if (k[i] == 1) b = i; if (b == 0) cout << "1" << endl; else { for (int i = 0; i < b; i++) c *= 2; cout << c << endl; } } return 0; }哪里错了
时间: 2024-04-15 19:31:53 浏览: 198
这段代码的问题是,它只能处理包含最多6位二进制数的情况,而题目要求处理的是1到100之间的整数,可能包含更多位的二进制数。你需要修改代码以适应更大的输入范围。
下面是修改后的代码:
```cpp
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin >> n && n != 0)
{
int lowest_bit = n & -n;
cout << lowest_bit << endl;
}
return 0;
}
```
这样修改后的代码会正确计算给定整数的最低位,并输出结果。
相关问题
用C语言完成题目描述 给定n � 个整数的序列A1、A2、...、An � 1 、 � 2 、 . . . 、 � � ,然后给出一个整数x � ,求x � 在序列中出现的次数。 输入描述 第一行为一个正整数n � (1≤n≤20 1 ≤ � ≤ 20 ); 第二行为用空格隔开的n � 个整数(1≤Ai≤100 1 ≤ � � ≤ 100 ); 第三行为一个正整数x � (1≤x≤100 1 ≤ � ≤ 100 )。 输出描述 输出x � 在序列中出现的次数。
以下是C语言代码实现:
```
#include <stdio.h>
int main()
{
int n, a[20], x, count = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &x);
for (int i = 0; i < n; i++)
{
if (a[i] == x)
{
count++;
}
}
printf("%d", count);
return 0;
}
```
代码思路:首先输入n和序列a,然后输入目标数x。遍历序列a,如果发现有数等于目标数x则计数器count加1。最后输出count即可。
C语言解决题目描述 给定n � 个整数的序列A1、A2、...、An � 1 、 � 2 、 . . . 、 � � ,然后给出一个整数x � ,求x � 在序列中的下标。 输入描述 第一行为一个正整数n � (1≤n≤20 1 ≤ � ≤ 20 ); 第二行为用空格隔开的n � 个整数(1≤Ai≤100 1 ≤ � � ≤ 100 ),每个整数确保唯一; 第三行为一个正整数x � (1≤x≤100 1 ≤ � ≤ 100 )。 输出描述 输出x � 在序列中的下标。如果序列中不存在x � ,那么输出NO。
可以使用数组来存储这个整数序列,然后遍历整个数组,查找是否有与给定整数x相等的元素,如果有,则输出该元素的下标,否则输出NO。
下面是C语言的代码实现:
```c
#include <stdio.h>
int main()
{
int n, x, i;
int a[20];
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &x);
for (i = 0; i < n; i++)
{
if (a[i] == x)
{
printf("%d\n", i + 1);
return 0;
}
}
printf("NO\n");
return 0;
}
```
输入样例:
```
5
1 2 3 4 5
3
```
输出样例:
```
3
```
阅读全文