用c语言的函数调用如何将一个十进制数转换为八进制数?

作者&投稿:宇贞 (若有异议请与网页底部的电邮联系)
C语言程序怎么把十进制的数转换成八进制的数?~

C语言程序十进制的数转换成八进制的数的办法:
#include #include void main(){int n,a,sum = 0,i =0;printf("十进制输出一个数n
");scanf("%d",&n);while(n){a = n%8;n = n/8;sum += a*pow(10,i);i++;}printf("八进制输出sum:%d",sum);}

#include
#include
#include "stdlib.h"
#include
#define size 100
//定义一个栈
typedef struct
{
int x[size];
int top ;
}stack;
//栈初始化
void init(stack &p){
p.top=0;
}
//入栈
int push(stack &p,int &e){
if (p.top<size)
{
p.x[p.top++]=e;
return 1;
}
return 0;
}
//出栈
int pop(stack &p,int &e){
if (p.top>0)
{
e=p.x[--p.top];
return 1;
}
return 0;
}
//将 n进制数据转化为十进制表示
void td(char s[],int n,int &num){
char *p;
int e;
p=s;
num=0;
while(*p){
if(*p>='A') //16 进制转化
e=*p-'A'+10;
else
e=*p-'0';
p++;
num=num*n+e;
}
}
//将十进制转化为 m 进制
void tp(int num,int m,char s[]){ //
int n=0,e;
char *p;
stack b; init(b);
p=s;
while(num){ //将十进制数据逐位分离 压入栈中 此时 数据为倒序
n=num%m;
if(n>9)
e=n-10+'A';
else
e=n+'0';
push(b,e);
num/=m;
}
while(pop(b,e)){ //从栈中取出元素,存入数组 s 中 此时 数据为顺序
*p=e;
p++;
}
*p='\0'; //在数组 尾部加结束标志
}


int check(char s[],int n){
char *p;
p=s;
if(n<=10){
while(*p){
if(*p-'0'>n)
return 1;
p++;
}
}
else if(n>10){
while(*p){
if(*p>='A'&&*p-'A'+10>n)
return 1;
p++;
}
}
return 0;
}


void trans(char s[],int n,int m){
int *p,num;
td(s,n,num);
s[0]='\0';
tp(num,m,s);
}
void main(){
int n,m;
char s[size],c;
int fp=1; //是否结束的标志
do{
puts("数据的各个进制之间的转化
");
s[0]='\0'; //数组初始化
printf("
输入一个数据: "); gets(s); //读入数据 字符串型
printf("\b输入原来的进制 和 要转化的进制, 如 10-2 : ");
scanf("%d%c%d",&n,&c,&m); //读入 进制转化 由 n进制转化为 m进制 输入形式 如:10-2 16-2
if(check(s,n)) { //判断是否合法
printf("
错误 !输入的数据与进制不相配, 按任意键,继续输入。");
getch();
}
else{
printf("
结果
%d 进制 : %s ",n,s);
trans(s,n,m);//转化
printf("
%d 进制 : %s

",m,s); //输出 数据 字符串型
printf("继续输入 1, 退出输入 0: ");
scanf("%d",&fp);
}
c=getchar(); //读取 回车键
system("cls");
}while(fp);
}

  1. 10进制转换8进制输出,使用printf函数的格式输出%o即可。如果需要得到转换后的字符串,使用sprintf函数即可。

  2. 例程:

    #include <stdio.h>
    int main (){
      int x;
      char s[100];
      printf("输入要转换的十进制数:
    ");
      scanf("%d",&x);
      sprintf(s,"%o",x); //十进制转换为八进制,并保存到s字符串当中
      printf("使用sprintf函数转换的八进制数是:%s
    ",s)
      printf("使用printf函数转换的八进制数是:%o
    ",x); //十进制转换为八进制,并直接输出到屏幕
      return 0;
    }


**
程序功能:求二进制,十进制,八进制
创建人:蒲宇林
创建日期:2007年8月13日
**/
#include <stdio.h>
void two();
void eight();
void sixteen();

/**主函数**/
void main()
{
int select;
do
{
printf("0 - 退出,1 - 十进制转二进制,2 - 十进制转八进制,3 - 十进制转十六进制");
scanf("%d",&select);
switch(select)
{
case 1 : two(); break; //十进制转二进制
case 2 : eight(); break; //十进制转八进制
case 3 : sixteen(); break; //十进制转十六进制
default : printf("您的输入有误,请重新输入!"); break;
}
if(select == 0)
{
break;
}
}while(1);
}
void two()
{
int num, i;
int arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for( i = 0 ; 1 ; i++) //转换为二进制并存入数组
{
arr[i] = num % 2;
num = num / 2;
if(num == 0)
{
break;
}
}

printf("转换为二进制:"); //打印
for(; i >= 0 ; i-- )
{
printf("%d",arr[i]);
}
printf("\n");
}
void eight()
{

int num, i;
int arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for( i = 0 ; 1 ; i++) //转换为八进制并存入数组
{
arr[i] = num % 8;
num = num / 8;
if(num == 0)
{
break;
}
}

printf("转换为八进制:"); //打印
for(; i >= 0 ; i-- )
{
printf("%d",arr[i]);
}
printf("\n");
}
void sixteen()
{

int num, i;
int arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for( i = 0 ; 1 ; i++) //转换为二进制并存入数组
{
arr[i] = num % 16;
num = num / 16;
if(num == 0)
{
break;
}
}

printf("转换为十六进制:"); //打印
for(; i >= 0 ; i-- )
{
switch(arr[i])
{
case 10 :
printf("A");
break;
case 11 :
printf("B");
break;
case 12 :
printf("C");
break;
case 13 :
printf("D");
break;
case 14 :
printf("E");
break;
case 15 :
printf("F");
break;
default :
printf("%d",arr[i]);
}
}
printf("\n");
}

只要输出的时候让VC输出八进制数%o就好了

#include<stdio.h>
void main()
{
int num;
while(scanf("%d",&num)!=EOF)
{
printf("%o\n",num);
}
}


C语言中函数调用是什么意思,调用有什么作用?
这样的效果是:重复利用了函数的代码,节省程序的代码量(尤其是计算公式很复杂的情况更突出),程序简洁易读,便于统一修改计算公式和方法。还有一个优点就是:你调用函数时,无须知道算法的细节,按照函数调用规则就可以使用了,比如,标准c提供的函数double sin(double x),你只要知道这是个计算正弦函数值...

c语言中怎么调用函数?
main { printf("haha");\/*这时main函数为主调函数,printf为被调函数*\/ } 调用自定义函数时其实和调用库函数一样的,只不过这个函数是你自己定义的,再如:main { void f();\/*声明 f()函数*\/ f(); \/*调用f()函数*\/ } f(){ printf("haha");\/*f()函数调用库函数*\/ } ...

c语言中如何一个函数的多次调用
一个函数只能有一个返回值,指针可以返回多个,例如:void aaa(){ int *a,*c;int a,c;a=a;*c=c;a=b();c=b();} 下面调用 *a和*c.

C语言里sin函数和cos函数的调用
C语言里sin函数和cos函数是C标准数学函数库中的函数,调用需要引入math.h头文件。一、sin() 函数描述:C 库函数 double sin(double x) 返回弧度角 x 的正弦。sin() 函数的声明:double sin(double x)。参数:x -- 浮点值,代表了一个以弧度表示的角度。返回值:该函数返回 x 的正弦。二、cos...

c语言中函数的调用
\/ { 这里就是函数的主体,像算法什么的 } 一般来说在主函数中是要对自定义的函数进行声明的,但是当你自定义的函数在主函数前的话,可以不声明。还有函数的类型有一种是不需要返回值的,加了RETURN反而是语法错误,但其他的函数都可以用RETURN来返回~~~多看看书,多想想,多练练。C很简单的~~...

c语言宏定义函数如何调用?
直接调用即可。如下示例:include<stdio.h>#define sum(b,c){int d=0;d=b+c;printf("两者的和:%d\\n",d);}int main(){ int x=0,y=0; scanf("%d%d",&x,&y); sum (x,y); return 0;}使用宏函数或者宏函数时,注意如下几点:(1)宏函数的参数没有类型,预处理器...

c语言三角函数怎么用?
开头必须有一个数学函数库 #include<math.h> 然后一般常用的sin(x)cos(x)tan(x)其中的x必须要以弧度为单位。如果以“度”为单位,比如说求30度的正弦值,要用sin(x*180\/3.1415926)的形式arcsin(x)arccos(x)arctan(x)arccot(x)以上四个则是相应的反三角函数,函数值的单位也是弧度。若要求...

C语言中,是否可以调用其它文件的函数?
在A2.c中:有函数void A2(){...};。在A1.c中:在文件前头增加一行:void A2();就可以了。2、把A2.c中完整定义的函数的原型,写到一个A2.h文件中,然后在A1.c的文件头增加#include "A2.h"就可以了。以上两种方法,在A1.c中都可以正常的调用,就跟在A2.c中调用一样。其实函数默认是...

c语言宏定义函数如何调用(里面含参数可以当函数用吗)
直接调用即可。如下示例:include<stdio.h>#define sum(b,c){int d=0;d=b+c;printf("两者的和:%d\\n",d);}int main(){ int x=0,y=0; scanf("%d%d",&x,&y); sum (x,y); return 0;}

c语言中main函数中的函数怎么调用函数?
f();其中, f是函数f的函数名, 但对于编译器来讲, f是一个地址, 它指向了f函数代码段的开头部分.而()是一个运算符, 它非常类似于*, 但是*是取值的, 而()是让程序跳转到f处执行程序. 最后的那个分号就是标识着一个语句的结束 如果f有一个整型的参数, 那么需要这样调用:f(1);只是多了一...

贵南县18546165650: C语言:编写一个函数,其功能是将一个十进制正整数转换成任意进制整数,并输出转换结果? -
集涛欣舒: #include "stdio.h" #include "stdlib.h" main() { int n,x=0,a[100]; printf("请输入转换的数和进制:\n"); scanf("%d",&n); while(n){ a[x++]=n%2; n/=2; } --x; while(x>=0) printf("%d",a[x--]); printf("\n"); system("pause"); } 再送你一个进...

贵南县18546165650: 要求用c语言的函数调用如何将一个十进制数转换为八进制数 -
集涛欣舒: ** 程序功能:求二进制,十进制,八进制 创建人:蒲宇林 创建日期:2007年8月13日 **/ #include void two(); void eight(); void sixteen(); /**主函数**/ void main() { int select; do { printf("0 - 退出,1 - 十进制转二进制,2 - 十进制转八进制,3 - ...

贵南县18546165650: C语言如何将一个数字组成的字符串转变成十进制数 -
集涛欣舒: 办法很多,提供三种供参考. 一、直接使用库函数atoi将数字字符串转换成十进制整数.代码如下: #include "stdio.h" #include "stdlib.h"//调用库函数atoi要包含这个文件 int main(int argc,char *argv[]){char a[]="478167831";printf("%d\n",...

贵南县18546165650: C语言用函数的递归调用将十进制数转化为二进制数 -
集涛欣舒: #include<stdio.h> #define n 20 void change2(int t) { //将十进制数转换到存放二进制的数组中int i;int b[n]={0};for(i=0;i<20;i++){b[i]=t%2;t=t/2;}for(i=n-1;i>=0;i--){printf("%d",b[i]);}printf("\n"); }void main(){int demo;printf("请输入一个十进制数:");scanf("%d",&demo);change2(demo); }

贵南县18546165650: 如何用C语言编写函数实现输入一个十进制数, 将其转换成二进制数并输出? -
集涛欣舒: #include stdio.h #include math.h void main() { int n,a[100],i; printf("请输入"); scanf(&n); i=0; while(n>0) { a[i]=n%2; i=i+1; n=n/2; } for(j=i-1;j>-1;;j--) printf("%d",a[j]); }

贵南县18546165650: C语言!!!编写三个函数,根据输入的一个十进制的数,分别输出对应 -
集涛欣舒: # include<stdio.h>//函数声明 void B(int n);//二进制 void Q(int n);//八进制 void H(int n);//十六进制 int main(void) { int n; printf("请输入十进制数n:\n"); scanf("%d",&n); B(n); printf("\n"); Q(n); printf("\n"); H(n); return 0; } void B(int n) ...

贵南县18546165650: C语言,编一程序用递归函数,把输入的一个十进制整数转换成二进制数输出 -
集涛欣舒: #include<stdio.h> void main() { int i,a; printf("输入十进制整数,看其二进制形式:\n"); scanf("%d",&a); for(i=31;i>=0;i--) printf("%2d",a>>i&1); printf("\n"); }

贵南县18546165650: 用函数调用的方式将二进制转换成十进制的c语言 -
集涛欣舒: #include <stdio.h>long long int conv(char b[]) {long long int d=0;int i=0;while(b[i++])d=d*2+b[i-1]-'0';return d; }int main() {char b[64];printf("二进制数:");gets(b);printf("十进制数:%lld\n",conv(b));return 0; }

贵南县18546165650: 请问怎样用C语言的函数实现将十六转十进制?(在线) -
集涛欣舒: 以下程序已通过调试先读入16进制的字符串(0到9以外可以用小写也可以用大写)hextoten函数把字符串转成10进制并输出.#include <stdio.h>#include <string.h>void hextoten(char h[]){ int a,b,i; for (a=0,i=0;i<strlen(h);i++) { a*=16; if (h[i]>='0'&&h[i...

贵南县18546165650: c语言设计,输入一个十进制数,将其转换成N进制数(0<N<=16) -
集涛欣舒: 最简单的,不涉及算法的作法就是用printf的输出格式 %x 输出16进制%x 输出小写的a、b、c、d、e、f %X输出大写的A、B、C、D、E、F#include"stdio.h" int main() { int a; printf("请输入一个10进制整数:" ); scanf( "%d", &a); printf("该数转换为16进制数为: %X\n",a); return 0; }以下是运行结果:

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网