函数中的数组

时间:2011-07-24 05:32:12

标签: c++

我正在尝试编写一个程序,它从用户输入两个数字作为字符串....如果第一个数字大于第二个数字它们相乘并返回结果...我将输入数字转换为字符数组,然后使用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任何人都可以指出问题

1 个答案:

答案 0 :(得分:1)

实际上很简单:你没有在small1和greater1中初始化第一个和第二个。局部变量永远不会隐式初始化。