回复 5楼 hubinyes
											因为我写的一个求两个16进制的数的加法的程序在第一次运算时正常,第二次运算就不对了,我估计是数组已经赋值的原因,或者我估计错误,程序代码我这样写的#include<iostream>
#include<cmath>
void shuru(char a[],int &size);
void jisuan(char a[],int &size1,char b[],int &size2);
int zhuanhuan(char a[],int size);
int main()
{
    using namespace std;
    cout<<"这是一个计算两个十六进制数加法的程序"<<endl;
    
    char p;
    do
    {
        
        char a[10],b[10];
        int size1,size2;
         cout<<"请输入两个十六进制的数并用空格隔开"<<endl;
        shuru(a,size1);
        shuru(b,size2);
        jisuan(a,size1,b,size2);
        cout<<"是否继续计算?(Y or N)"<<endl;
        cin>>p;
    }
    while(p=='y'||p=='Y');
    return 0;
}
void shuru(char a[],int &size)
{
    using namespace std;
    char next;
    size=0;
    for(int i=0;i<10;i++)
    {
        cin.get(next);
        if(next==' '||next=='\n')
            break;
        a[i]=next;
        size++;
    }
    return;
}
void jisuan(char a[],int &size1,char b[],int &size2)
{
    using namespace std;
    int x,y,sum;
    x=zhuanhuan(a,size1);
    y=zhuanhuan(b,size2);
    sum=x+y;
    cout<<"结果转换为十进制为:"<<sum<<endl;
    return;
}
int zhuanhuan(char a[],int size)
{
    using namespace std;
    int num=0;
    for(int i=0;i<size;i++)
    {
        switch(a[i])
        {
            case '0':
                num=num+0*pow(16,size-1-i);
                break;
            case '1':
                num=num+1*pow(16,size-1-i);
                break;
            case '2':
                num=num+2*pow(16,size-1-i);
                break;
            case '3':
                num=num+3*pow(16,size-1-i);
                break;
            case '4':
                num=num+4*pow(16,size-1-i);
                break;
            case '5':
                num=num+5*pow(16,size-1-i);
                break;
            case '6':
                num=num+6*pow(16,size-1-i);
                break;
            case '7':
                num=num+7*pow(16,size-1-i);
                break;
            case '8':
                num=num+8*pow(16,size-1-i);
                break;
            case '9':
                num=num+9*pow(16,size-1-i);
                break;
            case 'a':
                num=num+10*pow(16,size-1-i);
                break;
            case 'b':
                num=num+11*pow(16,size-1-i);
                break;
            case 'c':
                num=num+12*pow(16,size-1-i);
                break;
            case 'd':
                num=num+13*pow(16,size-1-i);
                break;
            case 'e':
                num=num+14*pow(16,size-1-i);
                break;
            case 'f':
                num=num+15*pow(16,size-1-i);
                break;
        }
    }
    return num;
}
当输入y准备进行第二次运算时就不对了,我调试后显示第二次输入时第一个数组的值没有赋值进去,第二个数组的值反而被赋值成了我本想赋给第一个数组的值。
你看看这是哪里错了呀?