C语言编程,编写一个将十进制数转换成十六进制数的小程序。(请指教,谢谢。)

如题所述

/* 函数trans将无符号整数n翻译成d(2<=d<=16)进制表示的字符串s */
#include <stdio.h>
#include <windows.h>
#include <conio.h>

#define M sizeof(unsigned int)*8

int trans(unsigned n, int d, char s[])
{
static char digits[] ="0123456789ABCDEF"; /* 十六进制数字的字符 */
char buf[M+1];
int j, i = M;
if(d<2||d>16)
{
s[0]='\0'; /* 不合理的进制,置s为空字符串 */
return 0; /* 不合理的进制,函数返回0 */
}
buf[i]='\0';
do
{
buf[--i]=digits[n%d]; /*译出最低位,对应字符存入对应工作数组中*/
n/=d;
}while(n);
/* 将译出在工作数组中的字符串复制到s */
for(j=0;(s[j]=buf[i])!='\0';j++,i++);
/* 其中控制条件可简写成s[j]=buf[i] */
return j;
}
/* 主函数用于测试函数 trans() */
int main()
{
unsigned int num = 253;
int scale[]={2,3,10,16,1};
char str[33];
int i;
system("cls");
for(i=0;i<sizeof(scale)/sizeof(scale[0]);i++)
{
if(trans(num,scale[i],str))
printf("%5d = %s(%d)\n",num,str,scale[i]);
else
printf("%5d => (%d) Error! \n",num,scale[i]);
}
printf("\n Press any key to quit...\n");
getch();
return 0;
}

适当修改下
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-20
我现在还没学C++呢-_-! 用C写个吧 只写主函数部分了
main()
{SqStack S;
int e,n;
InitStack(&S);
printf("请输入要转换的十进制数:\n");
scanf("%d",&n);
while(n)
{Push(&S,n%16);
n=n/16;
}
while(!StackEmpty(S))
{Pop(&S,&e);
printf("%d",e);
}
}
第2个回答  2011-01-20
先构建数组char hex[] = "0123456789abcdef";
int source;
cin>>source;
int mode = 1;
循环,mode *= 16; r = source%mode;将hex[r/mode]放到字符数组中(从右往左放);source -= r;
source < mode时停止循环。
第3个回答  2011-01-21
#include "stdio.h"

void main()
{
int i,n;
for(i = 0;i < 100;i++)
{
if(i % 3 !=0 && i % 7 !=0)
{
printf("%d",i);
n++;
}
if(n % 5 == 0) printf("\n");
}
}
相似回答