c语言中,用数组将二、八或十六进制整数转化为十进制数 (编程题)

作者&投稿:银严 (若有异议请与网页底部的电邮联系)
c语言问题:输入一个十进制数,将其转化为二进制数后存放在数组中并输出~

#include
#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==0)
pwm_temp=1;
else
pwm_temp=0;
sum+=cifang(i)*pwm_temp;
pwm_temp=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);
}
return 0;
}

扩展资料:①printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。
格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。
要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
简单点理解就是,在一段程序中你正确使用该函数,可以在该程序运行的时候输出你所需要的内容。
②printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。
printf()函数的调用格式为:printf("",)。
其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。
格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。
如“%d”表示按十进制整型输出,“%ld”表示按十进制长整型输出,“%C”表示按字符型输出等。

C语言程序如下:
#include
int main(){
int N,i,t;
int a[100];
scanf("%d",&N);
for(i=0;N!=0;i++){
a[i]=N%2;
N=N/2;
}
for(t=i-1;t>=0;t--){
printf("%d",a[t]);
}
}
思路:反复地将n除以2取余数;将取出的余数用数组存放;由于先取出的是低位数据,后取出的是高位数据,因此需将数组逆序输出。

扩展资料:
1、十进制整数转二进制数:“除以2取余,逆序排列”(除二取余法)
2、十进制小数转二进制数:“乘以2取整,顺序排列”(乘2取整法)
3、十进制负数转二进制:“先取正数的二进制值,再取反,加1”
参考资料:百度百科-二进制

#include<stdio.h>
#include<string.h>
int poll(int a,int b)
{
int i,s=1;
for(i=1;i<=b;i++)
s=s*a;
return s;
}//自定义的求幂函数
int main()
{
int i,j,k,l,n,m;
int t;
char a[100];
int poll(int a,int b);
while(scanf("%d %s",&n,a)!=EOF)//输入
{
t=0;
l=strlen(a)-1;
printf("%d\n%s\n",n,a);//将输入输出
for(i=0;a[i]!='\0';i++)//转换过程
{
if(n!=16)
{
t=t+(a[i]-'0')*poll(n,l);
l--;
}
else
{

if(a[i]>='A'&&a[i]<='f')
t=t+(a[i]-'A'+10)*poll(n,l);
else
t=t+(a[i]-'0')*poll(n,l);
l--;
}
}
printf("%d\n",t);//所求的结果
}
}
这个代码没有问题,不懂的话,在问我吧
其中n就是2或8或16,也可以是别的数,而a[]就是与n相对应的进制数
下面是输入输出样例
2 10101010110
2
10101010110
1366
8 777777777
8
777777777
134217727
16 F08F89FAD
16
F08F89FAD
150511533

#include <stdio.h>

char c[20][20];
int ct;
type(int i, int j)
{
int l,m;
ct=0;
l=i%j;
m=i/j;

while(m!=0||i<j)
{
check(l,ct);
if(i<j) break;
ct++;
l=m%j;
m=m/j;

if (m==0) sprintf(c+ct,"%d",l);
}
}

check (int l, int a)
{
if(0<=l&&l<10) sprintf(c+a,"%d",l);

else if(l==10) sprintf(c+a,"A");
else if(l==11) sprintf(c+a,"B");
else if(l==12) sprintf(c+a,"C");
else if(l==13) sprintf(c+a,"D");
else if(l==14) sprintf(c+a,"E");
else if(l==15) sprintf(c+a,"F");

}
out()
{
int x;
for(x=ct;x>=0;x--)
printf("%c",c[x][0]);
}

main()

{int i,j;
printf("请输入要转换的数值及进制\n");
scanf("%d%d",&i,&j);

type(i,j);

printf("\n十进制数%d转化为%d进制数为",i,j);

out();
printf("\n");
}

#include<stdio.h>
void main()
{
int a[],b[],i,j,k;
for()
{
if(a[i])
}

}


编写程序,c语言。用一维数组存储二维数组的数据看,编写函数完成矩阵的...
代码二:include<stdio.h> int MAX,MIN;int maxi,maxj,mini,minj;void main(){ void result(int x[][5],int m,int n);int a[5][5],max,min,i,j;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);MAX=MIN=a[0][0];maxi=maxj=mini=minj=0;result(a,5...

用c语言实现输入两个二维数组,并将对应元素相加并输出,不要保存到第...
include <stdio.h>#define M 3#define N 4int main(){int i,j,a[M][N],b[M][N];printf("输入第一个二维数组:\\n");for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);printf("输入第二个二维数组:\\n");for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("...

C语言通过指针 将一个二维数组赋值给另一个二维数组
include <stdio.h>void copy_arr(double(*)[5],double(*)[5],int ,int);int main(void){int n,m;double source[2][5]={{2.6,3.7,5.8,4.2,3.3},{1.7,5.4,6.3,4.7,6.2}};double target1[2][5]={0};printf("Before operation:\\n");printf("source :");for (n...

c语言二维数组
t[0][0] t[0][1] t[0][2]t[1][0] t[1][1] t[1][2]t[2][0] t[2][1] t[2][2]注意,数组地址的起始是从0开始的,也就是说t[3]的3个元素下标内应该是0 1 2,而不是1 2 3,请把数组定义和数组调用时下标区分开 按照数组初始化规则下标变化从右边优先...

c语言中a[i][j]==2是什么意思
表示二维数组中第i行、第j列的值为2。二维数组定义的一般形式是:类型说明符 数组名[常量表达式1][常量表达式2],其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度。二维数组的元素也称为双下标变量,其表示的形式为:数组名[下标][下标],其中下标应为整型常量或整型表达式。...

学完c语言后?
第(m+2)行到第(2m+1)行:矩阵B的各行的的值。数据输出:第1行到第m行:矩阵C各行的值。第m+1行到第2m行:矩阵D各行的值。示例:输入文件input10.txt:21 23 45 67 8输出:(标准输出)6 810 1219 2243 508. 若将稀疏矩阵中的非零元素以行序为主序的顺序存于一个一维数组中,并用一个二维数组...

C语言将字符数组a中下标为偶数的元素从小到大排列
第一个空填(i<10)第二个空(j%3!=0)第三个空那里有问题.当第一次循环时,i=0那内循环不是j=-2;这样就错了.include "stdio.h"include "conio.h"main(){ char a[]="clanguage",t;int i,j,k;k=strlen(a);for (i=0;i<=k-2;i+=2)for (j=i+2;j<=k;j+=2)if (a[i]>...

C语言 数组问题。将一个按升序排列的数组和一个按降序排列的数组,按...
include<stdio.h> define M 5 define N 3 int main(){ int a[M],b[N],c[M+N];int i,j,k,m;for(i=0;i<M;i++){ scanf("%d",&a[i]);} for(j=0;j<N;j++){ scanf("%d",&b[j]);} for(i=0,j=N-1,k=0;k<M+N;k++){ if(a[i]<b[j]||j<0){ c[k]...

JAVA中如何创建一个二维数组,然后给二维数组赋值!
声明数组: int Chess[][];内存分配 Chess= new int[64][64];第二种,即声明时即分配内存的方式。使用格式是: 数据类型 数组名[][] =new 数据类型 [行的个数][列的个数];使用上个步骤中的例子,我们可以将数组的声明和分配内存写成以下方式:声明即分配内存:int Chess[][] = new...

用汇编语言编写程序,将一个包含有20个数据的数组N分成两组:正数数组...
;在数据段自行定义一个包含10个字节数据的数组M,将数组分成两个数组,正数数组P和负数数组N.data segment num dw 01h,02h,03h,04h,05h,06h,07h,10h,20h,30h nump dw ?count equ $-num data ends stack segment para stack dw 20h dup(0)stack ends code segment assume ds:data,cs:code,ss...

宝清县17112957371: c语言中,用数组将二、八或十六进制整数转化为十进制数 (编程题) -
官阁盖舒: #include#include int poll(int a,int b) { int i,s=1; for(i=1;i<=b;i++) s=s*a; return s; }//自定义的求幂函数 int main() { int i,j,k,l,n,m; int t; char a[100]; int poll(int a,int b); while(scanf("%d %s",&n,a)!=EOF)//输入 { t=0; l=strlen(a)-1; printf("%d\n%s\n",n,a...

宝清县17112957371: c语言 用数组实现10进制数转换为二进制,八进制,十六进制.
官阁盖舒: #include <stdio.h> #include <string.h> #include <math.h> /*该函数可以实现小于整型数据的任意进制之间转换*/ /*以下函数将a进制数s转换成b进制并输出*/ void f(int a,int b,char s[]) { char r[17]; int i,n,t,k; for(n=strlen(s)-1,i=t=0;*(s+i)!='\0';i++,n--) /*...

宝清县17112957371: C语言中如何用数组完成进制的转换,把十进制转化为2,8,16进制 -
官阁盖舒: 给 数组赋值只能在声明的时候赋值 ,比如这么做就对了 int turn_number[5][4] ={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}; 如果要在操作的时候赋值只能用循环遍历了 printf("%s", )为什么要用a而不用a[]那是因为%s要求 打印的 是一串数...

宝清县17112957371: c语言编程,输入一个十进制数,转换为二,八,十六进制输出,用数组. 两个字符串连接成一个字符串.拜 -
官阁盖舒: 你好,参考如下代码:#include<iostream> using namespace std;#include "string.h"#include <stdlib.h>#include <stdio.h>//10-15数字转换为字母 char i2a(int val) { if(val<10 || val>15) return '0'+ val; const char* a = {"ABCDEF"}; return a[val-10]; }...

宝清县17112957371: 如何用C语言将十进制转换为二进制八进制十六进制的程序的代码 -
官阁盖舒: 简单情况,可以这样: int num; ... {// 二进制 unsigned long int value = abs(num); while(value > 0) { 数组bit = (value % 2); value /= 10; } -再输出倒序数组bit即可 } 只想要结果的话,直接调用printf分别用转换说明%o、%x输出: //八进制 printf("%o", num); //十六进制 printf("%x", num); 如需完整可问偶

宝清县17112957371: c语言 用数组实现10进制数转换为二进制,八进制,十六进制. -
官阁盖舒: #include #include /*该函数可以实现小于整型数据的任意进制之间转换*/ /*以下函数将a进制数s转换成b进制并输出*/ void f(int a,int b,char s[]) { char r[17]; int i,n,t,k; for(n=strlen(s)-1,i=t=0;*(s+i)!='\0';i++,n--) /*这里先转换成十进制数*/ { if(*(s+i)<='9') ...

宝清县17112957371: 将200分别用二进制跟八进制还有十六进制输出用c语言 -
官阁盖舒: #include "stdio.h" #includeint main() { char string[25]; int n = 200; itoa(n, string, 2); printf("200二进制:%s\n", string); itoa(n, string, 8); printf("200八进制:%s\n", string); itoa(n, string, 16); printf("200十六进制:%s\n", string); }可以利用itoa函数来完成 itoa(n, string, 8); 参数说明:n要转换的整数, string字符数组名,8进制数

宝清县17112957371: C语言,将存放在数组里的二进制数转换成十六进制 -
官阁盖舒: Zbuf如果不是字符串是不会存成0x开头的16进制的,但是可以输出成01开头的16进制 而Buf数组是可以用按权展开的方式变成10进制的.如果能够看明白我上面的两句话,我可以帮你写一个Buf数组到10进制的转换函数

宝清县17112957371: c语言中的数据类型及二进制 八进制 十六进制之间的转换? -
官阁盖舒:2的3次方等于8,一位八进制数正好是三位二进制;2的4次方等于16,一位十六进制数正好是四位二进制. 二进制转换成八进制的方法:以小数点为中心,整数部分自右向左分组,小数部分自左向右分组,每三位一组,不足的补零(...

宝清县17112957371: 用c语言实现二进制、八进制、十进制、十六进制的相互转换 -
官阁盖舒: #include int result[100]={0}; int index=0; void zhuan(int n,int jin) { while(n>0) { result[index++]=n%jin; n=n/jin; } } void main() { zhuan(10,2); for(int i=index-1;i>=0;i--) cout}

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网