14 个解决方案
#1
str=""
while (数字>0)
{
temp 取 数字 模 8
str= chr(temp+48)+str
数字 置为 数字 除 8
}
Print "0"+Str 即为答案
自己可以转化成C程序吧
while (数字>0)
{
temp 取 数字 模 8
str= chr(temp+48)+str
数字 置为 数字 除 8
}
Print "0"+Str 即为答案
自己可以转化成C程序吧
#2
To SoftWare1999(Programmer) :
谢谢,但你这个解法不行,也许你误会了。我的意思是,假设int a = 750,那么要把int b 等于0750,不能用字符表示,要用整型。怎么才能把750转为0750啊?
谢谢,但你这个解法不行,也许你误会了。我的意思是,假设int a = 750,那么要把int b 等于0750,不能用字符表示,要用整型。怎么才能把750转为0750啊?
#3
整型中无法区别 750 和 0750 的
#4
刚才测试了一下,对于 int 类型,进制是没有内置效果的,只在 printf 和 scanf 的时候有不同的表示而已。测试程序:
#include <stdio.h>
int main()
{
int i = 0x0;
for (i = 0; i < 20; i++)
{
printf("%d\t", i);
}
for (i = 0; i < 20; i++)
{
printf("%o\t", i);
}
for (i = 0; i < 20; i++)
{
printf("%x\t", i);
}
system("PAUSE");
}
剩下的自己解决吧:)
#include <stdio.h>
int main()
{
int i = 0x0;
for (i = 0; i < 20; i++)
{
printf("%d\t", i);
}
for (i = 0; i < 20; i++)
{
printf("%o\t", i);
}
for (i = 0; i < 20; i++)
{
printf("%x\t", i);
}
system("PAUSE");
}
剩下的自己解决吧:)
#5
#include<math.h>
#include<stdio.h>
int main()
{
int a , b , n , tmp ;
a = 750 ;
n=0;
b=0;
while( a>=1 )
{
tmp = a - (a/10)*10 ;
b += tmp * (int)pow(8.0,n);
a/=10 ;
n++;
}
printf("=========> %d\n" , b);
return 0;
}
#include<stdio.h>
int main()
{
int a , b , n , tmp ;
a = 750 ;
n=0;
b=0;
while( a>=1 )
{
tmp = a - (a/10)*10 ;
b += tmp * (int)pow(8.0,n);
a/=10 ;
n++;
}
printf("=========> %d\n" , b);
return 0;
}
#6
那简单啊,先算出0750的十进制数为488,
然后k=488
printf("%o", k);
不就好了,只有打印效果,计算机内部是不分进制的,统统都是1,0啊
然后k=488
printf("%o", k);
不就好了,只有打印效果,计算机内部是不分进制的,统统都是1,0啊
#7
我的思路,先将十进制数化成八进制数,
在用sprintf函数,这个函数可以将你要的输出形式放到指定的字符数组里。你再输出这个字符数组就行了。如果你还不会,我晚上给一个例子。建议你先看看sprintf的功能说明。它的原型是
int sprintf(char*s ,const char* format,....)在用它之前应该为字符数组s开辟足够的空间
在用sprintf函数,这个函数可以将你要的输出形式放到指定的字符数组里。你再输出这个字符数组就行了。如果你还不会,我晚上给一个例子。建议你先看看sprintf的功能说明。它的原型是
int sprintf(char*s ,const char* format,....)在用它之前应该为字符数组s开辟足够的空间
#8
/* 750 ====> 488(0750) */
#include<math.h>
#include<stdio.h>
int main()
{
int a , b , n , tmp ;
a = 750 ;
n=0;
b=0;
while( a>=1 )
{
tmp = a - (a/10)*10 ;
b += tmp * (int)pow(8.0,n);
a/=10 ;
n++;
}
printf("=========> %d\n" , b);
return 0;
}
#include<math.h>
#include<stdio.h>
int main()
{
int a , b , n , tmp ;
a = 750 ;
n=0;
b=0;
while( a>=1 )
{
tmp = a - (a/10)*10 ;
b += tmp * (int)pow(8.0,n);
a/=10 ;
n++;
}
printf("=========> %d\n" , b);
return 0;
}
#9
偶再跟,完全一下:)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 750;
int j = 0;
char * cNum = (char*)malloc(512*sizeof(char));
sprintf(cNum, "%i", i);
sscanf(cNum, "%o", &j);
printf("%i", j);
system("PAUSE");
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 750;
int j = 0;
char * cNum = (char*)malloc(512*sizeof(char));
sprintf(cNum, "%i", i);
sscanf(cNum, "%o", &j);
printf("%i", j);
system("PAUSE");
}
#10
用%o输出就行了。
#11
嗯,本人需要在unix下做c开发,使用到系统调用chmod更改文件权限时需要传入八进制参数,因为不能以%o输出。
#12
有谁知道怎么把十进制的数转换为八进制?C或者UNIX系统调用有这个函数吗?
#13
我给你的那程序就能把十进转成相应的八进呀
比方说你的十进是750。我的程序能把它换成488。转成8进还是750。不是正好符合你的要求吗?
呵呵。给分吧。
比方说你的十进是750。我的程序能把它换成488。转成8进还是750。不是正好符合你的要求吗?
呵呵。给分吧。
#14
而且楼上的也对。方法比我这还简单
你用sprintf()把十进数750输入到一个临时的内存区中,再用sscanf()当成八进数读进来。这样你就得到了一个八进的750了呀。
建议楼主好好看看跟贴。
你用sprintf()把十进数750输入到一个临时的内存区中,再用sscanf()当成八进数读进来。这样你就得到了一个八进的750了呀。
建议楼主好好看看跟贴。
#1
str=""
while (数字>0)
{
temp 取 数字 模 8
str= chr(temp+48)+str
数字 置为 数字 除 8
}
Print "0"+Str 即为答案
自己可以转化成C程序吧
while (数字>0)
{
temp 取 数字 模 8
str= chr(temp+48)+str
数字 置为 数字 除 8
}
Print "0"+Str 即为答案
自己可以转化成C程序吧
#2
To SoftWare1999(Programmer) :
谢谢,但你这个解法不行,也许你误会了。我的意思是,假设int a = 750,那么要把int b 等于0750,不能用字符表示,要用整型。怎么才能把750转为0750啊?
谢谢,但你这个解法不行,也许你误会了。我的意思是,假设int a = 750,那么要把int b 等于0750,不能用字符表示,要用整型。怎么才能把750转为0750啊?
#3
整型中无法区别 750 和 0750 的
#4
刚才测试了一下,对于 int 类型,进制是没有内置效果的,只在 printf 和 scanf 的时候有不同的表示而已。测试程序:
#include <stdio.h>
int main()
{
int i = 0x0;
for (i = 0; i < 20; i++)
{
printf("%d\t", i);
}
for (i = 0; i < 20; i++)
{
printf("%o\t", i);
}
for (i = 0; i < 20; i++)
{
printf("%x\t", i);
}
system("PAUSE");
}
剩下的自己解决吧:)
#include <stdio.h>
int main()
{
int i = 0x0;
for (i = 0; i < 20; i++)
{
printf("%d\t", i);
}
for (i = 0; i < 20; i++)
{
printf("%o\t", i);
}
for (i = 0; i < 20; i++)
{
printf("%x\t", i);
}
system("PAUSE");
}
剩下的自己解决吧:)
#5
#include<math.h>
#include<stdio.h>
int main()
{
int a , b , n , tmp ;
a = 750 ;
n=0;
b=0;
while( a>=1 )
{
tmp = a - (a/10)*10 ;
b += tmp * (int)pow(8.0,n);
a/=10 ;
n++;
}
printf("=========> %d\n" , b);
return 0;
}
#include<stdio.h>
int main()
{
int a , b , n , tmp ;
a = 750 ;
n=0;
b=0;
while( a>=1 )
{
tmp = a - (a/10)*10 ;
b += tmp * (int)pow(8.0,n);
a/=10 ;
n++;
}
printf("=========> %d\n" , b);
return 0;
}
#6
那简单啊,先算出0750的十进制数为488,
然后k=488
printf("%o", k);
不就好了,只有打印效果,计算机内部是不分进制的,统统都是1,0啊
然后k=488
printf("%o", k);
不就好了,只有打印效果,计算机内部是不分进制的,统统都是1,0啊
#7
我的思路,先将十进制数化成八进制数,
在用sprintf函数,这个函数可以将你要的输出形式放到指定的字符数组里。你再输出这个字符数组就行了。如果你还不会,我晚上给一个例子。建议你先看看sprintf的功能说明。它的原型是
int sprintf(char*s ,const char* format,....)在用它之前应该为字符数组s开辟足够的空间
在用sprintf函数,这个函数可以将你要的输出形式放到指定的字符数组里。你再输出这个字符数组就行了。如果你还不会,我晚上给一个例子。建议你先看看sprintf的功能说明。它的原型是
int sprintf(char*s ,const char* format,....)在用它之前应该为字符数组s开辟足够的空间
#8
/* 750 ====> 488(0750) */
#include<math.h>
#include<stdio.h>
int main()
{
int a , b , n , tmp ;
a = 750 ;
n=0;
b=0;
while( a>=1 )
{
tmp = a - (a/10)*10 ;
b += tmp * (int)pow(8.0,n);
a/=10 ;
n++;
}
printf("=========> %d\n" , b);
return 0;
}
#include<math.h>
#include<stdio.h>
int main()
{
int a , b , n , tmp ;
a = 750 ;
n=0;
b=0;
while( a>=1 )
{
tmp = a - (a/10)*10 ;
b += tmp * (int)pow(8.0,n);
a/=10 ;
n++;
}
printf("=========> %d\n" , b);
return 0;
}
#9
偶再跟,完全一下:)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 750;
int j = 0;
char * cNum = (char*)malloc(512*sizeof(char));
sprintf(cNum, "%i", i);
sscanf(cNum, "%o", &j);
printf("%i", j);
system("PAUSE");
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 750;
int j = 0;
char * cNum = (char*)malloc(512*sizeof(char));
sprintf(cNum, "%i", i);
sscanf(cNum, "%o", &j);
printf("%i", j);
system("PAUSE");
}
#10
用%o输出就行了。
#11
嗯,本人需要在unix下做c开发,使用到系统调用chmod更改文件权限时需要传入八进制参数,因为不能以%o输出。
#12
有谁知道怎么把十进制的数转换为八进制?C或者UNIX系统调用有这个函数吗?
#13
我给你的那程序就能把十进转成相应的八进呀
比方说你的十进是750。我的程序能把它换成488。转成8进还是750。不是正好符合你的要求吗?
呵呵。给分吧。
比方说你的十进是750。我的程序能把它换成488。转成8进还是750。不是正好符合你的要求吗?
呵呵。给分吧。
#14
而且楼上的也对。方法比我这还简单
你用sprintf()把十进数750输入到一个临时的内存区中,再用sscanf()当成八进数读进来。这样你就得到了一个八进的750了呀。
建议楼主好好看看跟贴。
你用sprintf()把十进数750输入到一个临时的内存区中,再用sscanf()当成八进数读进来。这样你就得到了一个八进的750了呀。
建议楼主好好看看跟贴。