求详细,c语言程序设计,不同数制转换程序

求详细,c语言程序设计,不同数制转换程序,第1张

#include<stdio.h>

int

main()

{

printf("\033[133m======================\n请输入一个十进制数:")

int

a,

b,

i

char

charx[50]

scanf("%d",

&a)

printf("======================\n")

printf

("你希望你的十进制数被转换为几进制数?\n请输入(2~16)\n")

printf("=======================\n")

scanf("%d",

&i)

printf("=======================\n")

printf("你输入了%d\n",

i)

printf("=======================\n")

printf("%d转换为%d进制是:",

a,

i)

for

(b

=

0

b

<=

50

b++)

{

int

x

x

=

a

%

i

if

(x>9)

charx[b]=x+55

else

charx[b]=x+48

a

=

a

/

i

if

(a

==

0)

break

}

for

(

b

>=

-1

b--)

printf("\033[31m%c",

charx[b])

printf("\n^_^")

}

愉快哈,好的话就采纳哈!

C语言程序设计

Franklin C51交*编译器是专为51系列单片机设计的一种高效的C语言编译器,使用它可以缩短开发周期,降低开发成本,而且开发出的系统易于维护,可*性高,可移植性好。下面介绍用C语言编写的单点和定长数据采集子程序,假设所用的晶振频率为码基12MHz。单点采样子程序ADS7804()用来返回一个有符号整数形式的转换结果。定长采样子程序DAQ()根据前旅入口参数interval(单位为μs)给定的采样间隔采样N点,并采用查询51单片机内置定时器的方式来控制采样时序,N点采样结果存储在定位于外部存储器的数组array中。需要注意的是,赋给计数寄存器TH和TL的值是定时器从开始迟悔谨计数到溢出所用的时间,这个时间再加上清TF和装载计数初值所需的时间(共5个机器周期,对于12MHz晶振即为5μs)才是所要的采样间隔,这一点在程序设计中必须注意。

源程序如下:

# include<reg51.h>

# include<absacc.h>

# define N 128 /*定采样长度,如128点*/sbit BYTE=F1^0;

sbit RC=P1^1

sbit BUSY=P1^2/*定义特殊位*/

int XDATA array(N)/*在外部存储器内定义长度为N的有符号整数数组*/

int ADS7804(void)

{ uint ul,uhint u

RC=0/*R/C低电平,进入转换模式*/

ul=XBYTE[0xffff]/*产生读脉冲,启动A/D转换*/

while (BUSY= =0)/*等待转换完成*/

RC=1;BYTE=0/*进入读模式,选择低字节*/

ul=XBYTE[0xffff]/*读转换结果低8位*/

BYTE=1; /*选择高字节*/

uh=XBYTE[0xffff]&0x0f/*读转换结果高4位*/

u=uh*256+ul/*得到12位转换结果*/

if(u>=0x0800)

u=u 0xf000/*如果为负值,则符号扩展*/

return(u)/*返回转换结果*/

}

uoid DAQ(uint interval)

{ uchar th,tl

interval=interval-5/*减去TF0清零和装载计数初值的时间5μs*/

th=255-(interval/256)

tl=255-(interval%256)/*计算计数初值*/

TMOD=0x01/*定时器0,方式1 */

TH0=thTL0=tl;/*装载计数初值*/

TR0=1;/*启动定时*/

for(I=0i<Ni++)

{ do{}whilt(!TF0)/*查询等待TF0复位*/

TF0=0/*清溢出标志*/

TH0=thTL0=tl; /*装载计数初值*/

Array[i]=ADS7804()/*采样、存储*/

}

TR0=0/*停止定时*/

}

6 结束语

ADS7804为12位的A/D转换器,它不仅分辨率高、转换速度快,而且接口方便,电路简单、应用灵活,因而具有广泛的应用前景。笔者在DLRS-1型检波器低频接收灵敏度特性测量仪中使用了ADS7804,取得了很好的效果

//C语言实现:

#include<stdio.h>

void main()

{char b[]="0123456789ABCDEF"

long int n,x

int i,a[40]

printf("\n Please input n=")

scanf("%ld",&n)

x=ni=0

while(x>0)

{a[i]=x%16

x=x/16

i++

}

while(i>0)

{printf("%c",b[a[i-1]])

i--

}

printf("\n")

}

对于大数转换可以用如下程序:

#include "Stdio.h"

#include "Conio.h"

char result[100]

int pos

void change(int *num)

int main(void)

{

char str[100]

int num[100]

int bin[300]={0}

int quot[100],residue=0

int i,j,k=0,suffix=0,index=0

puts("Input a decimal number:")

gets(str)

for(i=0i<strlen(str)num[i]=str[i]-48,i++)

j=i-1

while(j>=0)

{

num[j]%2?(bin[k++]=1):(bin[k++]=0)

while(index<洞拍旁=j)

{

residue+=num[index]

if(residue>=2)

quot[suffix++]=residue/2

else if(index)

quot[suffix++]=0

residue=(num[index]%2)*10

index++

}

for(i=0i<suffixnum[i]=quot[i],i++)

j=suffix-1

residue=suffix=index=0

}

for(i=0i<kchange(bin+i),i+=4)

for(i=pos-1i>=0printf("%c",result[i]),i--)

getch()

return 0

}

void change(int *num)

{

if(num[3]==0&&num[2]==0&&num[1]==0&&num[0]==0)

sprintf(result+pos,"%c",'0')

if(num[3]==0&&num[2]==0&&num[1]==0&&num[0]==1)

sprintf(result+pos,"%c",'1')

if(num[3]==0&&num[2]==0&&num[1]==1&&num[0]==0)

sprintf(result+pos,"%c",'2')

if(num[3]==0&&num[2]==0&&num[1]==1&&num[0]==1)

sprintf(result+pos,"%c",'3')

if(num[3]==0&&num[2]==1&&num[1]==0&&num[0]==0)

sprintf(result+pos,"%c",'4')

if(num[3]==0&&num[2]==1&&num[1]==0&&num[0]==1)

sprintf(result+pos,"%c",'5')

if(num[3]==0&&num[2]==1&&num[1]==1&&num[0]==0)

sprintf(result+pos,"%c",'贺孙6')

if(num[3]==0&&num[2]==1&&num[1]==1&&num[0]==1)

sprintf(result+pos,"%c",'7')

if(num[3]==1&&num[2]==0&&num[1]==0&&num[0]==0)

sprintf(result+pos,"%c",'8'纳橡)

if(num[3]==1&&num[2]==0&&num[1]==0&&num[0]==1)

sprintf(result+pos,"%c",'9')

if(num[3]==1&&num[2]==0&&num[1]==1&&num[0]==0)

sprintf(result+pos,"%c",'A')

if(num[3]==1&&num[2]==0&&num[1]==1&&num[0]==1)

sprintf(result+pos,"%c",'B')

if(num[3]==1&&num[2]==1&&num[1]==0&&num[0]==0)

sprintf(result+pos,"%c",'C')

if(num[3]==1&&num[2]==1&&num[1]==0&&num[0]==1)

sprintf(result+pos,"%c",'D')

if(num[3]==1&&num[2]==1&&num[1]==1&&num[0]==0)

sprintf(result+pos,"%c",'E')

if(num[3]==1&&num[2]==1&&num[1]==1&&num[0]==1)

sprintf(result+pos,"%c",'F')

pos++

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8206018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存