Boa noite!
 
	Sou novo programando, estou precisando fazer um programa que leia o número de habitantes de uma determinada cidade, o valor do kwh, e para cada habitante gere aleatoriamente os seguintes dados: consumo do mês (0 - 500)e o código do consumidor (1-Residencial, 2-Comercial, 3-Industrial). No final imprima o maior, o menor e a média do consumo dos habitantes; e por fim o total do consumo de cada categoria de consumidor.
 
	Estou com problema na hora de demonstrar o total de consumo de cada categoria, é gerado números aleatórios e não a soma correta dos consumos.]
 
	outro problema que não consigo solucionar é que as vezes quando copila, sempre no primeiro habitante, o código do consumidor não aparece, ficando vazio e em baixo em todos os outros aparece, acho que pode ser até por isso que os valores das somas dão errado, só que não consigo resolver esse problema.
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main(){
	int nh, consumo, np=0, cdc, maior, menor=500;
	float vkw, tc, mc, cr,ccom, ci;
	char cc;
	srand(time(NULL));
	
	printf("digite o numero de habitantes da cidade \n");
	scanf("%d", &nh);
	
	printf("digite o valor do kwh \n");
	scanf("%.2f", &vkw);
	
	while(np<nh){
		consumo=rand()%500;
		cdc=rand()%4;
	    np=np+1;
	    tc=tc+consumo;
		mc=tc/nh;
		    
			if(cdc==1){
			cc='r';
			cr=cr+consumo;
		
		}
		  if(cdc==2){
		  	cc='c';
		  	ccom=ccom+consumo;
		  	
		  }
		  if(cdc==3){
		  	cc='i';
		  	ci=ci+consumo;
		    
		  	
		  }
		  if(consumo>maior){
		  	maior=consumo;
		  }
		  if(consumo<menor){
		  	menor=consumo;
		  }
		  
		printf("o consumo foi %d o tipo foi %c \n", consumo, cc);
		
	}
	printf("\no maior consumo foi de %d", maior);
	printf("\no menor consumo foi de %d", menor);
	printf("\no meu total de consumo foi de %.0f", tc);
	printf("\nminha media de consumo foi %.1f", mc);
	printf("\no total de consumo das residencias são %.0f \n o total de consumo dos comercios são %.0f \no total de consumo das indistriais são %.0f \n", cr, ccom, ci);