你们有这道题吗?你们是怎么做的?这段代码运行不了,错误显示找不到strrev这个函数架构,麻烦用你们的电脑运行看看!
#include <stdio.h>
#include <string.h>
void TentoAny(int number,char *str,int digits);
int main()
{
//十进制整数和要转换的进制数值
int number,digit;
//存放被转换的数值
char str[80];
printf("输入一个十进制数:");
scanf("%d",&number);
printf("\n---------2到16进制对应关系----------\n");
for(i=2;i<=16;i++)
{
//调用函数
TentoAny(number,str,digit);
printf("%d转换为%d进制为:%s\n",number,digit,str);
}
return 0;
}
void TentoAny(int numbers,char *str,int digits)
{
int i=0;
if(digits>16||digits<2)//非2~16进制则直接退出
return ;
while(numbers)
{
switch(numbers%digits)
{
//根据余数的情况做相应处理
case 15:
str[i++]='F';
break;
case 14:
str[i++]='E';
break;
case 13:
str[i++]='D';
break;
case 12:
str[i++]='C';
break;
case 11:
str[i++]='B';
break;
case 10:
str[i++]='A';
break;
default:
str[i++]=numbers%digits+'0';
break;
}
numbers=numbers/digits;
}
str[i]='\0';
//strrev函数定义在string.h中的,是对字符串做逆序处理的函数
//这里需要逆序的原因是因为得到的结果为该进制的逆序
strrev(str);
}
|
|