递归和while循环实现十进制转八进制

来源:互联网 发布:业务数据运维管理规范 编辑:程序博客网 时间:2024/06/05 11:21

代码一(运行正确)

#include<stdio.h>#include<stdlib.h>//递归实现10进制转2进制 void fun(int n){int count=0;if(n==0){return ;}else{fun(n/8);printf("%d",n%8);}}//非递归实现呢?while循环实现十进制转二进制void While(int n){printf("\nwhile实现十进制转八进制:\n"); int a[32];int p,q;//p代表余数变量,q代表 取得多少位余数 int i=0;while(n){p=n%8;//取余数a[i]=p;//依次把取得的余数保存在数组a中 n/=8;//除2 i++; //数组下标加1 q++;//统计存了多少位在数组中,但会儿会倒序输出数组的值从而得到10进制对应的2进制 }for(i=q-1;i>=0;i--){printf("%d",a[i]);//倒序输出 }printf("\n");} int main(){int n;scanf("%d",&n);printf("递归实现十进制转八进制:\n");fun(n); //似乎两次调用函数之间不能有换行???why??? //printf("\nwhile实现十进制转二进制:\n"); While(n);return 0;}


代码二(运行错误,不知为何)

#include<stdio.h>#include<stdlib.h>//递归实现 void fun(int n){if(n==0){return;}else{fun(n/8);printf("%d",n%8);}}//While循环实现十进制转八进制void While(int n){printf("\nwhile实现十进制转八进制:\n");int a[32];int p,q;//p代表余数变量,q代表 取得多少位余数 int i=0;while(n){p=n%8;//取余a[i]=p;//把余数存到数组中n/=8;//切记要除以8.不然运行时就没提示任何反应了 i++;//数组下标自增 q++;//统计多少个余数,待会儿逆序输出 }for(i=q-1;i>=0;i--){printf("%d",a[i]);}printf("\n"); } int main(){int n;scanf("%d",&n);printf("递归实现十进制转二进制:\n");//fun(n);While(n);return 0;}


0 0
原创粉丝点击