Hola! al final si tenias el error en la funcion buscoAlm(). El problema esta en el else del for:
   
Código C:
Ver original- //Busco el alumno 
- for(i=0;i<valor;i++){ 
- if(strcmp(- dni ,-  b [- i ]- . dni) == 0){
 
- val = 1; 
- break; 
- } 
- else{ 
- printf("El alumno no existe\n"); 
- val = 0; 
- break; 
- } 
- } 
Ese else no deberia esta ahi; al hacer un break en el else estas 
obligando a que el for solo cumpla un ciclo y luego salga.. Deberia ser asi:   
Código C:
Ver original- //Busco el alumno que deseo ingresar las notas 
- int buscoAlm(struct alumno b[], int valor){ 
-   
- //struct alumno doc; 
- int i, con=0, registros=1, reg; 
- int val = 0; 
- char dni[10]; 
- //Ingreso el alumno a buscar 
- printf("Ingrese el dni del alumno para buscarlo\n"); 
-   
- //Busco el alumno 
- for(i=0;i<valor;i++){ 
- if(strcmp(- dni ,-  b [- i ]- . dni) == 0){
 
- val = 1; 
- break; 
- } 
- } 
-   
- if(val==0){ 
- printf("El alumno no existe\n"); 
- } 
- return val; 
- } 
Cosas que vi:
1º para que buscas por dni si lo unico que haces es retornar un 1 si existe o un 0 en caso contrario, me refiero a q no lo utilizas para nada a ese dato.
Si lo que queres es encontrar por dni y 
luego cargar la nota a ese dni encontrado lo que deberias hacer es retornar la posicion del arreglo donde se encontro y luego pasarle ese dato a la funcion cargoNota() para cargar las notas
2º A cada alumno vos le queres ingresar 5 notas como maximo pero solo podes ingrasar una nota ya que en la estructura declaras int nota; deberias declarar un arreglo para ingresar mas de una nota por alumno,ej:   
Código C:
Ver original- typedef struct alumno{ 
- char nomApe[50]; 
- char dni[10]; 
- int nota[5]; 
- }alumno; 
Revisa bien el programa y fijate si hace lo que vos queres 
Saludos