我正在尝试编写一个程序,它从用户输入两个数字作为字符串....如果第一个数字大于第二个数字它们相乘并返回结果...我将输入数字转换为字符数组,然后使用ascii代码将字符转换为实际数字...然后我对数字进行计算...这里是我使用的函数...
double greater1(char a[],char b[],int size1,int size2)//the arrays here are those containing the two numbers
{ double first;
double second;
for(int i=0;i<size1;i++)
first=first+(pow(10.0,(double)(size1-i-1))*(a[i]-48));
for(int i=0;i<size2;i++)
second=second+(pow(10.0,(double)(size2-i-1))*(b[i]-48));
return(first>second?first:second);
}
double smaller1(char a[],char b[],int size1,int size2)
{ double first;
double second;
for(int i=0;i<size1;i++)
first=first+(pow(10.0,(double)(size1-i-1))*(a[i]-48));
for(int i=0;i<size2;i++)
second=second+(pow(10.0,(double)(size2-i-1))*(b[i]-48));
return(first<second?first:second);
}
double multiply(char a[], char b[],int size1,int size2)
{double first=greater1(a,b,size1,size2);
double second=smaller1(a,b,size1,size2);
//cout<<second;....(a)
//cout<<smaller1(a,b,size1,size2);....(b)
//cout<<smaller1(a,b,size1,size2);....(c)
//cout<<smaller1(a,b,size1,size2);....(d)
double mult=first*second;
return mult;
}
现在测试这些功能我输入43和10 ...但返回的产品是860 ...所以找到错误我插入了行(a),(b),(c),(d )....(a)给出输出20,(b)给出30,然后所有其他行(c),(d)......给出输出为10 ...当我插入
cout<<smaller1(arr1,arr2,ln1,ln2);//these parameters were the ones also passed to the above three functions
在main()中,每次我得到输出10 ....所以在multiply func中使用small1()一定有问题... plz任何人都可以指出问题
答案 0 :(得分:1)
实际上很简单:你没有在small1和greater1中初始化第一个和第二个。局部变量永远不会隐式初始化。