#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void HEX_DEC(int num,int N){
if(num>N-1){
HEX_DEC(num/N,N);
}
printf("%d",num%N);
}
void main(){
int num;
printf("输入一个十六进制的数\n");
scanf("%x",&num);
printf("直接用%%d输出:%d\n",num);
printf("用函数输出:");
HEX_DEC(num,10);//转换成几进制就把第二个参数换成几
printf("\n");
system("pause");
}
运行结果:
scanf用法:
输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加&。
scanf("%s",s);改为scanf("%s",&s);
scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);
格式控制字符串包含:格式控制说明,普通字符。
1、格式控制字符串表示输入的格式,(int型用%d,float用%f,double型用%lf)
2、普通字符:在输出数据的时候,按照原样输出的字符,如:"fahr=%d,celsius=%d\n"中的fahr=,celsius=。
3、输入的参数是变量的地址,所以要在变量前面加&。
#include
#include
#include
int main()
{
void tran(int);
int x;
printf("请输入一个十六进制数:");
for(;;printf("输入不正确,请输入一个十六进制数:"))
{
if(scanf("%x",&x))
break;
fflush(stdin);
}
tran(x);
getch();
return 0;
}
void tran(int x)
{
int i,s[10]={0};
for(i=0;x;i++)
{
s[i]=x%10;
x/=10;
}
for(i--;i>=0;i--)
printf("%d",s[i]);
printf("\n");
}
祝你成功!
#include
#include
main()
{
char s[32];
scanf("%s", s);
int len = strlen(s), ans = 0, i;
for(i = 0; i < len; i++)
{
int index;
if(s[i] >= 'a' && s[i] <= 'f')
index = s[i] - 'a' + 10;
else if(s[i] >= 'A' && s[i] <= 'F')
index = s[i] - 'A' + 10;
else index = s[i] - '0';
ans += (int)(index * pow(16.0, len - 1 - i));
}
printf("%d\n", ans);
}
#include "stdio.h"
void main(){
int x;
scanf("%x",&x);
printf("%d\n",x);
}