读书人

求改错。该怎么处理

发布时间: 2012-12-30 10:43:15 作者: rapoo

求改错。
#include <iostream.h>
void fun1(char *s,int n,int r)
{
int i = 0;
while(n > 0)
{
if(n % r > 9)
*s = 'A' + n % r - 10;
else
*s = '0' + n % r;
n = n / r;
s++;
}
*s = '0';
}
void fun2(char *s)
{
char *p1 = s, *p2 = s;
while(*p2++) ;
p2--;
while(p1 < p2)
{
char *t = *p1;
*p1++ = *p2;
*p2-- = t;
}
}
void main()
{
char str[15];
int k,m;
cin>>k>>m;
fun1(&str,k,m);
fun2(&str);
cout<<str<<"\n";
}



[解决办法]
修改地方见注释
另外,原来函数fun1,对于n == 0情况,转换后字符串为空,应该转换成0,程序其参见fun11
希望能帮到你


#include <iostream>
using namespace std;

void fun11(char *s, int n, int r)
{
do {
if(n % r > 9)
*s = 'A' + n % r - 10;
else
*s = '0' + n % r;
n = n / r;
s++;
} while (n != 0);

*s = '\0';
}

void fun1(char *s,int n,int r)
{
while(n > 0)
{
if(n % r > 9)
*s = 'A' + n % r - 10;
else
*s = '0' + n % r;
n = n / r;
s++;
}
*s = '\0'; // 注意,结束符是'\0' 或者写0,不是字符'0'
}

void fun2(char *s)
{
char *p1 = s, *p2 = s;
while(*p2++)
;
p2--; // 此时p2指针结束符'\0'
p2--; // 再减1
while(p1 < p2)
{
char t = *p1; // char * 类型错误,以为char
*p1++ = *p2;
*p2-- = t;
}
}

int main()
{
char str[15] = { 0 };
int k,m;
cin>>k>>m;
fun11(str,k,m); // str是一个地址值,传入str


cout << str << endl;
fun2(str);
cout<<str<<"\n";

return 0;
}

读书人网 >C++

热点推荐