c语言问题:输入一个十进制数,将其转化为二进制数后存放在数组中并输出
#include<stdio.h>
#define uint unsigned int
#define ushort unsigned short
//求2的N次方
int cifang(int n)
{
int i=0,sum=1;
for(i=n;i>0;i--)
{
sum*=2;
}
return sum;
}
//十进制正数转换成二进制数
uint transform_data_zhengshu(uint frequence,ushort*pwm_table)
{
uint temp=frequence;
int pwm_index=0;
while(temp)
{
pwm_table[pwm_index]=(temp&0x01);
temp=temp>>1;
pwm_index++;
}
return pwm_index-1;
}
uint transform_data(int frequence,ushort*pwm_table)
{
int temp=frequence;
int pwm_index=0;
ushort pwm_temp[15]={0};
//负数
if(frequence<0)
{
//先将负数转换成正数
temp=-frequence;
//求出这个正数temp的二进制并存放在pwm_temp中
transform_data_zhengshu(temp,pwm_temp);
//将这个正数temp的二进制pwm_temp取反并转换成十进制数sum
int sum=0;
int i=0;
for(i=0;i<15;i++)
{
if(pwm_temp<i>==0)
pwm_temp<i>=1;
else
pwm_temp<i>=0;
sum+=cifang(i)*pwm_temp<i>;
pwm_temp<i>=0;
}
//将转换出来的十进制数sum加一
sum+=1;
//printf("sum=%d
",sum);
//最后再转成二进制pwm_table
return transform_data_zhengshu(sum,pwm_table);
}
//正数
return transform_data_zhengshu(frequence,pwm_table);
}
int main(){
int frequence=-2;
//scanf("%d",&frequence);
ushort pwm_table[15]={0};
uint off_set;
off_set=transform_data(frequence,pwm_table);
int i=0;
for(i=off_set;i>=0;i--)
{
printf("%d",pwm_table<i>);
}
return 0;
}
扩展资料:
①printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。
格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。
要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
简单点理解就是,在一段程序中你正确使用该函数,可以在该程序运行的时候输出你所需要的内容。
②printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。
printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。
其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。
格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。
如“%d”表示按十进制整型输出,“%ld”表示按十进制长整型输出,“%C”表示按字符型输出等。
C语言简单小题目:编写程序,输入一个十进制整数,将其变换为二进制后存储...
include <stdio.h> define MAX (sizeof(int)*8)int main(){ int a[MAX];int num;int i;int sign=1;printf("please input the number:");scanf("%d",&num);if(num<0){ num=~num+1;sign=-1;} if(sign==1)a[0]=0;else a[0]=1;for(i=MAX-1;i>0;i--){ a[i]=num ...
c语言编程 从键盘输入一个十进制正整数,将其转换成二至十六任意进制的数...
out[1] = 0;} else { for (n = 0; n < i\/2; n++) { temp = out[n];out[n]=out[i - n - 1];out[i - n - 1] = temp;} } } int main(){ unsigned int d;char t[33];scanf_s("%u", &d);convert(d, 2, t);printf("二进制:%s\\n", t);convert(d, 8,...
如何用C语言编写函数实现输入一个十进制数, 将其转换成二进制数并输出...
原理:和十进制的数除以2,将商暂存起来,余数按字符串排列起来。再用商除以2,再将余数按字条串排列起来。如此循环。最终得到的那个余字符串就是二进制数了。
用汇编语言编写:从键盘输入一个十进制数(100以内),将其转变为二进制数...
NUMBER DB 3 DB ?db 3 DUP(0)DSEG ENDS CSEG SEGMENT assume cs:CSEG, ds:DSEG MAIN PROC FAR mov ax, dseg mov ds, ax lea dx,INPUT mov ah,9 int 21h lea dx,NUMBER mov ah,0ah int 21h lea dx,OUTPUT mov ah,9 int 21h mov bl,NUMBER+2 sub bl,30h cmp NUMBER+1,1 jz...
用汇编语言写:从键盘输入一个十进制数(100以内),将其转变为二进制数并...
print MACRO para lea dx,para mov ah,9 int 21h ENDM data segment buffer db 2,0,2 dup(?)TEN db '请输一个100之内的两位数:$'HEX db '16进制:$'BIN db ' 2进制:$'CRLF db 0dh,0ah,24h data ends code segment assume cs:code, ds:data start: mov ax,data mov ds,...
C语言:键盘输入一个十进制整数,输出其对应的二进制、三进制、四进制...
=N[x%n];x\/=n;}for(i=total-1;i>=0;i--){p[total-1-i]=tmp[i];}if(total==0){p[0]='0';p[1]=0;}elsep[total-1-i]=0;}int main(){char s[100];\/\/用于存放转换的进制的数int i,x; printf("把一个数转换成2 3 4 ... 16进制数\\n");scanf("%d",&x);...
C语言编程:由键盘输入一个小于256的十进制整数,然后将该数转换成八位...
int main(){ int n,i; \/* n放输入数据; i循环变量 *\/ char a[9], *p; \/* a放转换好的字符串;p字符串指针,加快操作速度*\/ scanf("%d",&n);p=a+8; *p--='\\0'; \/*填入字符串结束符,同时将指向二进制最低位*\/ for(i = 8; i>0; i--){ p--=(n&1)+'0';\/*...
...要无错误的运行 编写程序,输入一个十进制整数,将其变换为二进制后...
下面的程序在TURBOC下调试通过:include <stdio.h> main(){ int x,i,j;char s[33];scanf("%d",&x);for (i=1;i<=32;i++) {s[32-i]='0'+x%2;x\/=2;} s[32]='\\0';printf("%s\\n",s);}
输入一个6位十进制数,把它每个位的数,转化为字符型,用scanf putchar
include <stdio.h> void main(){ int x,i;char a;printf("shu ru yi ge 6 wei shu:\\n");scanf("%d",&x);for(i=0;i<6;i++){ a=x%10+96;x=x\/10;putchar(a);} } 现在从个位输出,如果要从最高位输出要设个数组或者重新设计循环输出函数 ...
输入一个十进制的正整数,将该数转换成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 ...