c语言输出十进制
Ⅰ c语言 怎样将二进制数转换成十进制,又怎样将十进制数转换成二进制数输出
将二进制数转换成十进制,一般是从字符串转换成一个整数,按位值乘以权值相累加得到结果。
如:1010=1*2^3+0*2^2+1*2+0
=((((1*2)+0)*2)+1)*2+0
将十进制数转换成二进制数,采用的原理就是辗转除2,逆向输出余数。(windows系统下的itoa函数也是一个不错的选择,但DIY更有意义)
实现方法:
#include <stdio.h>
void swap( char *a, char *b )
{
char t=*a;
*a=*b;
*b=t;
}
char *reverse(char *s,int len)
{
char *b=s, *e=s+len-1;
while( b<e )
{
swap(b++,e--);
}
return s;
}
char *dec2bin(n)
{
static char str[33];
int i=0;
do {
str[i++]=n%2+'0';
n/=2;
}while( n );
str[i]=0;
return reverse(str,i);
}
int bin2dec(char *s)
{
int i,n=0;
for( i=0;s[i];i++ )
n=n*2+s[i]-'0';
return n;
}
void main()
{
int n=100;
char *p;
p=dec2bin(n);
printf("%d(D)=%s(B)\n", n, p );
n=bin2dec(p);
printf("%s(B)=%d(D)\n", p, n );
}运行结果:
100(D)=1100100(B)
1100100(B)=100(D)
Ⅱ C语言用1个10进制数表示字符串,并输出该值怎么做
要把一个十进制形式的整数数字字符串,转换为一个十进制整数,可以用以下的办法:
char s[]="12345678";
int i,n=0;
for(i=0;s[i];i++)
n=n*10+s[i]-'0';
printf("%d",n);
运行这段代码后可以输出:
12345678
Ⅲ C语言输入十六进制,输出十进制
直接将16进制以16为底,然后根据金智个税依次计算,然后将结果求和之后即可得到十进制了
Ⅳ 输入一个8进制数,输出一个10进制的数.怎么用C语言写
好啊!我给你说说!
你可以这样写:
#include"stdio.h"
main()
{int
i;
scanf("%o",&i);
printf("%d",i);}
这样就可以了,其实你说的不过是数据输出中的
转换字符
的应用就是了。
其中:
d
将参数以
十进制
的
形式
输出
o
将参数以无
正负号
八进制
的形式输出
x
将参数以无正负号的
十六进制
的形式输出
u
将参数以无正负号的十进制的形式输出
怎么样?明白了吧?
Ⅳ C语言中 输出十进制 八进制 十六进制 有哪些表示方法
%d
%o
%x
Ⅵ C语言:写一函数,输入一个十六进制数,输出相应的十进制数。
有几个问题
一个是函数声明不对
函数调用有问题
判断数值临界不准,没有包含==的情况
算法可以写的简单一点
最终优化如下
#include<stdio.h>
#include<string.h>
void main()
{
char array[100];
void fun(char*);
gets(array);
fun(array);
}
void fun(char array[100])
{
int sum=0,i;
for(i=0;i<strlen(array);i++)
{
sum*=16;
if('0'<=array[i]&&array[i]<='9')
sum+=array[i]-'0';
if('a'<=array[i]&&array[i]<='z')
sum+=array[i]-'a'+10;
if('A'<=array[i]&&array[i]<='Z')
sum+=array[i]-'A'+10;
}
printf("%d",sum);
}
Ⅶ 有C语言编写一函数,输入一十六进制数,输出相应的十进制数
/*按要求,输入输出都在子函数中进行*/
#include
void
fun(void)
{
int
a=0,i;
char
str[6];
printf("输入十六进制数:\n");
gets(str);
for(i=0;str[i]!='\0';i++)
if(str[i]>='0'&&str[i]<='9')
a=a*16+str[i]-48;
else
if(str[i]>='a'&&str[i]<='z')
a=a*16+str[i]-'a'+10;
else
a=a*16+str[i]-'A'+10;
printf("对应的十进制数为:%d\n",a);
}
int
main(void)
{
fun();
getchar();
}
Ⅷ c语言输出格式%*s
c语言输出格式%*s,标识形参占位。
*在printf中使用,表示用后面的形参替代的位置,实现动态格式输出。例如:printf("%*s",10,s);意思是输出字符串s,但至少占10个位置,不足的在字符串s左边补空格,这里等同于printf("%10s",s)。
(8)c语言输出十进制扩展阅读:
C语言输出格式大全:
格式占位符(%)可以以下字母配合使用用来表示某些特定的输入输出。
%a,%A 读入一个浮点值(仅C99有效)
%c 读入一个字符
%d 读入十进制整数
%i 读入十进制,八进制,十六进制整数
%o 读入八进制整数
%x,%X 读入十六进制整数
%s 读入一个字符串,遇空格、制表符或换行符结束。
%f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。
%p 读入一个指针
%u 读入一个无符号十进制整数
%n 至此已读入值的等价字符数
%[] 扫描字符集合
%% 读%符号
Ⅸ c语言,输入一个二进制数,输出它的十进制数,最简单的
#include <stdio.h>
int main()
{
int len,i=0,number=0;
char c[100];
do
{
scanf("%c",&c[i]);
i++;
}while(c[i-1]!='\n');
len=i-1;
for(i=0;i<len;i++)
{
number=(number<<1)|(c[i]-'0');
}
printf("%d\n",number);
return 0;
}
Ⅹ C语言 写一个函数 输入一个十六进制数 输出相应的十进制
#包括< stdio, h >
h#包括< math.h >
# include < string。H >
Intmain()
{
Char[10]。
Void转换(char[]a);
Printf(“输入十六进制数:”);
(一);输入一个十六进制数
转换(a);
返回0;
}
Void转换(char[]a)
{
Intn,I,num=0;
N=strlen(a);
对于(I = n - 1;I > = 0;我)
{
如果(a < I > > = '0' & a < I > < = '9')
Num + = (a < I > - '0') * pow (16, n - 1 - I);
否则(a < I > > = 'a' && a < I > < = 'Z')
Num + =(10 +(<我> - a)) *战俘(16 n - 1 - I);
否则(a < I > > = 'a' && a < I > < = 'z')
Num + =(10 +(<我> - a)) *战俘(16 n - 1 - I);
}
Printf(“将小数转换为:”);
Printf("%d",num);
}
(10)c语言输出十进制扩展阅读:
函数的作用是:从标准输入设备(键盘)中读取一个字符串,直到回车结束。但是回车不属于这个字符串。调用格式为(s);其中s是字符串变量(字符串数组名或字符串指针)。
gets(s)函数与scanf(“%s”,s)类似,但不完全相同。对字符串输入使用scanf("%s",s)函数的问题是,如果输入了空格,则认为输入字符串是完整的。