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

求改错。该怎么处理

2012-12-30 
求改错。#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
希望能帮到你


#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;
}

热点排行