首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求改错。该怎么解决

2012-11-10 
求改错。#include iostream.hvoidfun1(char *s,int n,int r){int i 0while(n 0){if(n % r 9)*s

求改错。
#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;} 

热点排行