在zhuanhuan函数中,你声明了一个静态变量i,用来记录二进制数的位数。但是每次调用zhuanhuan函数时,都会重新声明一个新的i,而不是继续使用之前的i。为了解决这个问题,你可以将i声明为全局变量,或者将i作为参数传递给zhuanhuan函数。

另外,在zhuanhuan函数中,你创建了一个大小为20的数组a来存储二进制数的每一位。然而,这个数组在每次函数调用时都是全新的,所以你无法在递归的过程中保存每一位的值。为了解决这个问题,你可以将数组a声明为全局变量,或者将a作为参数传递给zhuanhuan函数。

最后,在for循环中,你使用了变量x来遍历数组a。然而,变量x的作用范围只在for循环中,所以你无法在for循环外面访问到x的值。为了解决这个问题,你可以将x声明为全局变量,或者将x作为参数传递给zhuanhuan函数。

下面是修改后的代码示例:

#include<stdio.h>

int i = 0; int a[20] = {};

void zhuanhuan(int p) { if((p/2)!=0) { a[i]=p%2; i++; zhuanhuan(p/2); } else { printf("二进制数: "); } for(int x=0;x<i;x++) { printf("%d",a[x]); } }

int main() { int n; printf("请输入一个正整数: "); scanf("%d",&n); zhuanhuan(n);

#includestdiohvoid zhuanhuanint p static int i=0; int a20=; ifp2!=0 ai=p2; i++; zhuanhuanp2; else printf二进制数 ; forint x=0;xi;x++ p

原文地址: https://www.cveoy.top/t/topic/hZa2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录