回复 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准备进行第二次运算时就不对了,我调试后显示第二次输入时第一个数组的值没有赋值进去,第二个数组的值反而被赋值成了我本想赋给第一个数组的值。
你看看这是哪里错了呀?