求改错。
#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
希望能帮到你
- C/C++ code
#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;}