2015-10-14 63 views
-5

我需要一些帮助,这个问题:简介编程C本

某公司支付佣金的基础上它的销售人员。销售人员每周收到100美元,加上当周总销售额的9%。例如,一周销售总额为3000美元的销售人员将获得$ 370.00(100.00 + 3000 * 0.09)。 编写一个C程序(使用一系列计数器)确定有多少销售人员在以下各个范围内获得薪水:

i。 $ 100 - 199
ii。 $ 200 - 299
iii。 $ 300 - 399
iv。 $ 400 - 499
v。$ 500 - 599
vi。 $ 600 - 699
vii。 $ 700 - 799
viii。 $ 800 - 899
ix。 $ 900 - 999
x。 1000美元及以上
注:将每位销售员的工资收入整数。

测试您的程序,为30名销售人员的团队随机生成总体销售数据,介于0和15000之间。

文档和缩进您的源代码适当的高可读性。

这是我到目前为止有:

#include <stdio.h> 
    #include <math.h> 

    int main() 
{ 
    int salesperson[10] = {}; 

    int gross = 0; 
    int commission = 1; 

    { 
     while(gross != 0); 
     printf("please enter a number from 0-3000 %\n;"); 
     printf("Enter gross sales: "); 
     scanf("%d", &gross); 
     commission = 100 + (.09 * gross); 

     if (commission >= 100 && commission <= 199) 
     { 
      salesperson[0]++; 
     } 

     if (commission >= 200 && commission <= 299) 
     { 
      salesperson[1]++; 
     } 

     if (commission >= 300 && commission <= 399) 
     { 
      salesperson[2]++; 
     } 

     if (commission >= 400 && commission <= 499) 
     { 
      salesperson[3]++; 
     } 

     if (commission >= 500 && commission <= 599) 
     { 
      salesperson[4]++; 
     } 

     if (commission >= 600 && commission <= 699) 
     { 
      salesperson[5]++; 
     } 

     if (commission >= 700 && commission <= 799) 
     { 
      salesperson[6]++; 
     } 

     if (commission >= 800 && commission <= 899) 
     { 
      salesperson[7]++; 
     } 

     if (commission >= 900 && commission <= 999) 

     { 

      salesperson[8]++; 
     } 
     if (commission >= 1000) 
     { 
      salesperson[9]++; 
     } 

    } 
     printf("a) $100-199:%d\n", salesperson[0]); 
     printf("b) $200-299: %d\n", salesperson[1]); 
     printf("c) $300-399: %d\n", salesperson[2]); 
     printf("d) $400-499; %d\n", salesperson[3]); 
     printf("e) $500-599: %d\n", salesperson[4]); 
     printf("f) $600-699: %d\n", salesperson[5]); 
     printf("g) $700-799: %d\n", salesperson[6]); 
     printf("h) $800-899: %d\n", salesperson[7]); 
     printf("i)$900-999:%d\n", salesperson[8]); 
     printf("j) $1000 and over: %d\n", salesperson[9]); 






    return 0; 
} 

当我运行程序我的成绩不断传来为0,我不知道为什么。有人能帮我吗?

+1

这行代码什么也不做'while(gross!= 0);'。 –

+0

所有这些'if'语句都可以用单个语句替换'if(commission> = 100){salesperson [commission/100 - 1] ++;}' – Barmar

+2

这应该被移植到CodeReview.stackexchange.com,但是' while(gross!= 0);'是一段时间语句遗漏了一个主体。 – JPhi1618

回答

0

您的循环没有任何机构。更改此:

{ 
    while (gross != 0); 
    printf("please enter a number from 0-3000 %\n;"); 
    printf("Enter gross sales: "); 
    scanf("%d", &gross); 
    commission = 100 + (.09 * gross); 

要这样:

while (1) 
{ 
    printf("please enter a number from 0-3000 %\n;"); 
    printf("Enter gross sales: "); 
    scanf("%d", &gross); 
    if (gross == 0) break; 
    commission = 100 + (.09 * gross); 
+0

谢谢你们我做到了,我仍然得到0为我的结果 –

+0

如果我想通过使用随机int生成会怎么样我那样做? –

+0

在你的循环中,而不是使用scanf得到总值,你可以这样做:gross = rand()%3001;它产生一个介于0到3000之间的随机数。但请注意,这是伪随机的,每次运行该程序时都需要播种以提供不同的答案。谷歌会告诉你更多这方面的信息。 tutorialspoint.com/c_standard_library/c_function_rand.htm – Samidamaru

1

你写这样的:

{ 
    while (gross != 0); 

但我觉得你的意思是这样的:

while (gross != 0) 
{ 

一个while语句,后跟一个;本质上是一个无操作 - 循环的主体是空的。如果你想重复大括号内的所有代码,while需要在大括号之前。从大写字母{到大写字母{的代码是循环的“主体”,即循环的每次迭代都执行的部分。

另外,您应该初始化gross以达到0以外的某个值,以便在您甚至没有机会获得值之前不会退出循环。 -1将工作的初始值。

0

以及其他答案,你的while循环条件是没有意义的。

你开始gross = 0;

然后你的循环立即说 while(gross != 0)

即如果毛重不是0,可以做点什么。

但总数为0.因为这就是你设定的。

所以它只是在打印所有初始化为0的数组值后立即退出。因此,您的值为零。

你可以通过在while循环条件中加入更明智的东西来解决它。像:

while(! (gross > 3000))

,或者如果你想在上面的东西是键入它退出的东西。

+0

如果我想通过使用随机int生成它,我会怎么做? –

+0

在你的循环中,代替使用scanf来获得'gross',你可以做如下的事情:'gross = rand()%3001;'产生一个介于0到3000之间的随机数。但是请注意这是伪随机的,需要每次运行程序时都会播种不同的答案。谷歌会告诉你更多这方面的信息。 http://www.tutorialspoint.com/c_standard_library/c_function_rand.htm – Samidamaru

+0

我刚刚更新了我的文章。我的while循环的建议条件也是错误的。我现在编辑的那个是正确的,当我用这种条件运行你的代码时看起来是正确的 – Samidamaru