Ver texto associado à questão
Considerando o código a seguir, é correto afirmar que não há erros de sintaxe; é possível executar o código para copiar ou mover arquivos do diretório identificado por dir1 para o identificado por dir2; os arquivos de subdiretórios em dir1, caso existam, serão copiados para dir2. #! /bin/csh -f echo 'Diretorio de origem:' set dir1=($<) echo 'Diretorio de destino:' set dir2=($<) if ((! -d $dir1)**(! -d $dir2)) then echo "Diretorios incorretos." endif echo 'Extensao dos arquivos:' set ext=($<) echo 'Digite comando [cp ou mv]:' set comando=($<) switch ($comando) case 'cp': foreach arquivo (dir1/*) if (! -d $arquivo && $arquivo =~ *.ext) then cp $arquivo dir2 endif end case 'mv': foreach arquivo (dir1/*) if (! -d $arquivo && $arquivo =~ *.ext) then mv $arquivo dir2 endif end default: echo 'Comando invalido' exit 01 endsw exit 0
Quanto ao código a seguir, é correto afirmar que não há erros de sintaxe; o argumento deve ser um nome de arquivo para que não haja falha; $1 identifica o argumento; o número e o conteúdo de cada linha no arquivo serão apresentados, se o argumento for um nome de arquivo com extensão sh ou csh. #!/bin/sh function imprimir () { echo "Arquivo:" $1 echo "Tamanho:" $(wc $1) linha= n = 0 while read linha; do ((n = n + 1)) echo "n : linha"; done } if [ $# -ne 1 ]; then echo "Falha na execucao." exit 2; fi if [ ! -r "$1" ]; then echo "Falha na execucao." exit 2; fi case $1 in *.sh) imprimir break *.csh) imprimir break *) echo "Tipo invalido." exit 1 exit 1;
O seguinte código não tem erros de sintaxe, e sua execução resulta na apresentação dos valores 10, 24 e 18. #include <stdio.h> int main(int argc, char *argv[]) { int a = 3, b = 2, c; c = (a > b) ? a : b; while (b < 5) { a = 0; while (a < 3) { a++; if (a == 2) continue; c++; } if(b == 4) break; b++; c++; } switch(a) { case 1 : b++; case 2 : b++; case 3 : b++; case 4 : b++; } for (;a < 10; a++) c++; do { b = b + c; } while (b < c); printf ("%d %d %d\n", a, b, c); }
O seguinte código não tem erros de sintaxe e sua execução resulta na apresentação de B, A, Natal e Amparo. #include <stdio.h> enum cidades { Recife, Natal }; union capitais { enum cidades capitalA; enum cidades capitalB; }; typedef struct { char *rua; enum cidades cidade; } endereco; int main(int argc, char *argv[]) { char matriz[] = {'A','B'},(*ptrA)[2],*ptrB; ptrA = &matriz; printf("%c\n", (*ptrA)[1]); ptrB = "BRASIL"; ptrB++; ptrB++; printf("%c\n",*ptrB); union capitais varA; varA.capitalA = Natal; printf("%d\n", varA.capitalB); endereco varB = {"Amparo", Recife}, *ptrC; ptrC = &varB; printf("%s\n", ptrC->rua); }
O seguinte código não tem erros de sintaxe e sua execução resulta na apresentação dos valores 22, 28 e 34. #include <stdio.h> int funcao(int a, int *b) { static int c = 5; int d = 3; *b = *b + 5; a++, c++, d++; return (a + *b + c + d); } int main(int argc, char *argv[]) { int a = 2,b = 4,(*ptr)(int,int*); ptr = funcao; printf("%d\n",(*ptr)(a,&b)); printf("%d\n",(*ptr)(a,&b)); printf("%d\n",(*ptr)(a,&b)); }