#include <stdio.h>
int main ()
 {
    int notas [5];
    notas[0] = 1;
    notas[1] = 4;
    notas[2] = 7;
    notas[3] = 5;
    notas[4] = 10;
    printf("%d,%d,%d,%d,%d",notas[0],notas[1],notas[2],notas[3],notas[4]);
 }
        #include <stdio.h>
int main ()
 {
    int notas [5];
    notas[0] = 1;
    notas[1] = 4;
    notas[2] = 7;
    notas[3] = 5;
    notas[4] = 10;
    printf("%d,%d,%d,%d,%d",notas[0],notas[1],notas[2],notas[3],notas[4]);
 }
        Oi, Marcos! Tudo bem?
Parabéns pela dedicação e elaboração da solução! O printf de fato consegue imprimir os elementos do especificando cada índice, porém, para varrer um array de forma mais eficiente, especialmente se ele tiver muitos elementos, é comum usar um laço de repetição, como o for.
Por isso, deixo como sugestão um exemplo de como podemos modificar o código para usar um laço for para imprimir todos os elementos do array:
#include <stdio.h>
int main() {
    int notas[5];
    notas[0] = 1;
    notas[1] = 4;
    notas[2] = 7;
    notas[3] = 5;
    notas[4] = 10;
    for(int i = 0; i < 5; i++) {
        printf("%d", notas[i]);
        if (i < 4) {
            printf(",");
        }
    }
    return 0;
}
Nesse exemplo, o laço for percorre cada índice do array notas, imprimindo cada elemento. A condição if dentro do laço é usada para adicionar uma vírgula entre os números, mas não após o último número.
Espero ter ajudado!
Um forte abraço e bons estudos!