|
发表于 2013-5-19 23:09:07
|
显示全部楼层
贴出来的代码错误太多了点,我改了下,代码如下:- #include<stdio.h>
- #include<string.h>
- int f(char c)
- {
- if(c >= '0'&&c <= '9')
- {
- return 1;
- }
-
- return 0;
- }
- int y(long int n)
- {
- int i = 0 ;
- int k = 0;
- int b[201] = {0};
- memset(b,0,201);
- if(n!=0)
- {
- k=0;
- while(n>0)
- {
- b[k++]=n%16;
- n=n/16;
- }
- for(i=k-1;i>=0;i--)
- {
- printf("%c", (b[i]/10)>0 ? b[i]-10+'A': b[i]+'0');
- }
-
- printf("\n");
- }
- else
- {
- printf("\n");
- }
-
- return 0;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- long int i = 0;
- int len = 0;
- char s[201] = {0};
- int a[201] = {0};
- memset(s,0,201);
- memset(a,0,201);
- printf("请输入要转换的字符串:");
- scanf("%s",s);
- len=strlen(s);
- int k=0;
- long int g=0;
- //这个for循环为了计算数字字符所代表的整数,比如字符“123”,代表十进制的123,把123给long int g,
- //然后在把所得的整数存入数组a中
- for(i=0;i<len;i++)
- {
- //如果s[i]为数字字符
- if(f(s[i])==1)
- {
- g=g*10+(s[i]-'0');
- }
-
- if(i==len-1 || (f(s[i])==1&&f(s[i+1])==0))
- {
- a[k++]=g;
- g=0;
- }
- }
- for(i = 0;i < k;i++)
- {
- y(a[i]);
- }
-
- int nQuit = 0;
- while (1 != nQuit)
- {
- printf("请输入1退出:");
- scanf("%d",&nQuit);
- }
- return 0;
- }
复制代码 结果如图:
|
|