2.0 Comandos de controle e array - c

ListaQuadrados.c
Este programa ensina a declarar arrays simples (vetores), a fazer loops com o for, converter int para double e a condicional if.
#include<stdio.h>
#include<math.h>

int main(){
   const int tamanho = 20;// Constante do tipo int
   double numero, quadrados[tamanho];/* quadrados[tamanho] eh um vetor com 
                                                             tamanho posicoes */

   for(int i = 0; i < tamanho; ++i){/* Note qua a primeira casa do vetor eh a 
                                      casa 0 e ultima eh a casa (tamanho - 1) */
      numero = (double)i + 1.0;// p.ex. na primeira vez numero = 0+1 = 1
      quadrados[i] = pow(numero, 2.0);
   }
   printf("Os %d primeiros quadrados são:\n", tamanho);
   for(int i = 0; i < tamanho; ++i){
      printf("%g ", quadrados[i]);
   }
   printf("\n");
   return 0;
}

# Saída
Os 20 primeiros quadrados são:
1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361 400

O programa acima pode ser reescrito desta forma que, acredito, explica como funciona o for:
#include<stdio.h>
#include<math.h>

int main(){
   const int tamanho = 20;
   double numero, quadrados[tamanho];

   int i = 0;// Primeiro argumento do for
   for(;;){
      if(i < tamanho){// Segundo argumento do for
         numero = (double)i + 1.0;
         quadrados[i] = pow(numero, 2.0);
         ++i;// Terceito argumento do for
      }else{
         break;// Comando para sair do for
      }
   }
   printf("Os %d primeiros quadrados são:\n", tamanho);
   // Note aqui os arqumentos sao os mesmos ↓
   for(int i = 0; i < tamanho; ++i){
      printf("%g ", quadrados[i]);
   }
   printf("\n");
   return 0;
}

O primeiro argumento do for diz as condições iniciais, o segundo diz a condição que será repetirá o for caso seja verdadeira já o terceiro argumento diz o que acontece a cada vez que uma execução do for termina.
Note que se, por exemplo, a terceira condição fosse i igual a 0 ou a um número negativo então a sugunda condição sempre seria verdadeira e o loop nunca teria fim, seria infinito.

VetorEMatriz.c
Este programa mostra como declarar uma array multi-dimencional.
#include<stdio.h>
#include<math.h>

int main(){
   const int linhas = 2, colunas = 3;
   double
      vetor[colunas] = {1.0, 6.0, 8.0},
      matriz[linhas][colunas] = { {2.0, 5.0, -7.0},
                                  {4.0, -8.0, 0.3}
                                }
   ;
   printf("O vetor:\n( ");
   for(int i = 0; i < colunas; ++i){
      printf("%g ", vetor[i]);
   }
   printf(")\nA matriz:\n");
   for(int i = 0; i < linhas; ++i){
      printf("| ");
      for(int j = 0; j < colunas; ++j){
         printf("%1.1f ", matriz[i][j]);
      }
      printf("|\n");
   }
   return 0;
}

# Saída
O vetor:
( 1 6 8 )
A matriz
| 2.0 5.0 -7.0 |
| 4.0 -8.0 0.3 |


ListaQuadrado2.c
Este programa esclarece um pouco sobre como funciona o condicional if (se).
#include<stdio.h>
#include<math.h>

int main(){
   const int MaximoPermitido = 200;
   int QuantidadeNumeros;
   double numero;

   printf("Quantos quadrados você quer? ");
   scanf("%d", &QuantidadeNumeros);
   double quadrados[QuantidadeNumeros];

   if(QuantidadeNumeros <= MaximoPermitido){// Se isso for verdadeiro faça ...
      for(int i = 0; i < QuantidadeNumeros; ++i){
         numero = (double)i + 1.0;
         quadrados[i] = pow(numero, 2.0);
      }
      printf("Os %d primeiros quadrados são:\n", QuantidadeNumeros);
      for(int i = 0; i < QuantidadeNumeros; ++i){
         printf("%g ", quadrados[i]);
      }
   }else{// Se não, faça...
      printf("Isto é demais!");
   }
   printf("\n");
   return 0;
}

# Saída
$ g++ VetorEMatriz.c && ./a.out
Quantos quadrados você quer? 3
Os 3 primeiros quadrados são:
1 4 9
$
$ g++ VetorEMatriz.c && ./a.out
Quantos quadrados você quer? 201
Isto é demais!
No c por padrão todo número diferente de 0 é considerado verdadeiro e 0 é falso, assim é útil fazer como no

gostoso.c
#include<stdio.h>
#include<math.h>
/* Definicoes --------------------------------------------------------------- */
#define TRUE 1
#define FALSE 0
int main(){
   int ValorLogico, Arrogancia = FALSE;

   printf("Maçãs são gostosas? ");
   scanf("%d", &ValorLogico);
   
   if(ValorLogico){
      printf("Vossa Mercê está plenamente correto!\n");
   }else{
      if(Arrogancia){
         printf("És um retardado!\n");
      }else{
         printf("És um desprovido de cognição!\n");
      }
   }
   return 0;
}