Estarei disponibilizando abaixo 30+ exercícios resolvidos utilizando a linguagem C, espero que estes contribua nos seus estudos.
Linguagem C
C é uma linguagem de programação compilada de propósito geral, estruturada, imperativa, procedural, padronizada pela ISO, criada em 1972, por Dennis Ritchie, no AT&T Bell Labs, para desenvolver o sistema operacional Unix (que foi originalmente escrito em Assembly).
Fonte: Wikipedia
Exercício 1
Faça um algorítimo que receba valores inteiros de uma matriz 5×2 e preencha um vetor inteiro de
tamanho 10. Imprima o vetor preenchido.
/*
*  Autor: Kelvin Santiago
* Criado: 19/07/2013
*/
#include<math.h>
#include<stdio.h>
#include<string.h>
int main(){
int vetor[9], i;
for (i = 0; i < 10; i++){
scanf("%d",&vetor[i]);
printf("%d\n",vetor[i]);
}
return 0;
}
Exercício 2
Fazer um algoritmo que:
Leia números de matrículas de alunos e armazene-os em um vetor até o vetor ser preenchido por 10 matrículas. Esses números são distintos, ou seja, o vetor não armazenará valores repetidos.
/*
*  Autor: Kelvin Santiago
* Criado: 23/07/2013
*/
#include<math.h>
#include<stdio.h>
#include<string.h>
int main(){
int vetor[10], numero, cont, posicao = 0 ;
while (posicao < 10){
scanf("%d",&numero);
if (posicao == 0){
vetor[posicao] = numero;
printf("%d\n",vetor[posicao]);
posicao++;
}
else{
for(cont = 0; (cont < posicao)&&(vetor[cont]!= numero); cont++);
if (cont >= posicao){
vetor[posicao] = numero;
printf("%d\n",vetor[posicao]);
posicao++;
}
}
}
return 0;
}
Exercício 3
Fazer um algoritmo que:
Preencha um vetor com X números inteiros, em que o último número lido seja 999 (o último  número não fará parte do vetor). E  imprima o vetor na ordem inversa.
/*
 *  Autor: Kelvin Santiago
 * Criado: 23/07/2013
 */
#include<math.h>
#include<stdio.h>
#include<string.h>
int main(void){
	int contador = 0, numero, vetor[contador];
	scanf("%d",&numero);
	while (numero != 999){
		if (contador == 0){
		vetor[contador] = numero;
		contador++;
		}	
			else{
			vetor[contador] = numero;
			contador++;
			}
	scanf("%d",&numero);		
	}
	if (numero == 999){
		contador--;
		}
	while ( contador >= 0 ){
		printf("%d\n",vetor[contador]);
		contador--;
	}
	return 0;
}
Exercício 4
Faça um programa que receba os valores de uma matriz de ordem 3 e imprimia sua diagonal principal de trás para frente.
/*
 *  Autor: Kelvin Santiago
 * Criado: 23/07/2013
 */
#include<math.h>
#include<stdio.h>
#include<string.h>
int main(void){
	int matriz[3][3], linha = 0, coluna = 0;
	for(linha = 0; linha < 3; linha++){
		for (coluna = 0; coluna < 3; coluna++){
			scanf("%d",&matriz[linha][coluna]);
		}
	}
	for (linha = 2; linha >= 0; linha--){
		for(coluna = 2; coluna >=0; coluna--){
			if ( linha == coluna){
					printf("%d\n",matriz[linha][coluna]);
			}
		}
	}	
	return 0;
}
Exercício 5
Fazer um algoritmo que:
Leia um vetor contendo 10 números, que correspondem a matrículas de alunos. Ler 3 matrículas e imprima uma mensagem informando se eles estão ou não presentes no vetor.
/*
 *  Autor: Kelvin Santiago
 * Criado: 23/07/2013
 */
#include<math.h>
#include<stdio.h>
#include<string.h>
int main(void){
	int vetor[10],contagem, verificanumero, contagemverifica = 0, contemcerto = 0;
	for(contagem = 0; contagem < 10; contagem++){
		scanf("%d",&vetor[contagem]);
	}
	while (contagemverifica < 3){
	scanf("%d",&verificanumero);
		for(contagem = 0; contagem < 10; contagem++){
			if (verificanumero == vetor[contagem]){
				printf("A matricula %d esta presente no sistema\n",verificanumero);
				contemcerto++;
			}
		}
			if(contemcerto == 0){
				printf("A matricula %d nao esta presente no sistema\n",verificanumero);
			}
	contagemverifica++;
	contemcerto = 0;
	}
	return 0;
}
Exercício 6
Fazer um algoritmo que:
Preencha 3 vetores, o primeiro com a nota da primeira prova, o segundo com a nota da segunda prova e o terceiro com a média das 2 primeiras notas, e imprima o resultado “APROVADO” para aqueles que obtiverem uma média igual ou acima de 6, e “REPROVADO” para quem obtiverem uma média abaixo de 6.
OBS.: Saia do laço quando a primeira nota for igual a -1.
/*
 *  Autor: Kelvin Santiago
 * Criado: 23/07/2013
 */
#include<math.h>
#include<stdio.h>
#include<string.h>
int main(void){
	int contador = 0;
	float vetor[3],nota = 0 ;
	scanf("%f",¬a);
	while ( nota != -1){
			vetor[contador] = nota;
			contador++;
			if (contador == 2){
				vetor[contador] = (vetor[0] + vetor[1]) / 2;
				printf("%.2f\n",vetor[contador]);
				if(vetor[contador] >= 6){
					printf("APROVADO\n");
				}
					else{
						printf("REPROVADO\n");
					}
						contador = 0;			
			}
			scanf("%f",¬a);
	}
	return 0;
}
Exercício 7
Preencha e imprima um vetor dos 20 primeiros números primos começando com o número 5000.
 
* Autor: Kelvin Santiago
* Criado: 24 / 07 / 2013
* 
*/ 
#include <stdio.h>
#include <math.h>
#include <string.h>
int main(void)
{
int contador_vetor = 0, vetor[20],  numeroprimo = 0, calculo = 0,numero, contador_verificar;
for (numero = 5000; contador_vetor < 20 ; numero++){
for (contador_verificar = 1; contador_verificar <= numero; contador_verificar++ ){
calculo = (numero % contador_verificar);
if (calculo == 0){   
numeroprimo++;
}
} 
if (numeroprimo == 2){
vetor[contador_vetor] = numero;
printf("%d\n",vetor[contador_vetor]);
contador_vetor++;             
}
numeroprimo = 0;
}
return 0;
}
Exercício 8
Fazer um algorítimo que leia os valores de um vetor inteiro de tamanho 10, e imprima o valor da soma dos números ímpares presentes neste vetor.
 
* Autor: Kelvin Santiago
* Criado: 25 / 07 / 2013
* 
*/ 
#include <stdio.h>
#include <math.h>
#include <string.h>
int main(void)
{
int vetor[10], somaimpares = 0, contador;
for(contador = 0; contador < 10; contador++){
scanf("%d",&vetor[contador]);
if (vetor[contador] % 2 != 0){
somaimpares += vetor[contador];
}
}
printf("%d\n",somaimpares);
return 0;
}
103. Fazer um algoritmo que leia os valores de duas matrizes 3×3 e imprima a mutiplicação das duas matrizes.
 
* Autor: Kelvin Santiago
* Criado: 25 / 07 / 2013
* 
*/ 
#include <stdio.h>
#include <math.h>
#include <string.h>
int main(void)
{
int matriz1[3][3], matriz2[3][3], matrizmult[3][3], linha, coluna, i, j, k;
// Fazendo Scan da PRIMEIRA matriz :DD
for(linha = 0; linha < 3; linha++){
for( coluna = 0; coluna < 3; coluna++){
scanf("%d",&matriz1[linha][coluna]);
}
}
// Fazendo Scan da SEGUNDA matriz :DD
for(linha = 0; linha < 3; linha++){
for( coluna = 0; coluna < 3; coluna++){
scanf("%d",&matriz2[linha][coluna]);
}
}
// Zerando matriz da multiplicacao
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++){
matrizmult[i][j]= 0;
}
}
// Fazendo Multiplicacao de matrizes :/
for( i = 0; i < 3; i++){  
       for( j = 0; j < 3; j++){   
           for( k = 0; k < 3; k++) {
               matrizmult[i][j] += matriz1[i][k] * matriz2[k][j]; 
}
}
}	
// Imprimindo matriz mult
for(linha = 0; linha < 3; linha++){
for( coluna = 0; coluna < 3; coluna++){
if( coluna == 2){
printf("%d\n",matrizmult[linha][coluna]);
}
else{
printf("%d ",matrizmult[linha][coluna]);
}
}
}
return 0;
}
Exercício 9
Faça um algorítimo que leia um vetor de 5 posições, e preencha um segundo vetor, sendo que cada posição do segundo vetor receberá o valor do primeiro vetor na mesma posição multiplicado pelo maior valor dentro do primeiro vetor.
 
* Autor: Kelvin Santiago
* Criado: 25 / 07 / 2013
* 
*/ 
#include <stdio.h>
#include <math.h>
#include <string.h>
int main(void)
{
int vetor1[5], vetor2[5], contador, maiornumero = 0;
// Lendo valores do primeiro vetor e verificando maior numero :DD
for(contador = 0; contador < 5; contador++){
scanf("%d",&vetor1[contador]);
if (maiornumero == 0){
maiornumero = vetor1[contador];
}
else if( vetor1[contador] > maiornumero){
maiornumero = vetor1[contador];
}
}
// Preenchendo vetor 2 multiplicando vetor 1 pelo maior numero.
for( contador = 0; contador < 5; contador++){
vetor2[contador] = vetor1[contador] * maiornumero;
printf("%d\n",vetor2[contador]);
}
return 0;
}
Exercício 10
Dado dois números inteiros X e Y, preencha um vetor em que é armazenado os primeiro X números múltiplos de Y.
 
* Autor: Kelvin Santiago
* Criado: 25 / 07 / 2013
* 
*/ 
#include <stdio.h>
#include <math.h>
#include <string.h>
int main(void)
{
int vetorA[5] = {0}, vetorB[8] = {0}, contador, contadorb, igualdades = 0;
for(contador = 0; contador < 5; contador++){
scanf("%d",&vetorA[contador]);
}
for(contador = 0; contador < 8; contador++){
scanf("%d",&vetorB[contador]);
}
for(contador = 0; contador < 5; contador++){
for(contadorb = 0; contadorb < 8; contadorb++){
if (vetorA[contador] == vetorB[contadorb]){
if (igualdades == vetorA[contador]){
}
else{
igualdades = vetorA[contador];
printf("%d\n",vetorA[contador]);
}
}
}
}
return 0;
}
Exercício 11
Dados dois vetores, A (5 elementos) e B (8 elementos), faça um programa que imprima todos os elementos comuns aos dois vetores.
 
* Autor: Kelvin Santiago
* Criado: 25 / 07 / 2013
* 
*/ 
#include <stdio.h>
#include <math.h>
#include <string.h>
int main(void)
{
int vetorA[5] = {0}, vetorB[8] = {0}, contador, contadorb, igualdades = 0;
for(contador = 0; contador < 5; contador++){
scanf("%d",&vetorA[contador]);
}
for(contador = 0; contador < 8; contador++){
scanf("%d",&vetorB[contador]);
}
for(contador = 0; contador < 5; contador++){
for(contadorb = 0; contadorb < 8; contadorb++){
if (vetorA[contador] == vetorB[contadorb]){
if (igualdades == vetorA[contador]){
}
else{
igualdades = vetorA[contador];
printf("%d\n",vetorA[contador]);
}
}
}
}
return 0;
}
Exercício 12
Fazer um algorítimo que seja lido um número inteiro X e preencha um vetor com os divisores de X, começando do X até o número 1. Imprimir o vetor em ordem inversa (de trás para frente).
 
* Autor: Kelvin Santiago
* Criado: 25 / 07 / 2013
* 
*/ 
#include <stdio.h>
#include <math.h>
#include <string.h>
int main(void)
{
int numero, divisores, numerodivisores = 0, vetor[numerodivisores], contador = 0;
scanf("%d",&numero);
for (divisores = 1; divisores <= numero; divisores++){
if (numero % divisores == 0){
vetor[contador] = divisores;
contador++;
numerodivisores++;
}
}
for(contador =0; contador < numerodivisores; contador++){
printf("%d\n",vetor[contador]);
}
return 0;
}
Exercício 13
Fazer um algoritmo que seja lido uma palavra e imprima a quantidade de letras que compões a palavra.
#include<stdio.h>
#include<string.h>
int main()
{
   char palavra[50];
   int i;
   scanf("%s",palavra);
   for(i = 0; i <= palavra[i]; i++){}
   printf("%d\n",i);
return 0;
}
Exercício 14
Fazer um algorítimo que seja lido uma palavra e imprima a quantidade de vogais que compõe a palavra.
* Autor: Kelvin Santiago
* Criado: 25 / 07 / 2013
* 
*/ 
#include <stdio.h>
#include <math.h>
#include <string.h>
int main(void)
{
char palavra[20];
int contador, numVogais = 0;
scanf("%s",palavra);
for(contador=0; contador < palavra[contador]; contador++){
if (palavra[contador]== 'A' || palavra[contador]== 'E'  || palavra[contador]== 'I' || palavra[contador]== 'O' || palavra[contador]== 'U'){
numVogais++;
}
}
printf("%d\n",numVogais);
return 0;
}
Caso tenha alguma dúvida sobre a linguagem C ou queira deixar algum feedback deixe nos comentários abaixo.
