如何用c语言循环结构实现十进制与各种进制间的转化,运用什么思想,最好举个例子。。拜托拜托

作者&投稿:掌宙 (若有异议请与网页底部的电邮联系)
您能说说C语言中16进制怎么想十进制转化吗 ?举几个例子,谢谢!!!!~

a是十进制中的10,b是11,c是12,d是13,e是14,f是15换算方法举例:
fa807c换成十进制则是12*16^0+7*16^1+0*16^2+8*16^3+10*16^4+15*16^5

十进制换二进制,八进制,十六进制 #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define LISTINCREMENT 10 #define INFEASIBLE -1 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef int SElemType; typedef int Status; typedef int ElemType; typedef struct SqStack { SElemType *base; SElemType *top; int stacksize; }SqStack; SqStack S; Status InitStack(); Status Push(SElemType e); Status Pop(SElemType *e); Status StackEmpty(); void main() { char *b="0123456789ABCDEF"; int n,N,M,L,e; SqStack S; InitStack(); printf("请输入要转换的数字:"); scanf("%d",&n); N=M=L=n; while(N) { Push(N % 8); N = N / 8; } printf("转换为八进制数为:"); while(!StackEmpty()) { Pop(&e); printf("%d",e); } printf("
"); while(M) { Push(M % 2); M = M / 2; } printf("转换为二进制数为:"); while(!StackEmpty()) { Pop(&e); printf("%d",e); } printf("
"); while(L) { Push(L % 16); L = L / 16; } printf("转换为十六进制数为:"); while(!StackEmpty()) { Pop(&e); printf("%c", b[e]); } printf("
"); getch(); } Status InitStack() { S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType)); if(!S.base) exit(OVERFLOW); S.top = S.base; S.stacksize=STACK_INIT_SIZE; return OK; } Status Pop(SElemType *e) { if(S.top == S.base) return ERROR; *e = *--S.top; return OK; } Status Push(SElemType e) { if(S.top - S.base >= S.stacksize) { S.base = (ElemType *)realloc(S.base,(S.stacksize + LISTINCREMENT) * sizeof(ElemType)); if(!S.base) exit(OVERFLOW); S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } *S.top++ = e; return OK; } Status StackEmpty() { if(S.top == S.base) return OK; else return ERROR; }

如果要你手算一个数M的n进制表示,你怎么算?我以前是直除,然后余数的倒序就是结果。现在常用的n进制一般直接用n的0次方、1次方……往上面加,直到正好凑到M为止。
如果要用循环的话,前一个方法比较合适。用取余%得到结果,用整除/得到下一次除法的被除数。程序如下。
void main()
{
int a[100]; //存放结果
int m,n; //存放输入的十进制数和进制
int len=-1,i;
scanf("%d%d",&m,&n);
while(m>0)
{
a[++len]=m%n; //获得余数
m/=n; //整除
}
for(i=len;i>=0;i--, printf("%d",a[i])); //output
putchar('\n');
}

十进制与其他转换。那就是1对多。
while中使用switch,csae中使用函数调用
while(1)
{
scanf("%d",&n);
scanf("%c",&ch);
switch(ch) //先输入十进制数字,然后选择转换的方式
{
case ‘0’:D_0(n);break; //十进制转八进制,自定义
case 'x' :D_X(n);break; //十进制转十六进制,自定义
case 'q':{....=1...};break; //可以在外边定义一个变量=0,在while循环中每次判断是否为0
default :重新输入
}
}

而转换函数的话,以前有写过,你在自己看看
一、使用递归(直接显示求余值,然后在递归一半,无保存)
#include<stdio.h>
int main()
{
int zh(unsigned int x);
unsigned long num;
while((scanf("%ul",&num))==1)
{
zh(num);
printf("\n");
}

return 0;
}
int zh(unsigned int x)
{
int n;
n=x%2;
if(x>=2)
zh(x/2);
putchar('0'+n);
return 0;
}
三、位操作
#include<stdio.h>
int main()
{
int cf_ejz(int x,char *p);
int show_ejz(char *p);
int num;
char a[8*sizeof(int)+1],*p;
p=a;
while((scanf("%d",&num))==1)
{
cf_ejz(num,p);
show_ejz(p);
printf("\n");
}
puts("Bye!");
return 0;
}
int cf_ejz(int x,char *p)
{
int i;
int size=8*sizeof(int);
for(i=size-1;i>=0;i--,x>>=1)
{
p[i]=(01&x)+'0';
}
p[size]='\0';
return 0;
}
int show_ejz(char *p)
{
int i=0;
while(p[i]!='\0')
{
putchar(p[i]);
if(++i%4==0&&(*p))
printf(" ");
}
return 0;
}

十进制转化为其他进制,只需要用十进制数除所需要转化的进制,直到商为零,每一步的余数即为所求

虽然没好好想但是根据特点可以的吧!?


c语言的循环结构
for语句一般形式中的各表达式可以省略,但是分号间隔符不能少。需要注意省略表达式1之前要给循环变量赋初值。如省略去表达式2或者3则将造成无限循环 while 语句循环 while语句中的表达式一般是关系表达式或者是逻辑表达式,只要表达式的值为真(非0)即可继续循环 循环体中如果包括一个以上的语句 则必须用{}...

c语言 循环结构 怎么理解if后语句 i取值
if中均为逻辑表达式,返回值只有真和假。C语言中规定:0为假,其余为真。i%5表示:i除以5的余数,假如这个余数为0,则返回假;不为零,则返回真。再加上!表示取反,即:原来真的变成假,原来假的变成真。因此表示:假如i除以5为0,则返回真;不为零,则返回假。&&叫做与运算,它表示:只有当...

,输入n个数,求其中的最大值, C语言循环结构
(3)输出最大数(max的值)。这个问题涉及C语言for循环嵌套和一维数组内容,以6个数为例,具体程序如下:include<stdio.h> int main(void){ int a[6],i,max;for(i=0;i<6;i++) \/\/将6个数输入a数组 scanf("%d",&a[i]);max=a[0]; \/\/首先将a[0]视为最大数,将a[0]存...

C语言循环结构,这是怎么循环的,怎么会有这个答案
首先,要看清楚,读进来的是字符,查找ASCII码表,'0'标识的是字符0,它的ASCII值为48,'6'标识字符6,ASCII值为54,同理c为99,2为50,4为52,7为55...第一个while()循环后面为封号,表示如果符合里面的条件则一直在循环里面,否则跳出。读取到c,c的ASCII值为99,99大于字符6的ASCII值(54...

c语言如何用函数指针利用循环结构遍历多个函数
\/\/ 你可以自己再添加其他函数,而不用修改代码。TYPE (*functions[])(TYPE, TYPE) = {add,sub,muti,div};\/\/ 函数指针数组中的元素个数,这里是 4 个。unsigned int n = sizeof(functions)\/sizeof(functions[0]);\/\/ 要进行运算的数字 TYPE a = 10, b = 5 , result;int i=0;for(i...

c语言中的循环结构有几种形式?
C语言的循环结构主要有两种,for 循环和while 循环;还有一种变种可以实现循环的是goto语句。for循环是最常用的一种。其表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}。单词表达式仅仅在第一次执行;条件表达式在每次进循环时进行判断;末尾循环体在每次循环结束时执行,常常用于自增量...

C语言,用三种循环结构,求1000以内奇数的和
如果以7个零件为一组进行分组,则多3个零件;如果以9个零件为一组进行分组,则多5个零件。编程求解这堆零件总数。提示:用穷举法求解。即零件总数x从100-200循环试探,如果满足所有几个分组已知条件,那么 时的x就是一个解。分组后多几个零件这种条件可以用求余运算获得条件表达式。3、*\/ include<...

以for循环为例概述C语言循环结构的基本组成要素
如表达式为假,则退出循环;expr3:每次循环后执行,一般是自变量的修改;loop body: 循环体,执行循环内容。3 基本组成要素:a) 循环的退出条件,在for中,是expr2;b) 循环的自变量修改,一般与退出条件相关,在for中,是expr3;c) 循环实际执行的操作,即循环体,loop body部分。

c语言 循环结构编程 输入若干个学生成绩, 若输入数据大于100或小于0则...
{ \/*成绩输入合法*\/sum+=score[i]; \/*累加求总分*\/i++; \/*计数器+1*\/}else { \/*成绩输入非法*\/count = i; \/*记录成绩合法的学生人数*\/printf ("成绩输入完成!共%d名学生。\\n",count);break; \/*结束循环*\/}}average = sum\/count;printf ("\\n%d名学生的平均分为:%.2f\\n",...

怎么用for嵌套循环结构,C语言表达下图。定义i打印行数,j打印空格数,K...
可以使用两个二重循环。第一个二重循环打印图形的上半部分,再用一个二重循环打印图形的下半部分。下面是程序的源代码和运行情况的截图。#includeint main(){ int i,j,k; for(i=0;i<3;i++) {for(j=1;j<3-i;j++) printf(" "); for(k=0;k<=i;k++) printf("* ")...

丛台区18760078273: C语言中如何用循环实现二进制数转换成十进制数 -
姚珍炎立: #include <iostream.h> #include <math.h> void main() {cout<<"请输入二进制数";char num[30];char num2[30];cin.getline(num,30);for(int i=0;num[i];i++){num2[i]=num[i]-'0'; //把字符型转成整型 } //补充 int result = 0; for(int j=0;j<i;j++){if(num2[j]) result += pow(2,i-j-1); } cout << result << endl; //补充 }

丛台区18760078273: C语言中如何用循环实现十进制数转换成二进制数 -
姚珍炎立: #include main() { char *tentotwo(int n); int num; printf("please input a integer:"); scanf("%d",&num); printf("该数转换为二进制为:%s\n\n", tentotwo(num)); } char *tentotwo(int n) { int i,j=0; int *p, *q, *f; char *s; p = (int *)malloc(32*sizeof(int));...

丛台区18760078273: 怎样用c语言实现各进制数字之间的转换? -
姚珍炎立: void DecToHex( int a ) //十进制转十六 { int sum[10],i,j=0; system("@color 0a"); while( (int)(a/16)!=0) { if(a%16>=10) { sum[j] = a%16+55; } else { sum[j]= a%16+48; } j++; a=a/16; } if(a=0;i--)\ { printf("%c",sum[i]); } printf("\n"); } int HexToDec(char ...

丛台区18760078273: 怎么样用c语言实现十进制与16进制之间的相互转换
姚珍炎立: 是不是要求输入一个数 自动转换 为16 进制的啊!! 我觉得关键就是对这个数 进行 摸余 取余 并用 这个数%16 来作为 while 循环的条件 当摸余结果大于16 时 就继续 转换!! 这只是思路,今天下午补上全部代码 !

丛台区18760078273: 求一个数值转换的C语言程序,能够实现十进制分别与二进制,八进制,十六进制的转换, -
姚珍炎立: 两个进制(其中之一为10进制)之间的互转(手工计算方法) 以2,10进制互转为例,其他请举一反三: 二进制数1101转十进制: 1*2的三次幂+1*2的二次幂+0*2的一次幂+1*2的零次幂=8+4+0+1=13 附加一个八进制转十进制的例子吧: 507(...

丛台区18760078273: 用c语言将任意进制数转成十进制 -
姚珍炎立: 任意进制间的转换#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)!=...

丛台区18760078273: 如何用c语言实现十进制数与八进制数的互换? -
姚珍炎立: 你应该把问题描述清楚. 我们知道,所有数据在计算机中都是以二进制存储的. 你所描述的是不是以字符串来存储数字对应的ASC码??如果只是在输出上的区别的话很容易做到: printf("%o",x);//以8进制输出 printf("%d",x);//以十进制...

丛台区18760078273: 如何用循环结构实现八进制与十进制的相互转换,因为才刚学习,希望能 -
姚珍炎立: #include #include int main (void){ char x[10]={10000};//八进制的10000是十进制的4096. int i,j; double k=0,w=0; j=strlen(x);//j用来判断用这个八进制数有多少位 for(i=0;i

丛台区18760078273: 如何用C语言实现十六进制转换为十进制 -
姚珍炎立: 可以根据16进制转10进制的算法(即各位位码值乘以位权之和)来实现该功能. 具体实现方法可以参考如下程序: #include <stdio.h> void main() {int he;int re=0; // 保存转换为10进制的结果int k=16; // 16进制int n=1; // 位权scanf("%d",...

丛台区18760078273: 用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}

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