求大佬解决这到C语言题,指出哪里有错误,帮我写一下正确的程序,万分感谢QAQ

求大佬解决这到C语言题,指出哪里有错误,帮我写一下正确的程序,万分感谢QAQ-17 长整数转化成16进制字符串(10 分)

本题要求实现一个将长整数转化成16进制字符串的简单函数。

函数接口定义:

void f( long int x, char *p );

其中x是待转化的十进制长整数,p指向某个字符数组的首元素。函数f的功能是把转换所得的16进制字符串写入p所指向的数组。16进制的A~F为大写字母。

裁判测试程序样例:

#include <stdio.h> #define MAXN 10 void f( long int x, char *p ); int main() { long int x; char s[MAXN] = ""; scanf("%ld", &x); f(x, s); printf("%s\n", s); return 0; } /* 你的代码将被嵌在这里 */

输入样例1:

123456789

输出样例1:

75BCD15

输入样例2:

-125

输出样例2:

-7D

作者: 张泳

单位: 浙江大学城市学院

时间限制: 400ms

内存限制: 64MB

代码长度限制: 16KB

编译器

C (gcc)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

void f(long x,char * s)

{

if (x < 0) s[0] = '-';

int i,j,c;

for(i=(x<0?0:-1);x>0;i)

{

s[++i]=x%16;

x/=16;

}

for(j=i;j>=0;j--)

if(s[j]<10)s[j]+=48;

else s[j]+=55;

s[i+1]='\0';

for(j=0;j<i;j++,i--)

{c=s[j];s[j]=s[i];s[i]=c;}

}

提交返回

#include <stdio.h>
#define MAXN 10
void f( long int x, char *p );
int main()
{ long int x;
 char s[MAXN] = "";
 scanf("%ld", &x);
 f(x, s); printf("%s\n", s);
 return 0;

void f(long x,char * s)
{
int i=0,j=0,c;
if (x < 0){s[0] = '-'; x=-x; i=j=1;}
do{
s[i]=x%16;
s[i]+=s[i]<10?48:55;
i++;
x/=16;
}while(x>0);
s[i]='\0';
for(i--;j<i;j++,i--)
{c=s[j];s[j]=s[i];s[i]=c;}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-06-21
#include <stdio.h> 
#define MAXN 10 
void f( long int x, char *p ); 
int main() 

    long int x;
    char s[MAXN] = "";
    scanf("%ld", &x);
    f(x, s);
    printf("%s\n", s);
    return 0;
} /* 你的代码将被嵌在这里 */ 


void f(long x,char * s)
{
    int i,j,c;
    long t=x;
    if (x < 0)
    {
        s[0] = '-';
        x=-x;
    }
    for(i=(t<0?0:-1);x>0;i)
    {
        s[++i]=x%16;
        x/=16;
    }
    for(j=i;j>=(t<0?1:0);j--)
        if(s[j]<10)s[j]+=48;
        else s[j]+=55;
    s[i+1]='\0';
    for(j=t<0?1:0;j<i;j++,i--)
        {c=s[j];s[j]=s[i];s[i]=c;}
}

追问

感谢大佬我去测试一下

本回答被提问者和网友采纳

C语言关于access violation的问题程序如下:
而传入的strs是一个指针数组strs[0]指向的位置是静态区的内存,不可修改。所以会运行出错。关键在char *str[]= {"123","12","1"};这里,str是一个指针数组,通过{}来初始化数组的每个指针,注意这里赋值的是"123"这个静态串的地址给str[0]。这里的确分配了空间,并初始化了值;但是分配的是...

...翻译成英文,谢谢QWQ!最好不要机器翻译!万分感谢QAQ
to set up a foundation named after her in the 1980s, used to train young athletes. November 12, 1994, the "black antelope," died of brain cancer at the age of 54 years.采纳我吧,谢谢你啦!不满意欢迎追问!

相似回答