当前位置: 代码迷 >> C语言 >> c语言基础,急急急急急急急急
  详细解决方案

c语言基础,急急急急急急急急

热度:196   发布时间:2008-05-26 16:22:22.0
c语言基础,急急急急急急急急
(1)写一函数 int  chtoint(char s[]);能把字符串s中的字符串(16进制)转换成int型值(10进制),如果s中的字符串是“-A23B”,则应返回- 41531。(要求用字符数组实现)
(2)写一函数 char*  inttoch(int  i);能把整数i中的数字(10进制)换成字符串(16进制),如果i= 41531,则应返回“A23B”。(要求用指针实现)
搜索更多相关的解决方案: c语言  基础  

----------------解决方案--------------------------------------------------------
哎,十六进制好象没有负数啊
关于你的2个问题,详见“ssanf”函数。(有两个s)
----------------解决方案--------------------------------------------------------
这个是我写的,敬请指教!

#include "Stdio.h"
#include "Conio.h"
#include "ctype.h"
#define N 20

char str[N];

unsigned long int power(int base,int exp)
{
    int i;
    unsigned long int mid=1;

    for(i=0;i<exp;i++)
    {
         mid*=base;
     }

     return mid;
}


long chtolong(char *ps)
{
    unsigned long int ch;
    int len, i;
    long digit=0;
    char *s=ps;


    len=strlen(s);

    for(i=0;i<len;i++,s++)
    {
        if(isalpha(*s))
        {
            ch=tolower(*s)-87;        

            digit+=power(16,len-1-i)*ch;
        }
        else if(isdigit(*s))
        {
            ch=*s-'0';
            digit+=power(16,len-1-i)*ch;
        }
        else if(*s=='+'||*s=='-')
        {
                  ;                         /*printf("%c",*s);*/
        }
        else
        {
            printf("\nInput error!!!\n");
            return 0;

        }
    }

    if(*ps=='-')
        digit=-digit;
    return digit;

}


   
char *longtoch(long int n)
{
    int i=1,j, k;
    char ch;


    str[0]=0;
    if(n<0)
    {
        str[0]='-';         
        n=-n;
    }

    while(n!=0)
    {
        if(n%16>=10)
            str[i++]=n%16+87;        
        else
            str[i++]=n%16+48;
            
        n/=16;
    }

    j=(i-1)/2;

    for(k=1;k<=j;k++)
    {
        ch=str[k];
        str[k]=str[i-k];
        str[i-k]=ch;


    }

    return str;
}



int main(void)
{
   


    long int in, out;
    int i;

    printf("\nInput a string:\n");
    gets(str);


    out=chtolong(str);
    printf("\nOutput a long int from string:%ld\n",out);
    getch();

    printf("\nInput a long int digit:\n");
    scanf("%ld",&in);

    longtoch(in);
    printf("\nOutput a string from a long int :%s\n",str);

    getch();
    return 0;
}
----------------解决方案--------------------------------------------------------
那个啥,是数字就有正负之分吧?看是原码还是补码或者直接给你符号……
刷完版了,去睡觉……明天早晨起来看《琴帝》,每天早晨有新小说看的感觉真舒服啊……
----------------解决方案--------------------------------------------------------
三楼的代码写得不好

[color=white]
----------------解决方案--------------------------------------------------------
我在看《刑名师爷》,超好看
还有《恶魔法则》也不错。
前段时间看到了一个《修真的电脑程序员》,我郁闷ing……
----------------解决方案--------------------------------------------------------
  相关解决方案