求大佬解决这到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;}
}
提交返回
感谢大佬我去测试一下
本回答被提问者和网友采纳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.采纳我吧,谢谢你啦!不满意欢迎追问!