伙计们可以帮我解决这个问题吗?这个程序在执行后崩溃,可以帮我识别出任何错误吗? [英] Guys can help me out with this program? This program crash after executed, can help me identify any error?
本文介绍了伙计们可以帮我解决这个问题吗?这个程序在执行后崩溃,可以帮我识别出任何错误吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
/* i'm working on a program to compute worker paycode, and the output */
#include <stdio.h>
void instruct (void);
void pause ();
int main()
{
int paycode,
Manager = 0, //Manager
HourWorker = 0, //Hourly Worker
ComWorker = 0, //Commission Worker
PieWorker = 0; //Piece Worker
double salary;
instruct ();
printf("------------------------------------------------------------------------------\n");
printf("Paycodes (1= Manager, 2= HourlyWorker, 3= CommissionWorker, 4= PieceWorker)\n (-1 To Terminate Program)\n");
printf("------------------------------------------------------------------------------\n");
printf("\nEnter Paycode :");
scanf("%d", paycode);
while (paycode != -1)
{
switch(paycode)
{
case 1:
Manager++;
printf("Manager Selected\n");
printf("Enter Weekly Salary: \n");
scanf("%f", salary);
printf("Manager's Total Salary is %2f\n", salary);
break;
case 2:
double wage;
int hours;
HourWorker++;
printf("Hourly Worker Selected\n");
printf("Enter Hourly Salary: \n");
scanf("%f", wage);
printf("Enter Total Hours Worked\n");
scanf("%d", wage);
if(hours <= 40)
salary = hours * wage;
else
salary = 40 * wage + (hours - 40) * wage * 1.5;
printf("Hourly Worker's Total pay is %2f\n", salary);
break;
case 3:
int sales;
ComWorker++;
printf("Commission Worker Selected\n");
printf("Enter Gross Weekly Sales: \n");
scanf("%d", sales);
salary = sales * 0.057 + 250;
printf("Commission Worker's Total Salary is %2f\n", salary);
break;
case 4:
int pieces, wagePiece;
PieWorker++;
printf("Piece Worker Selected\n");
printf("Enter Number of Pieces: \n");
scanf("%d", pieces);
printf("Enter Wage Per Piece: \n");
scanf("%d", wagePiece);
salary = pieces * wagePiece;
printf("Piece Worker's Total Salary is %2f\n", salary);
break;
}
printf("------------------------------------------------------------------------------\n");
printf("Paycodes (1= Manager, 2= HourlyWorker, 3= CommissionWorker, 4= PieceWorker)\n (-1 To Terminate Program)\n");
printf("------------------------------------------------------------------------------\n");
printf("\nEnter Paycode :");
scanf("%d", paycode);
}
printf("\t-------------------------------------");
printf("\n\t| Number of Employees Paid : ");
printf("%d,%d,%d,%d", Manager ,HourWorker , ComWorker ,PieWorker);
printf("\t\t|\n\t| Number of Managers Paid : %d", Manager);
printf("\t\t|\n\t| Number of Hourly Workers Paid : %d", ComWorker);
printf("\t\t|\n\t| Number of Piece Workers Paid : %d", PieWorker);
printf("\t\t|\n\t-------------------------------");
pause();
return 0;
}
void instruct(void)
{
printf("\tThis Program Will Calculate The Weekly Pay For Each \n");
printf("\temployee, List The Total NUmber Of Employees Paid \n");
printf("\tAnd The Total Number Of Managers, Hourly Workers, \n");
printf("\tCommission Workers And Piece Workers Paid For The Week. \n");
}
void pause()
{
printf("\nPress any key to continue....");
getch();
printf("\r");
printf(" ");
printf("\r");
}
推荐答案
你必须传递所有scanf()的指针
参数:
You must pass pointers for allscanf()
arguments:
double wage;
// Wrong
//scanf("%f", wage);
// Correct
scanf("%f", &wage);
除了Jochen对scanf的评论 - 你对于案例2有一个复制/粘贴错误。
In addition of Jochen's comments on scanf - you have a copy/paste bug for case 2.
printf("Enter Hourly Salary: \n");
scanf("%f", wage);
printf("Enter Total Hours Worked\n");
scanf("%d", wage);
...应该......
... should be ...
printf("Enter Hourly Salary: \n");
scanf("%f", &wage);
printf("Enter Total Hours Worked\n");
scanf("%d", &hours);
这篇关于伙计们可以帮我解决这个问题吗?这个程序在执行后崩溃,可以帮我识别出任何错误吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文