求大佬解决这到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;}
}
提交返回 展开
本题要求实现一个将长整数转化成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;}
}
提交返回 展开
2个回答
展开全部
#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;}
}
展开全部
#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;}
}
追问
感谢大佬我去测试一下
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |