|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 meKj 于 2012-8-21 00:00 编辑
- #include <stdio.h>
- int main()
- {
- void shiliu (char a[]);
- char a[30];
- int flag = 1 , i ;
- for (flag ;flag == 1 ; ) //为什么主函数进不了循环?
- {
- printf("请输入一个十六进制:");
- gets (a);
- for (i = 0 ; a[i] != '\0' ; i ++)
- {
- if ('0' <= a[i] && a[i] <= '9' || 'a' <= a[i] && a[i] <= 'f' || 'A' <= a[i] && a[i] <= 'F')
- {
- flag = 0 ;
- }
- else
- {
- flag =1 ;
- printf("你的输入有误请重新输入:");
- break ;
- }
- }
- }
- shiliu (a);
- }
- void shiliu (char a[])
- {
- int b[30];
- int i , j , d , e , c , m = 16 , n = 0 ,g , k ;
- for (i = 1 ; ; i ++)
- {
- if (a[i] == '\0')
- {
- for (j = 0 ; i != 0 ; j ++ , i --)
- {
- b[j] = a[i - 1];
- }
- b[j] = '\0' ;
- break ;
- }
-
- }
- for (j = 0 ; b[j] != '\0' ; j ++)
- {
- if ('0' <= b[j] && b[j] <= '9')
- {
- for (d = '0' ,g = 0 ; d <= '9' ; d ++ , g ++)
- {
- if (d == b[j])
- {
- b[j] = g;
- break ;
- }
- }
- }
- else
- {
- for (e = 'A' , c = 10 ; e <= 'F' ; e ++, c ++)
- {
- if (e == b[j])
- {
- b[j] = c ;
- break;
- }
- }
- }
- }
- for (i = 0 , j = 0; b[i] != '\0' ; i ++ , j ++)
- {
- if (i == 0)
- {
- ;
- }
- else
- {
- for (k = 1 ; k <= i ; k ++)
- {
- b[j] = b[j] * m ;
- }
- }
- n = b[j] + n ;
- }
- printf("%d\n",n);
- }
复制代码
|
|