运行 进入以下代码的分段错误
Running into segmentation fault for below code
大家好,我的学校项目计划需要帮助,它是 switch()、if()...else、if()...else if()... 和任何其他的组合构造你需要有正确的输出。
程序规范:
某公司工资涨幅如下:
技术人员:工作满10年5%。 3% 给其他人
行政人员:
- 6% 给会计部门的人
- 市场部人员占 4%
- 其他3%
其他员工:增加 2%
这是我的代码,但每次我编译 运行 时都会出现 运行time 错误。:希望有人能帮助我,因为我是编程新手,明天到期
#include <stdio.h>
#include <conio.h>
int main (void)
{
int currentsalary;
int yearsinservice;
int percent;
float newsalary;
char choice1 ,choice2;
printf("Current Salary: \n");
scanf("%d", ¤tsalary);
printf("Staff Category: \n");
printf("T - technical \n");
printf("A - administrative \n");
printf("O - others \n");
printf("Enter the staff Category: \n");
scanf(" %c", choice1);
switch (choice1)
{
case't':
case'T': printf("No. of years in Service: ");
scanf("%d", &yearsinservice);
if (yearsinservice > 10)
{
percent = currentsalary*.05;
newsalary = currentsalary + percent;
printf("New Salary: %.2f", newsalary);
}
else
{
percent = currentsalary*.03;
newsalary = currentsalary + percent;
printf("New Salary: %.2F", newsalary);
}
break;
case'a':
case'A': printf("Department where the staff belongs:");
printf("A - accounting\n");
printf("M - marketing\n");
printf("O - others\n");
printf("Choose the department:\n");
scanf(" %c",&choice2);
if (choice2 == 'a' || choice2 == 'A')
{
percent = currentsalary*.06;
newsalary = currentsalary+percent;
printf("New Salary: %.2f", newsalary);
}
else if (choice2 == 'm' || choice2 == 'M');
{
percent = currentsalary*.04;
newsalary = currentsalary+percent;
printf("New Salary: %.2f", newsalary);
}
else
{
percent = currentsalary*.03;
newsalary = salary+percent;
printf("New Salary; %.2f", newsalary);
}
break;
case'o':
case'O': percent = currentsalary*.02;
newsalary = currentsalary + percent;
printf("New Salary: %.2f",newsalary);
break;
default: printf("Wrong Input");
getch();
}
getch();
return 0;
}
示例输出中的结果应该相同 1:
目前工资:15000
员工类别:
T - 技术
A - 行政
O - 其他
输入人员类别:T
没有。服务年限:11
新工资:15750.00
输出 2:
目前工资:20000
员工类别:
T - 技术
A - 行政
O - 其他
输入人员类别:A
员工所属部门
A - 会计
M - 营销
O - 其他
选择部门:A
新工资:21200.00
输出 3:
目前工资:15000
员工类别:
T - 技术
A - 行政
O - 其他
输入人员类别:O
新工资:15300.00
如我所见
点 1:(您的 运行时 错误)
scanf(" %c", choice1);
应该是
scanf(" %c", &choice1);
^
|
notice here
第 2 点:(您的 语法 错误)
您在 case
A:
块中的 else if
条件之后有一个不需要的 ;
。删除那个。
您的第一个错误是您正在调用
scanf(" %c", choice1);
你应该什么时候打电话
scanf(" %c", &choice1);
^
need the & here
您应该在变量前添加 &
(字符串除外)。
你的下一个错误是
else if (choice2 == 'm' || choice2 == 'M');
^
semicolon not needed
你在最后留下了一个分号。删除它。
你这行有问题
else if (choice2 == 'm' || choice2 == 'M');
^
去掉末尾的分号;
大家好,我的学校项目计划需要帮助,它是 switch()、if()...else、if()...else if()... 和任何其他的组合构造你需要有正确的输出。
程序规范:
某公司工资涨幅如下:
技术人员:工作满10年5%。 3% 给其他人
行政人员:
- 6% 给会计部门的人
- 市场部人员占 4%
- 其他3%
这是我的代码,但每次我编译 运行 时都会出现 运行time 错误。:希望有人能帮助我,因为我是编程新手,明天到期
#include <stdio.h>
#include <conio.h>
int main (void)
{
int currentsalary;
int yearsinservice;
int percent;
float newsalary;
char choice1 ,choice2;
printf("Current Salary: \n");
scanf("%d", ¤tsalary);
printf("Staff Category: \n");
printf("T - technical \n");
printf("A - administrative \n");
printf("O - others \n");
printf("Enter the staff Category: \n");
scanf(" %c", choice1);
switch (choice1)
{
case't':
case'T': printf("No. of years in Service: ");
scanf("%d", &yearsinservice);
if (yearsinservice > 10)
{
percent = currentsalary*.05;
newsalary = currentsalary + percent;
printf("New Salary: %.2f", newsalary);
}
else
{
percent = currentsalary*.03;
newsalary = currentsalary + percent;
printf("New Salary: %.2F", newsalary);
}
break;
case'a':
case'A': printf("Department where the staff belongs:");
printf("A - accounting\n");
printf("M - marketing\n");
printf("O - others\n");
printf("Choose the department:\n");
scanf(" %c",&choice2);
if (choice2 == 'a' || choice2 == 'A')
{
percent = currentsalary*.06;
newsalary = currentsalary+percent;
printf("New Salary: %.2f", newsalary);
}
else if (choice2 == 'm' || choice2 == 'M');
{
percent = currentsalary*.04;
newsalary = currentsalary+percent;
printf("New Salary: %.2f", newsalary);
}
else
{
percent = currentsalary*.03;
newsalary = salary+percent;
printf("New Salary; %.2f", newsalary);
}
break;
case'o':
case'O': percent = currentsalary*.02;
newsalary = currentsalary + percent;
printf("New Salary: %.2f",newsalary);
break;
default: printf("Wrong Input");
getch();
}
getch();
return 0;
}
示例输出中的结果应该相同 1:
目前工资:15000
员工类别:
T - 技术
A - 行政
O - 其他
输入人员类别:T
没有。服务年限:11
新工资:15750.00
输出 2:
目前工资:20000
员工类别:
T - 技术
A - 行政
O - 其他
输入人员类别:A
员工所属部门
A - 会计
M - 营销
O - 其他
选择部门:A
新工资:21200.00
输出 3:
目前工资:15000
员工类别:
T - 技术
A - 行政
O - 其他
输入人员类别:O
新工资:15300.00
如我所见
点 1:(您的 运行时 错误)
scanf(" %c", choice1);
应该是
scanf(" %c", &choice1);
^
|
notice here
第 2 点:(您的 语法 错误)
您在 case
A:
块中的 else if
条件之后有一个不需要的 ;
。删除那个。
您的第一个错误是您正在调用
scanf(" %c", choice1);
你应该什么时候打电话
scanf(" %c", &choice1);
^
need the & here
您应该在变量前添加 &
(字符串除外)。
你的下一个错误是
else if (choice2 == 'm' || choice2 == 'M');
^
semicolon not needed
你在最后留下了一个分号。删除它。
你这行有问题
else if (choice2 == 'm' || choice2 == 'M');
^
去掉末尾的分号;