Hi guys, im working on my school assignment and there is that glitch in my program. it basically skips or ignores my code to read a char. I cant fig it out. my code is as it should be. Please dont ask me why there are so many functions its not my fault its the teachers requirement. we are not supposed to use parameters and use anything except void so... please just help me with those lines to read a character

Code:
none of those 2 work... the compiled proggie just skips the line. using bloodshed 4 (and im not allowed to use anything else.

scanf("%c",&ch);
ch = getchar();
Code:
/*
  Program Internet Service.
  
  Add your own documentation.

*/

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>


/* Global Variables */
int number;
int clients;
char ch;
float MonthlyCharge;
float HourlyCharge;
float totalCharge;
float GlobalCharge;
float AverageCharge;
float usage;



/* Function Prototypes */
void initialize_2100();
void obtain_input_2200();
void process_customer_2300();
void display_details_2400();
void calculate_average_2500();
void display_summary_2600();

void calculate_monthly_charge_3310();
void calculate_monthly_charge_rate_4110();
void Calculate_connection_charge_4120();
void calculate_total_charge_4130();

void Update_Accumulator_And_Counter_3320();
void Increment_number_of_clients_4210();
void Add_to_total_charge_for_all_clients_4220();

/* Program Mainline */
int main()
{
    initialize_2100();
    obtain_input_2200();
   while(number !=  999 )
   {
        process_customer_2300();
        display_details_2400();
        obtain_input_2200();
    }
   calculate_average_2500();
   display_summary_2600();

    printf ("\n\n");
    system ("PAUSE");
    return 0;
}
/*  Code/Define all prototyped modules  */

void initialize_2100()
{
 number = 0;
 clients = 0;
 totalCharge = 0;
 usage = 0;
 GlobalCharge =0;

}

void obtain_input_2200()
{
 printf("Enter the customer number : ");
 scanf("%d",&number);
 printf("Enter service code : ");
 //scanf("%c",&ch);
 ch = getchar();
 printf("Usage in hours : ");
 scanf("%f",&usage);
}

void process_customer_2300()
{
 calculate_monthly_charge_3310();
 Update_Accumulator_And_Counter_3320();
}

void calculate_monthly_charge_3310()
{
 calculate_monthly_charge_rate_4110();
 Calculate_connection_charge_4120();
 calculate_total_charge_4130();
}

void calculate_monthly_charge_rate_4110()
{
const RateMonthBusiness = 40;
const RateMonthEconomy = 10;
const RateMonthUnlimited = 30;

 switch(toupper(ch))
 {
  case 'B' :
       MonthlyCharge = RateMonthBusiness ;
       break;
  case 'E' :
       MonthlyCharge = RateMonthEconomy ;
       break;
  case 'U' :
       MonthlyCharge = RateMonthUnlimited;
       break;
  default :
          printf("Unknown operator %c\n",ch);
  }

}

void Calculate_connection_charge_4120()
{
 const float RateHourBusiness = 0.20;
 const float RateHourEconomy = 0.10;

 switch(ch)
 {
  case 'B' :
       printf("We are processing B : %f\n",usage );
       HourlyCharge =usage * RateHourBusiness ;
       break;
  case 'E' :
       printf("We are processing E\n");
       HourlyCharge =usage * RateHourEconomy  ;
       break;
   default :
          HourlyCharge = 0  ;
          printf("Unknown Customer Charge %c\n",ch);
  }

}

void calculate_total_charge_4130()
{
 printf("Hourly Customer Charge %f\n",HourlyCharge);
 printf("Monthly Customer Charge %f\n",MonthlyCharge);
 totalCharge = HourlyCharge + MonthlyCharge;
}

void Update_Accumulator_And_Counter_3320()
{
 Increment_number_of_clients_4210();
 Add_to_total_charge_for_all_clients_4220();
}

void Increment_number_of_clients_4210()
{
 clients+=1;
}

void Add_to_total_charge_for_all_clients_4220()
{
 GlobalCharge += totalCharge;
}

void display_details_2400()
{
 printf("Customer number : %d \n",number);
 printf("Service Code : %c \n",ch);
 printf("Total Charge for Customer : %.2f \n",totalCharge);
}

void calculate_average_2500()
{
 AverageCharge =  GlobalCharge / clients;
}

void display_summary_2600()
{
 printf("Number of Customers Processed : %d \n",clients);
 printf("Average Monthly Charge for All Customers : %.2f \n",AverageCharge);
}