用C或者C++编程,输入一个10进制正整数,然后输出它所对应的八进制、十六进制数。(不能直接用%0和%x来输出
可以参考下面的代码:
#include
int main(int argc, char* argv[])
{
int num;
scanf("%d",&num);
printf("%o",num);
return 0;
}
扩展资料:
C语言log()函数:返回x的自然对数(以e为底的对数)
C语言ldiv()函数:求两个数的商和余数(针对long类型)
C语言ceil()函数:求不小于x的最小整数(向上取整)
C语言floor()函数:求不大于x的最大整数(向下取整)
C语言fabs()函数:求双精度浮点数的绝对值
int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')
参考资料来源:百度百科-C语言函数
参考资料来源:百度百科-c语言
#include "Stdio.h"
#include "Conio.h"
main()
{ int a;
scanf("%d",&a);
printf("%x,%o",a,a);
getch();
}
%x 无符号以十六进制表示的整数
%0 无符号以八进制表示的整数
#include<stdio.h>
#include<math.h>
void main()
{
int i=0,n,j,a[20],b[20],k,c=0;
double m,x,d;
printf("请输入需要转换的数:");
scanf("%lf",&x);
printf("请输入要转换成的进制(1<N<=16):");
scanf("%d",&n);
if(x<0)
m=fabs(x);
else
m=x;
k=(int)m;//强制类型转换,可以使用k=(int)m;代替,从而更加的一目了然
while(k)//判定需要转换的数是否变为0
{
a[i++]=k%n;//取余,进行进制转换,但是顺序与正确值相反
k/=n;//转换一位之后进行相应的变化
}
if(m!=(int)m)//选择性计算,如果是整数就不用进行这一步的计算了,这样可以节约程序的运行时间
{
d=m-(int)m;//取小数部分
while(d!=0)
{
b[c]=(int)(d*n);//算法为×N取整
d=d*n-b[c];
c++;
if(c>=10)
break;//主要是控制小数后面万一出现无限小数的时候好跳出循环以免出现死循环
}
}
printf("转换结果为:");
if(x<0)
printf("-");
for(j=i-1;j>=0;j--)//反序输出,大于10的数字进行相应的变化
{
if(a[j]==10)
printf("A");
else
if(a[j]==11)
printf("B");
else
if(a[j]==12)
printf("C");
else
if(a[j]==13)
printf("D");
else
if(a[j]==14)
printf("E");
else
if(a[j]==15)
printf("F");
else
printf("%d",a[j]);
}
if(m!=(int)m)//选择性输出,这样可以节约输出时间和程序的运行时间
{
printf(".");
for(j=0;j<c;j++)//正序输出
{
if(b[j]==10)
printf("A");
else
if(b[j]==11)
printf("B");
else
if(b[j]==12)
printf("C");
else
if(b[j]==13)
printf("D");
else
if(b[j]==14)
printf("E");
else
if(b[j]==15)
printf("F");
else
printf("%d",b[j]);
}
}
if(c>=10)//如果是无限小数则在后以省略号表示
printf("......");
printf("\n");//输出换行,以使程序的输出结果美观
}
这个要自己写函数来转换 因为系统可以用格式化输出来输出 所以没必要自己写
#include<iostream.h>
#include<math.h>
int main()
{
char ch[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}, output[20];
int input,temp,n,i=0;
cout<<"请输入你想要转换的十进制数:";
cin>>input;
cout<<"请输入要转换的进制(2<=n<=16):";
cin>>n;
input=fabs(input);
while(input)
{
temp=input%n;
input=input/n;
output[i++]=ch[temp];
}
output[i]='\0';
cout<<"转换为"<<n<<"进制后为:";
for(;i>=0;i--)
cout<<output[i];
cout<<endl;
return 0;
}
#include<stdio.h>
#include<stdlib.h>
void main()
{
int num;
char str1[33],str2[33];
printf("十进制数:");
scanf("%d",&num);
itoa(num,str1,8);
itoa(num,str2,16);
printf("转化结果:\n八进制:%s, 十六进制:%s\n",str1,str2);
}
解题技巧: 用 itoa()和atoi() 两个库函数。
注:
1.itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是目标字符串,第三个参数是转移数字时所用的基数。在上例中,转换基数为2。2:十进制;10:十进制。
2.itoa(num, str, 2); 的作用是将num这个数以二进制形式的字符串形式存放在str指向的内存中。
如:itoa(10, str, 2);转化后str中字符串是“ 0001010”,10D=0001010B。
(后缀D、B分别代表十进制、二进制)
3.itoa(num, str, 10); 的作用是将num这个数以十进制形式的字符串形式存放在str指向的内存中。
如:itoa(10, str, 2);转化后str中字符串是“10”,10D = 10D。
4.使用itoa()函数时别忘记加头文件 #include<stdlib.h>
自己求好了啊~
输入一个十进制整数,输出其对应的二进制数,用C语言的函数知识。_百度知 ...
#include<stdio.h> int main(){ int i,j,n,m=-1,a[16];printf("请输入十进制数");scanf("%d",&n);while(n!=0){ i=n%2;a[++m]=i;n=n/2;} for(j=m;j>=0;j--)printf("%d",a[j]);return0;} ...
C++ 如何将一个十进制的整数按逆序输出.即若输入156,则输出651.
include<iostream.h> void main(){ int a,b;cout<<"input a number:"<<endl;cin>>a;while(a!=0){ b=a%10;cout<<b;a=a\/10;} cout<<endl;}
输入一个十进制的正整数,将该数转换成n进制数,并输出。
;i++){ b=t%r;if(b>=10)a[i]=c[b-10];else a[i]=b+'0';t=(t-b)\/r;if(t==0)break;} if(n<0)printf("-");for(;i>=0;i--)printf("%c",a[i]);printf("\\n");return 0;} 测试数据:输入 7 2 输出 111 输入 23 12 输出 1B 输入 -4 3 输出 -11 ...
用C语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制...
static char *FIFTNARY = "0123456789ABCDE";static char buff[10];char *toQuinary(int num);char *toOctonary(int num);char *toFifnary(int num);char *reverse(char *str);int main(void){ int flag = 1;int num = 0;int choice = 0;while(flag){ printf("请输入一个三位数:");...
C++编程:输入一个长度最多为10的字符串,把其中所有的数字字符凑成一个...
DEV-CPP 5.4 C++环境,通过编译运行 include<cstdio>int main(){char a[1024],b[1024];gets(a);int c=0;for(int i=0;a[i]!='\\0';i++){if(a[i]>='0'&&a[i]<='9') b[c++]=a[i];}if(c==0){putchar('0');return 0;}b[c]='\\0';puts(b);return 0;} ...
用c程序编写一个10!
#include <stdio.h> int main(){ long i,r=1;for(i=1;i<11;i++)r*=i;printf("10!=%ld\\n",r);return 0;} 输出
C语言 从键盘输入一个十进制整型数据,计算并输出其各位上数字之和(忽...
printf("输入一个数字:"); scanf("%d",&i); if(i<0) i=-i; while(i>=10) { sum+=i%10; i\/=10; } sum+=i; printf("各位之和为%d\\n",sum);} 本回答由电脑网络分类达人 系统推荐 举报| 答案纠错 | 评论 7 0 zelon19890311 采纳率:61% 来自团队:电脑软硬件 擅长: 编程语言 出国\/留学...
C语言编程序,要求从键盘输入10个整数存入一维数组。。
include<stdio.h> main(){ int a[10];int i,j,t;for(i=0;i<10;i++)scanf("%d",&a);printf("\\n");for(j=0;j<9;j++){ for(i=0;i<9-j;i++){ if(a>a[i+1]){ t=a;a=a[i+1];a[i+1]=t;}}} for(i=0;i<10;i++)printf("%d",a);} ...
如何把某一个k进制的数化为10进制数呢?C++
include <iostream> include <cmath> include <string> using namespace std;void main(){ char a[80];int i,p=1,m,n=0,k;cout<<"请设定要转化的进制位数:"<<endl;cin>>k;cout<<"输入一个"<<k<<"进制数:"<<endl;cin>>a;m=strlen(a);for(i=m-1;i>=0&&k!=16;i--){ n...
c++编程输入10个整数到数组C[10]
for(i=1;i<10;i++){ if(a[i]<min){ index=i;min=a[i];} } printf("min=%d, index=%d\\n",min,index);printf("Before change:");for(i=0;i<10;i++)printf("%d ",a[i]);printf("\\n");a[index]=a[0];a[0]=min;printf("After change:");for(i=0;i<10;i++)p...