Exercícios de Linguagem C

(Lista Completa)

Disciplinas de Programação
Departamento de Eletrônica de Curitiba
UTFPR


Respostas Selecionadas (ainda não disponível)


Lista #1 - Básicos

  1. Faça um programa que escreve na tela: "Que há num nome?"
  2. Faça um programa que pega um número inteiro do teclado. Imprima esse número somado com 5. Imprima o triplo desse número.
  3. A segunda lei de Newton diz que f = m.a (força é igual a massa vezes a aceleração). Faça um programa que, sendo dada pelo usuário a aceleração de um carro, em m/s2, que pesa 700 kg, calcule a força equivalente exercida pelo motor, em N, desprezando outros efeitos, tais como atrito.
  4. Altere o programa anterior para calcular a força equivalente exercida em um carro de 1,2 ton para obter a mesma aceleração. Pergunte ao usuário qual dos dois carros ele prefere.
  5. Qual o resultado da execução do programa abaixo?

    #include <stdio.h>
    main(){
        int joaquim=3;
        joaquim=(joaquim+3)*2;
        printf("%d ",joaquim);
        printf("%d ",joaquim+7);
        joaquim=(joaquim+3)*2;
        printf("%d\n",joaquim);
    }

     

  6. Pegue um número fracionário do usuário e imprima, com um só comando, cinco dados: o número, o dobro dele, a metade dele, a parte inteira (arredondando) e o resto da divisão por 2.
  7. Peça ao usuário um número de ponto flutuante e retorne apenas a parte fracionária.
  8. Faça um programa que converta um dado entrado pelo teclado de centímetros para milímetros ou polegadas. O usuário escolhe qual a unidade destino indicando o número 1 (milímetros) ou 0 (polegadas).
    Use a fórmula: conv = medida*1000*escolha + medida*2.54*(1-escolha)

Lista #2 - Laços Simples

  1. Faça um programa que mostre na tela todos os números de 1 a 100 usando laço for.
  2. Traduza para a linguagem C: tome um número pelo teclado e repita a operação de multiplicar ele por três (imprimindo o novo valor) até que ele seja maior do que 100. Ex.: se o usuário digita 5, deveremos observar na tela a seguinte sequência: 5 15 45 135.
  3. Utilizando o mesmo laço do exercício anterior, mostre a contagem de 1 a 100, outra de 10 a 1000 (de dez em dez), uma contagem de 2 a 200 (números pares apenas), outra de 1 a 199 (números ímpares) e uma contagem de 100 a 1, em várias colunas. Exemplo:

    1 10 2 1 100
    2 20 4 3 99
    3 30 6 5 98
    4 40 8 9 97
    ...

     

  4. Traduza para a linguagem C o seguinte "algoritmo": vá pegando uma tecla do usuário e imprima na tela, uma a uma, até que ele pressione a tecla W. Use a função getchar().
  5. Qual o resultado da execução do programa abaixo?

    #include <stdio.h>
    main(){
        int i;
        for(i=3;i<100;i=i*2)
            printf("%d ",i);
    }

     

  6. Qual o resultado da execução do programa abaixo? Conselho: faça o teste de mesa.

    #include <stdio.h>
    main(){
        int i=3,j;
        for(j=0;j<30;j+=i)
            printf("%d ",i++);
    }

     

  7. Faça um programa que calcula a associação em paralelo de dois resistores R1 e R2 entrados pelo usuário via teclado. O programa fica pedindo estes valores e calculando até que o usuário entre com um valor de resistência igual a zero.
    Fórmula: R=R1*R2/(R1+R2)
  8. Faça um programa que conte de 10 a 3, mostrando na tela, e calcula a soma desses números, usando laço for.
  9. Faça um programa que pegue um número do teclado e calcule a soma de todos os números de 1 até ele. Ex.: o usuário entra 7, o programa vai mostrar 28, pois 1+2+3+4+5+6+7=28.
  10. Utilizando o mesmo laço do exercício anterior, mostre a contagem de 1 a 100, outra de 10 a 1000 (de dez em dez), uma contagem de 2 a 200 (números pares apenas), outra de 1 a 199 (números ímpares) e uma contagem de 100 a 1, em várias colunas. Exemplo:

    1 10 2 1 100
    2 20 4 3 99
    5 30 6 5 98
    ...

     

  11. Faça um programa que dada uma quantia de dinheiro em libras inglesas imprime o equivalente em dólares canadenses. A relação é £1,0=$1,84. depois disso, pergunte se o usuário quer ou não transformar mais algum valor; se não quiser, encerre.
    Sugestão: tome um número do teclado; se for zero, encerre, senão repita toda a operação.
  12. Faça um programa que imprime o fatorial de um número entrado via teclado pelo usuário.
    Fórmula: o fatorial de um número n é n*(n-1)*(n-2)*...*2*1. para resolver, faça um laço que conta de 1 a n e vá multiplicando (tipo: x=x*i, onde i é a variável do for).
  13. Conserte o programa abaixo.

    // pra quem não gosta de alinhar (identar)

    // mostra as potências dos números
    // 1 a 9 (x, x*x, x*x*x e x*x*x*x)

    #include<stdio.h>
    void main(){
    int i,j,k,temp;
    printf(" x x*x ");
    printf("x*x*x x*x*x*x\n");
    while(i<=10) while(j<5){
    temp=1;while k<j
    temp=temp*i;
    printf("%9d",temp);}i++ j++;
    }
    printf("\n");

    /* ex. de saída:
            x       x*x     x*x*x
    000000001 000000001 000000001
    000000002 000000004 000000008
    000000003 000000009 000000027
    000000004 000000016 000000064
    */

  14. Existem três tipos de laços: for, while e do-while. Para cada programa abaixo, faça outros dois que executam da mesma forma, só que com os outros dois laços (ex.: se tem um com while, transforme para do-while e for). Perceba as diferenças, especialmente se mudarmos os valores iniciais.
  1. char ch;
    for(ch='a'; ch<='j'; ch++)
    printf("%c ",ch);
  2. int x=0,y=0;
    for( ; x+y<100; x++,y+=2)
    printf("%d ", x+y);
  3. int x=0,y=0;
    while(x+y<23){
    scanf("%d",&x);
    scanf("%d",&y);
    }
  4. char ch,conta=0;
    do{
    ch=getchar();
    conta++;
    }while(ch!=13); // 13 é <enter>
    printf("\n%d letras",conta);

Lista #3 - Condicionais

  1. [if] Faça um programa que calcule a função seno(x), onde x é dado pelo usuário. Deve-se perguntar inicialmente se o número está em graus ou radianos.
    Dica: use a função sin de <math.h>; é necessário converter se a unidade dada for diferente da usada. Para compilar no Linux, use gcc prog.c -lm para incluir a library math.
  2. [if] Faça um programa que pega um número de ponto flutuante do usuário pelo teclado e o imprime sete vezes; o número obrigatoriamente deve estar entre 3 e 55; se não estiver, o usuário deve ser avisado e o programa irá perguntar por um número até que seja entrado algo na faixa correta de valores.
  3. [if] Faça um programa de entrevista de emprego que pega o sexo, idade e formação escolar (1 para fundamental, 2 para médio e 3 para superior) e determina o cargo a que a pessoa pode se candidatar, de acordo com a tabela:
    Sexo
    Idade
    Escolaridade
    Cargo
    F
    <25
    médio
    Recepcionista
    M
    >40
    fundamental
    Servente
    M ou F
    <30
    superior
    Auxiliar de RH
    Com qualquer outra opção deve-se imprimir "não há posição disponível".
  4. [if] Faça um programa que, dados a renda anual da pessoa e o total de deduções, calcula corretamente seu Imposto de Renda. Pesquise para saber a fórmula.
  5. [if] Faça um programa que calcula o preço total de uma cotação de componentes eletrônicos segundo a tabela abaixo. A quantidade desejada é dada pelo usuário e o programa informa o custo total.
    quantidade
    U$/unidade
    <=1000
    1,10
    >1000 e <=5000
    0,70
    >5000 e <=10000
    0,40
    >10000
    0,30

  6. [if] Inclua uma pergunta de tipo de comprador. Se for "normal", o cálculo é idêntico; se for "associado", ele paga U$0,70/un para quantias abaixo de 1000; se for "parceiro", ele tem um desconto de 30% no valor final.
  7. [if] O engenheiro-chefe dum projeto de telecomunicações mandou você fazer uma rotina da seguinte maneira, sem perguntar mais nada: "simule pra mim esse circuito lógico: f=(a.b'.c'+a'.b+a'.b'.c); ". O linha ( ' ) é a operação de negação. Faça do jeito que achar melhor.
  8. [switch] Faça um programa que execute 6 operações aritméticas: soma, subtração, multiplicação, divisão, potenciação e radiciação. As operações usam dois operandos (números a e b em ponto flutuante) entrados pelo teclado. A operação pode ser escolhida através de um número entrado pelo teclado.
    Dicas: use a estrutura de controle switch ; use as funções pow e sqrt (exponenciação e raiz quadrada) de <math.h>. Não esqueça da proteção para evitar divisão por zero e raiz de nº negativo. No Linux, use gcc prog.c -lm.
  9. [switch] Faça um programa que simule a máquina de 4 estados (1, 2, 3 e 4) dada, da seguinte forma: o estado inicial é 1; pede-se a transição a ser disparada para o usuário (entra com um caractere a, b, c ou d); o programa imprime o estado destino e passa a considerá-lo o atual, de onde ocorrerão novas transições.
    Máquina (são descritos os arcos, na forma: estado origem=>estado destino (transições) ): 1=>2 (a,c); 1=>3 (b); 1=>4(d); 2=>3 (a, b, c, d); 3=>2 (a); 3=>3 (d); 3=>4 (b, c); 4=>2 (a, d); 4=>3 (b); 4=>4 (c).
  10. [break] Faça um programa que tire a média de um aluno, sendo entradas as quatro notas pelo teclado. É obrigatório que dados irregulares (negativos ou maiores que dez) sejam ignorados. Utilize obrigatoriamente laços com o comando continue. O que ocorre se o substituirmos por um break?
  11. [break] Mostre como fazer um programa que simplesmente vai acumulando números que são entrados pelo teclado e é encerrado quando se entra zero, imprimindo a soma total dos números digitados. Use break. Mostre também como resolver sem usar break ou continue.

Lista #4 - Laços Aninhados ou Condicionados

  1. Faça um programa que mostre uma contagem na tela de 233 a 456, só que contando de 3 em 3 quando estiver entre 300 e 400 e de 5 em 5 quando não estiver.
  2. Faça um programa que mostre uma contagem na tela de 233 a 456 e depois de 456 de volta para 233, só que contando de 3 em 3 quando estiver entre 300 e 400 e de 5 em 5 quando não estiver.
  3. Faça um programa que compute quantos são os múltiplos de 2, de 3 e de 5 entre 1 e 100; compute também quantos são os números múltiplos de 2, 3 e 5 ao mesmo tempo.
    Dica: um número x é múltiplo de outro número y se x%y==0, ou seja, há divisão inteira entre eles - o resto é zero.
  4. Faça um programa que calcula o maior número que seja menor que cem dado pela soma dos primeiros n números naturais. Exemplo: se fosse pra fazer igualzinho mas pro número menor que vinte, o programa ia achar: 1+2+3+4+5=15 já que 1+2+3+4+5+6=21 , que estoura o limite; portanto, nesse caso n=5.
  5. O sr. Armildo becker foi a uma vidente procurar seu par ideal e ela previu felicidade com uma pessoa nascida em anos ímpares; ao mesmo tempo, ele não deseja ir para a cadeia. Dada uma lista das idades atuais de suas pretendentes, obtida secretamente, ele quer um levantamento do número de pessoas que interessam. Então:
    Faça um algoritmo que, dada uma seqüência de números entrados pelo teclado pelo usuário, calcule quantos deles são ímpares, quantos são menores ou iguais a 18 e qual a porcentagem de números que são pares e maiores ou iguais a 18.
  6. Faça um programa que conta de 17 a 1007, isto é, conte em base sete, até chegar no terceiro dígito. Exemplo: a saída na tela fica: 01 02 03 04 05 06 10 11 12 13 14 15 16 20 21 ... 63 64 65 66 100. Há várias maneiras de fazer.
  7. faça um programa que conta de 0020 até jj20. É como hexadecimal, só que usa de a até j. O resultado na tela deve ser o seguinte: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 0g 0h 0i 0j 10 11 12 ... J7 j8 j9 ja jb jc jd je jf jg jh ji jj.
    Dicas: use laços que usam variáveis char direto, variando dígito por dígito. Ou então podem ser dois laços aninhados, um pra cada dígito, mas daí usa if. Nesse caso, pra imprimir os dígitos alfanuméricos, use o seguinte comando, onde dig é um número de 0 a 19: printf("%c",dig+'a'-10).
  8. A sequência dos números de fibbonacci é aquela que começa com 1 e 1 e cada número é obtido pela soma dos dois anteriores (ex.: 1 1 2 3 5 8 13 21 34...). Produza na tela os vinte primeiros números dela.
  9. Faça um programa que pega um número do teclado e imprime na tela esse número de asteriscos. Ex: o usuário digita 7 e o programa imprime *******.
  10. Faça um programa que imprime a figura abaixo.

    *
    **
    ***
    ****
    *****
    Restrição: use pra imprimir na tela somente os comandos printf("*"); ou printf("\n");
    Sugestão: basta gerar a seqüência 1 2 3 4 5 e usá-la como o número do programa anterior.

  11. Altere o programa anterior para imprimir a figura abaixo:

    ****1
    ***22
    **333
    *4444
    55555
    Dica: ao invés de usar printf("*"); use printf("%d",i); onde i é a variável de contagem. Perceba que você deve gerar as sequências 1 2 3 4 5 (para números) e 4 3 2 1 0 (para *).
    Sugestão: como no anterior, faça primeiro um programa que, dado um número pelo teclado, imprime asteriscos e o número. Por ex.: o usuário digita 3 e o programa imprime **333 (2 *'s e 3 números 3).

  12. Refaça o programa anterior para que o usuário possa entrar pelo teclado o número de linhas que ele quer ver; caso o valor que ele entre seja inválido (negativo ou maior que o número de linhas na tela), o programa deve perguntar novamente, até que o usuário entre com um valor decente. A aparência da figura deve ser mantida (isso é, um quadrado formado de dois triângulos).
    Adicionalmente, se forem aparecer três asteriscos na linha, mostre a frase "três asteriscos" no lugar.
  13. Faça um programa que converte um número da base 7, entrado pelo teclado, para a base 10.
  14. Faça um programa que converte um número da base 10, entrado pelo teclado, para a base 7.
  15. Faça o seguinte aparecer na tela, usando dois laços aninhados.
    *****
    .****
    ..***
    ...**
    ....*
    Pode usar apenas printf("."); , printf("\n"); e printf("*");
  16. Faça um programa que dada uma tabela verdade de 16 linhas imprima as equações correspondentes à função de acordo com a soma de produtos e produto de somas.
  17. Faça um programa que construa na tela uma tabela de conversão de valores de 0 a 20, apresentando em uma coluna os números decimais e em outras colunas ao lado desta seus equivalentes em binário, BCD e hexadecimal.
  18. Faça um programa que calcule a integral de ex*x.dx no intervalo [1,5; 21,5] utilizando aproximação com retângulos; utilize 20 divisões. Não ouse tentar resolver a integral analiticamente, apenas calcule a área sob a função.
  19. Altere o programa anterior para calcular a integral de sen(x)dx definida em [0; 1], em radianos. Faça o cálculo com 5, 10, 100, 1000 e 10000 divisões da função e estime um valor adequado de acordo com a precisão que temos em números fracionários no computador.
  20. Para os dois programas abaixo, preveja a saída na tela sem executá-los.

    #include<stdio.h>

    void main()
    {
        int i=0, j=0;

        while(i<22)
        while(j<11)
            printf("%d_",i*(j+5));
        printf("%d_",j+5);
        i=i+3;
        j=j+1;
    }

    #include<stdio.h>
    void main()
    {
        int i=0, j=16;

        while(i<22){
            while(j>2){
                printf("%d_",i*(j+5));
                printf("%d_",j+5);
                i=i+3;
                j=j-1;
            }
        }
    }

  21. Complete o programa abaixo.

    // imprime um losango de *
    #include<stdio.h>
    void main()
    {
        int cont_linha, n_linhas,
        cont_col;
        printf("\nno. de linhas:");
        scanf("%d",&n_linhas);

        while(cont_linha __ n_linhas/2){
            cont_col=0;
            while(cont_col< _________ - cont_linha){
                printf(" ");
                cont_col++;
            }
            while(cont_col++<= _________________ )
                printf("*");
            printf(" ___ ");
            cont_linha++;
        } // while
        while(cont_linha __________ ){
            cont_col=0;
            while(cont_col++< ____________ )
                printf(" ");
            while(cont_col<= ____________ ){
                printf("*");
                cont_col++;
            }
            printf("\n");
            _____________;
        } // while

    } // main

    /* ex: * (n_linhas=5)
          ***
         *****
          ***
           *     */

  22. Calcule a exponenciação de dois números inteiros x e y entrados pelo teclado, mas faça isso sem usar a função pow, ou seja, obtenha xy só com multiplicação e um laço; verifique os casos especiais e não permitidos (ex.: y negativo).
  23. Faça um programa que pegue um número de 1 a 99 do teclado (ele deve impedir entradas com valores fora da faixa). Depois o programa tenta "adivinhar" esse número, sorteando valores quaisquer nessa faixa (entre 1 e 99 positivos) até que acerte, por acaso, aquele dado pelo usuário; então imprima o número de chutes até acertar.
  24. Conserte o programa abaixo

    // esse programa determina o
    // valor máximo e o valor mínimo
    // entrados via teclado
    #include<stdio.h>

    void main(){
        int max=65535, min;

        printf("\nuse 0 p/ terminar");

        // repete até o usuário terminar
        while(valor!=0){

            // pega o valor
            printf("\nentre com o valor:")
            scanf('%d' valor);

            // compara e atualiza as variáveis
            if(valor>=max)
                max=valor;
            else
                min=valor;
           // imprime max e min ao final
    }


  25. Faça um programa que verifique se um número dado via teclado é primo.
    Dica: para saber se um número n é primo, basta dividir por cada um dos números menores que ele; se o resto for diferente de zero pra todos (n%d!=0, pra qualquer d menor que n), ele é primo.
  26. Imprima na tela todos os números primos menores do que 1000.
    Sugestão: basta usar o programa anterior para verificar um por um todos os números de 1 a 1000.

Lista #5 - Vetores e Strings

  1. Faça um programa que entre com 10 números pelo teclado; armazene-os em um vetor de dez posições; imprima-o na tela na ordem em que os números foram entrados e depois na ordem inversa.
  2. Faça um programa que toma as notas dos alunos (vinte números fracionários) do usuário e guarda em um vetor. Depois disso, calcula e imprime na tela a média dos alunos, a nota mais alta, a nota mais baixa e o número de notas 7.0.
    Restrição: primeiro guarde as notas no vetor, sem fazer cálculos ou comparações; só depois determine os valores.
  3. Faça um programa que ordene um vetor de dez números em ordem crescente.
    Ex.: inicialmente ele vale {2,78,5,-1,0,3,3,56,7,77} e é impresso na tela na seqüência -1, 0, 2, 3, 3, 4, 5, 7, 56, 77.
    Sugestão: ache o menor valor do vetor e coloque na primeira posição; daí ache o segundo menor (basta procurar da segunda posição em diante) e coloque na segunda posição, e assim por diante. Este método é conhecido como inserção direta. Há vários  outros.
  4. Temos vinte alunos e alunas numa sala do ensino médio, identificados por números de 0 a 19. Temos armazenados em um vetor as paixões deles na sala (supondo um universo monogâmico), representado abaixo:
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
    7 7 7 -1 2 -2 4 -2 -1 11 -2 9 14 2 12 -2 17 13 -2 -1

    O pessoal com -1 não é a fim de ninguém; o com -2 é a fim de alguém fora da sala.
    Faça um programa que declara o vetor acima como constante e calcula quantos casais (reais ou platônicos) existem na sala. Calcule também qual é a maior seqüência de desencontros (ex.: 1 ama 3 que ama 5 que ama 9 que ama 12 que não ama ninguém, são 5 pessoas).

  5. Faça um programa que gera uma seqüência aleatória de 100 números de 1 a 100 mas sem repeti-los, ou seja, gera uma das permutações dos primeiros 100 números naturais.
  6. Faça um programa que gera uma seqüência de 52 cartas de baralho sem repeti-las, ou seja, é como se ele embaralhasse as cartas. Inclua naipes.
  7. Faça um programa que dada uma string (cadeia de caracteres) pelo teclado, usando a função scanf, com "%s", imprima-a na tela caractere por caractere usando printf com "%c" ou a função putc.
  8. Altere o programa acima para imprimir "***" toda a vez que aparecer um "a" na mensagem original. Ex: se o usuário digitou "abacate" será impresso "***b***c***te" na tela.
    Adicionalmente, se a string for "flamengo", imprima ":-(((((" na tela.
  9. Faça um programa que dada uma mensagem entrada via teclado pelo usuário, determine seu tamanho.
    Restrição: use scanf("%s",&mens) para pegar a mensagem.
  10. Faça um programa que dada uma mensagem entrada via teclado pelo usuário, a reimprima sete vezes com as seguintes alterações: a) impressa de trás pra frente; b) letra 'e' substituída por 'nhi'; c) letra 'a' subtstituída pelas letras 'hahhh'; d) se a frase original termina com 'ando', a alterada deve ser terminada com 'iévski'.
    Pergunta: suponha a entrada limitada a 30 caracteres. Qual o tamanho máximo da saída?
  11. Faça um programa que dada uma mensagem entrada via teclado pelo usuário (máximo de 255 caracteres), determine o número de palavras nela.
    Dica: cuidado com espaços consecutivos. Ex.: " eu      estou aqui " tem 3 palavras.
  12. Faça um programa que determina se uma mensagem entrada pelo teclado é ou não um palíndromo (pesquise o seignificado desta palavra).
  13. Faça um programa que contabilize o nº de ocorrências de cada uma das 26 letras em uma mensagem entrada pelo usuário.
    Ex.: "ola, como vai voce?" Vai resultar: a:2, b:0, c:2, d:0, e:1, ..., p:0, o:4, ...., z:0.
    Dica: use um vetor de 26 posições.

Lista #6 - Funções

  1. Construa uma função float elevado(float x, int y), que calcula xy. Não utilize a função pow. Preveja condições de erro (exemplo: y negativo).
  2. Com a função anterior, imprima na tela as 5 primeiras potências de 2, 3 e 5. Faça também um programa bem idiota (nada de sofisticação) que calcula a menor potência de cinco que é maior do que 6.000.000, usando a função elevado.
  3. Crie a função void imprime_espacos(int n_espacos) e a função void imprime_asteriscos(int n_asteriscos); elas devem imprimir na tela, sem pular linha, vários caracteres (espaços e asteriscos, respectivamente), de acordo com o número passado pelo parâmetro.
  4. Usando obrigatoriamente as funções anteriores, refaça o exercício do losango (repetindo: dado um número, constrói-se um losango de asteriscos com esse número dado de linhas).

       *      ex. para n_linhas==5
      ***
     *****
      ***
       *     
  5. Faça um programa que calcule f(2), f(0), f(5.5) e f(20) sendo f(x)=30*(sen(15*x)+45*x2)/x. Construa uma função f para o cálculo.
  6. Faça uma função que calcula o fatorial de um número entrado via teclado pelo usuário.
    Fórmula: o fatorial de um número n é n*(n-1)*(n-2)*...*2*1. Para resolver, faça um laço que conta de 1 a n e vá multiplicando (ou seja: x=x*i, onde i é a variável do for).

Lista #7 - Outros Tópicos

Matrizes

  1. Dada uma matriz unsigned notas[5][2]={ {7,6}, {8,8}, {5,8}, {10,3}, {9,7} }, onde o primeiro índice identifica um dos quatro alunos e o segundo identifica uma das suas notas, faça um programa que calcule a média de cada aluno, a média da turma toda e a média em cada prova, apenas totalizando os dados e dividindo pelo número deles.
  2. Faça um programa que, com a matriz acima, construa um vetor para as médias dos alunos, um vetor para a primeira prova (5 posições, uma para cada aluno) e outro para a segunda prova. Construa, também, uma nova matriz 5x3 igual a notas, mas com a média de cada aluno na terceira "coluna" (ex: notas[3][2] conterá a média - coluna 2 - do quarto aluno).
  3. Faça um programa que inicializa (isto é, preenche os valores iniciais) duas matrizes 6x6 de nº fracionários: uma é identidade (1 na diagonal principal e 0 nas demais posições) e a outra é preenchida pela seguinte fórmula: aij=2*i-j, onde aij é o elemento da posição (i,j) da matriz. Determine a soma dessas duas matrizes.
    Interessante: perceba que a matriz resultante pode ser construída diretamente pelas fórmulas aij=2*i-j se i!=j e aij=2*i-j+1 se i==j. Pode ainda ser escrita como aij=2*i-j+(i==j).

Funções e vetores/matrizes

  1. Monte uma função que altera uma matriz de notas como a da questão #5-4 aumentando em 1,0 todas as notas de todo mundo com média menor que 7 (os caras fizeram dois trabalhos adicionais); lembre-se: não pode haver nota 11,0.
  2. Monte uma função void copia(char* destino, char* fonte) que copia de uma string para a outra (é igualzinha a strcpy; claro que não vale usá-la).
  3. Idem para strcat, strlen e strstr.
  4. Faça uma função que recebe uma matriz 6x6 de números inteiros e determina se ela é diagonal ou não, retornando 1 se for e 0 se não for.
  5. Idem para fracionários.
  6. Faça uma função que soma duas matrizes 3x3.
  7. Idem para multiplicação.

Tela (no DOS)

  1. Utilizando as funções gotoxy(int x, int y), textcolor() e cprintf() da <conio.h>, faça uma função int ponto(int x, int y, int cor) que põe um asterisco da cor especificada na posição (x,y) da tela (se a cor causar problemas, pode deixar sem cor mesmo). Se algum parâmetro for inválido (exemplo: coordenada fora da tela) a função deve retornar -1.
  2. Com a função anterior, mostre na tela: um círculo verde, uma senóide vermelha e uma cossenóide toda colorida. Faça também um quadrado e um losango, ambos com sete asteriscos de lado.