Вы можете использовать функции, чтобы разбить его так, чтобы для каждого истинного выражения он вызывал функцию. В каждой из функций вы запрашиваете доход, а затем даете результат. После того, как результат напечатан, он вызывает question3, чтобы повторить цикл.
Для каждого ложного выражения вы предоставляете другой выбор, который также либо вызывает функцию, либо дает другой выбор.
char single, head, joint;
int income = 0;
double tax = 0;
void Single();
void Head();
void Joint();
void question3(void)
{
printf("Are you single? (y/n) \n");
scanf(" %c", &single);
if (single == 'y')
{
Single();
}
else if (single == 'n')
{
printf("Are you the head of the house hold? y or n\n");
scanf(" %c", &head);
if (head == 'y')
{
Head();
}
else if (head == 'n')
{
printf("Do you have a joint marriage\n");
scanf(" %c", &joint);
if (joint == 'y')
{
Joint();
}
else if(joint == 'n')
{
question3();
}
}
}
}
void Single()
{
printf("What is your total income?");
scanf("%d", &income);
if (income == 17850)
{
tax = income * .15;
}
else if (income >= 17850)
{
tax = ((.15 * 17850) + (.28 * (income - 17850)));
}
printf("You owe %f dollars in taxes.\n\n", tax);
question3();
return 0;
}
void Head()
{
printf("What is your total income?");
scanf("%d", &income);
if (income == 23900)
{
tax = income * .15;
}
else if (income >= 23900)
{
tax = ((.15 * 23900) + (.28 * (income - 23900)));
}
printf("You owe %f dollars in taxes.\n\n", tax);
question3();
return 0;
}
void Joint()
{
printf("What is your total income?");
scanf("%d", &income);
if (income == 29750)
{
tax = income * .15;
}
else if (income >= 29750)
{
tax = ((.15 * 29750) + (.28 * (income - 29750)));
}
printf("You owe %f dollars in taxes.\n", tax);
question3();
return 0;
}
void main()
{
question3();
return 0;
}