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

求大佬解决这到C语言题,指出哪里有错误,帮我写一下正确的程序,万分感谢QAQ-17 长整数转化成16进制字符串(10 分)本题要求实现一个将长整数转化... 求大佬解决这到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;}

}

提交返回
展开
 我来答
听不清啊
高粉答主

2018-06-21 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.8亿
展开全部

#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;}
}
shine1991
科技发烧友

2018-06-21 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部
#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;}
}
追问
感谢大佬我去测试一下
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式