#include <stdio.h> #include <stdlib.h> int b[100];//存放n的二进制位,注意是逆序存放 /*求出n的二进制数,并返回二进制位数的个数,个数用k来记录*/ int binary(int n) { int k=0; while(n!=0) { b[k]=n%2; n=n/2; k++; } return k; } int left_right_exp(int a,int k)//k是n的二进制位数 int main() { int n,a; scanf("%d%d",&a,&n); int k=binary(n); int i; /*逆序打印n的二进制数*/ // for(i=0;i<k;i++) // { // printf("%d\t",b[i]); // } printf("%d",left_right_exp(a,k)); return 0; } 补全代码
时间: 2024-01-15 18:04:53 浏览: 43
好的,下面是补全后的代码,其中缺失的 `left_right_exp` 函数已经实现:
```c
#include <stdio.h>
#include <stdlib.h>
int b[100];//存放n的二进制位,注意是逆序存放
/*求出n的二进制数,并返回二进制位数的个数,个数用k来记录*/
int binary(int n) {
int k = 0;
while (n != 0) {
b[k] = n % 2;
n = n / 2;
k++;
}
return k;
}
/*计算a^n的结果*/
int left_right_exp(int a, int k) {
int result = 1;
for (int i = k - 1; i >= 0; i--) {
result = result * result;
if (b[i] == 1) {
result = result * a;
}
}
return result;
}
int main() {
int n, a;
scanf("%d%d", &a, &n);
int k = binary(n);
printf("%d", left_right_exp(a, k));
return 0;
}
```
输入示例:
```
2 10
```
输出示例:
```
1024
```
希望能够帮到你!