当我运行此C 程序时,销售名称1不会打印出来

When I run this C++ program, sales name 1 does not print out

本文关键字:打印 运行 程序      更新时间:2023-10-16

我没有任何错误,但是当我运行程序销售名称1时,没有打印出来。我正在使用C 。

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

void getData(string names[],double sales[3][4]); void
calTotalSales(string names[],double sales[3][4]);
int main() { double sales[3][4]; string names[3];
getData(names,sales);
calTotalSales(names,sales);    return 0; }
void getData(string names[],double sales[3][4]) {
   for(int i=0;i<3;i++)    {
       cout<<"Enter in the name of the salesman "<<i+1<<": ";
       cin>>names[i];
       cout<<"Now Enter in the sales for each quarter for "<<names[i]<<endl;
       for(int j=0;j<4;j++)
       {
           cout<<"Enter in the data for the quarter "<<j+1<<": ";
           cin>>sales[i][j];
       }
       cout<<endl;    } }

void calTotalSales(string names[],double sales[3][4]) {
   double max;    string name;    int i;

   cout << setprecision(2) << fixed;
       for(int j=0;j<4;j++)
       {
       max = sales[0][j];
       for(i = 0; i < 3; i ++)
       {
           if(max < sales[i][j])
           {
               max = sales[i][j];
               name = names[i];
           }
       }
       cout << "name is " << name << endl;
       cout << "Salesman " << name << " had the highest sale for the quarter " << j + 1 << " with $" << max << endl;    } }

首先,我认为您是C 的初学者,所以如果您不介意,我会给您一些建议,避免使用using namespace std尝试不使用,这里有一个解释您为什么不应该使用它,这仅仅是因为我有点痴迷,但尝试更好地格式化代码,它将更容易理解每个部分。

现在重要的部分,您的代码正常工作,但"销售名称1"不打印,因为一旦您将最大设置在此处:max = sales[0][j];在此位置实际上是最大值,它将永远不会进入如果:

if(max < sales[i][j])
{
     max = sales[i][j];
     name = names[i];
}

因此,如果它永远不会更改名称,则它永远不会进入,这就是为什么它不打印销售名称1,因此该解决方案与此设置max = sales[0][j]的更改一样简单:

max = sales[0][j];
name = names[0];

添加这最后一行将解决您的问题。

对不起,如果我没有足够清楚地解释自己(这是我的第一个答案:P)

相关文章: