基本的C编程帮助

时间:2011-05-19 18:10:45

标签: c

嘿,我需要帮助编写一个简单的程序。我希望能够使用模数来演示整数和余数的使用。我被困在如何计算信息。任何帮助将不胜感激,但这是一般的想法。该计划包括以下内容:

1 week = 40 hours ($200 per week)
1 day = 7 hours   ($45 per day)
                  ($2 per hour)

示例运行:

Enter the total hours:59 (59 is just an example.)
You have:
         1week
         2day(s)
         5hr(s)
Payment: $300.00

这是我到目前为止所提出的......

int main(){

   int totalWeekHrs = 0,
   totalDayHrs = 0,
   totalWorkedHrs = 0;

   float totalPayment = 0,
     payPerWeek = 0,
     payPerDay = 0,
     PayPerHr = 0;

   // Input process   
   printf("Enter the total hours :");
   scanf("%i",&totalWeekHrs,&totalDayHrs,&totalWorkedHrs);

  // Calculative process

system("pause");    
}

2 个答案:

答案 0 :(得分:1)

这闻起来像家庭作业,所以我将解释模数是如何工作的。

模数运算符%执行整数除法并返回余数。例如:

int foo = 6;
int bar = 4;
int remainder = foo % bar;

在该示例中,remainder将设置为2。

您可以阅读有关模数运算符here的更多信息。

答案 1 :(得分:0)

我不会用代码回答你的问题,因为它似乎是功课。当你真正开始编码时,你也已经停止了!

问题是“改变回报”典型问题的另一个问题。这是一个急切的算法,试图以最大的步骤来解决目标。

你必须有两个并列向量:

{ 40,   7, 1 }  // hours worked (week, day, hour)
{ 200, 45, 2 }  // salary for each item above.

请注意,第一个向量已排序,每个位置与第二个位置匹配。在你的例子中,目标是59.

对于第一个向量中的每个位置,您必须除以目标,并注释剩余的位置。

例如,对于第一个位置,最大金额为1,第二个位置为2 ......

First step:
( 59 / 40 ) == 1
( 59 % 40 ) == 19

Second step:
( 19 / 7 ) == 2
( 19 % 7 ) == 5

Third step:
( 5 / 1 ) == 5
( 5 % 1 ) == 0

你最终会得到一个向量,只要第一个带有结果:

{ 1, 2, 5 } // one week, two days and five hours.

为了显示结果,只需遍历向量,并将每个位置乘以第二个向量中的相同位置:

1 week(s)  ( 1 * 200 )
2 day(s)   ( 2 * 45 )
5 hour(s)  ( 5 * 2 )

( 1 * 200 ) + ( 2 * 45 ) + ( 5 * 2 ) = 300

通过这种方式,您可以获得所需的结果。