关于"功能的使用"在C.

时间:2014-11-27 03:46:40

标签: c function programming-languages

我是编程的初学者,现在我已经被困在以下问题上几天了。

我正在重写我创建的this段代码,仅使用“函数”。请注意,在执行原始程序时,我们有程序员的平均咖啡消耗量= 1.25 。但是,通过使用函数here,我得到一个不同的数字 0.63

我想弄清楚错误在哪里,但我被卡住了。 有人可以解释我的错误,也许可以给我一些建议吗? 作为初学者,我会接受任何建设性的评论/批评。

代码:

float conso(char posteVoulu, char poste[], int nbElem, int tableau[])
{
   int i ;
   float somme = 0.0;
   for(i = 0; i < nbElem; i++)
       {
           if (poste[i] == posteVoulu)
               {
                   somme += tableau[i];
               }
       }
   return somme / nbElem;
}


void afficher(int age[], int nbCafe[], char poste[], int nbPers)
{
   int i;

   printf("Contenu des 3 tableaux:\n\n");
   printf("  Indice  Age    #Cafe     Poste\n");
   for ( i = 0; i < nbPers; i++)
   {
       printf("%5d%8d %6d   ", i, age[i], nbCafe[i]);
       switch (poste[i])
       {
       case 'A' :
           printf("  Analyste\n");
           break;
       case 'P' :
           printf("  Programmeur\n");
           break;
       case 'O' :
           printf("  Operateur\n");
           break;
       }
   }
   printf("\n");
}
int main()
{
   char poste[] = {'A', 'P', 'O', 'P', 'A', 'O', 'P', 'P'};
   int age[]= {25, 18, 23, 20, 49, 24, 56, 29},
       nbCafe[] = {3, 1, 6, 1, 4, 1, 0, 3} ;
   int nbPers = sizeof(age) / sizeof(int);

afficher(age, nbCafe, poste, nbPers);

printf("La consomation moyenne de cafe des programmeurs : %.2f\n",
       conso('P', poste, nbPers, nbCafe));

   printf("\n");
   system("pause") ;
   return 0;
}

1 个答案:

答案 0 :(得分:3)

在您的新代码中,您将由所有人(8)划分程序员(5)消耗的咖啡。在原始代码中,您首先计算了程序员的数量(4)。这是conso的固定版本:

float conso(char posteVoulu, char poste[], int nbElem, int tableau[])
{
   int   i;
   float somme  = 0.0;
   int   nbPers = 0;
   for(i = 0; i < nbElem; i++)
       {
           if (poste[i] == posteVoulu)
               {
                   somme += tableau[i];
                   nbPers++;
               }
       }
   if (nbPers == 0)
       return 0;
   return somme / nbPers;
}