Главная / Программирование /
Программирование на языке C в Microsoft Visual Studio 2010 / Тест 21
Программирование на языке C в Microsoft Visual Studio 2010 - тест 21
Упражнение 1:
Номер 1
Как формально можно определить прототип функции main() с параметрами?
Ответ:
 (1) int main (int argc, char argv); 
 (2) int main (int argc, char *argv[]); 
 (3) int main (int argc, char **argv); 
Номер 2
Какое формальное определение прототипа функции main() с параметрами является неверным?
Ответ:
 (1) int main (int argc, char argv); 
 (2) int main (int argc, char *argv[]); 
 (3) int main (int argc, char **argv); 
Номер 3
Какое формальное определение прототипа функции main() с параметрами является верным?
Ответ:
 (1) int main (int argc, char *argv[]); 
 (2) int main (int argc, char *argv); 
 (3) int main (int argc, char argv); 
Упражнение 2:
Номер 1
Программа запускается с одним аргументом командной строки. Аргументом является строка. Каким образом необходимо задать аргументы командной строки для корректной его обработки при работе программы?
Ответ:
 
(1) 
 
 
(2) 
 
 
(3) 
 
Номер 2
Программа запускается с одним аргументом, задающим имя и фамилию, которые в результате выполнения программы выводятся в файл. Каким образом необходимо задать аргумент командной строки, чтобы имя и фамилия были выведены в файл в формате Имя Фамилия?
Ответ:
 
(1) 
 
 
(2) 
 
 
(3) 
 
Номер 3
Программа запускается с одним аргументом, задающим имя и фамилию. В каком случае в файл будет выведено только имя?
Ответ:
 
(1) 
 
 
(2) 
 
 
(3) 
 
Упражнение 3:
Номер 1
С каким количеством аргументов командной строки запускается программа (считается, что аргумент в заданном виде обрабатывается корректно?
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
Номер 2
С каким количеством аргументов командной строки запускается программа (считается, что аргумент в заданном виде обрабатывается корректно?
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
Номер 3
С каким количеством аргументов командной строки запускается программа (считается, что аргумент в заданном виде обрабатывается корректно?
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
Упражнение 4:
Номер 1
Приведенная программа выводит в файл значения аргументов командной строки:
int main(int argc, char* argv[])
{
char name[30];
FILE *f;
f = fopen("g:\\test.txt", "w+");
fprintf(f, "%s\n%s", argv[0], argv[1]);
return 0;
}
Запуск программы выполняется из командной строки с помощью команды Example.exe arg1 arg2. Чему будет равно значение argv[0]?
Ответ:
 (1) arg1 
 (2) arg2 
 (3) Example.exe 
Номер 2
Приведенная программа выводит в файл значения аргументов командной строки:
int main(int argc, char* argv[])
{
char name[30];
FILE *f;
f = fopen("g:\\test.txt", "w+");
fprintf(f, "%s\n%s", argv[0], argv[1]);
return 0;
}
Запуск программы выполняется из командной строки с помощью команды Example.exe arg1 arg2. На какую строку указывает argv[1]?
Ответ:
 (1) arg1 
 (2) arg2 
 (3) Example.exe 
Номер 3
Приведенная программа выводит в файл значения аргументов командной строки:
int main(int argc, char* argv[])
{
char name[30];
FILE *f;
f = fopen("g:\\test.txt", "w+");
fprintf(f, "%s\n%s", argv[0], argv[1]);
return 0;
}
Запуск программы выполняется из командной строки с помощью команды Example.exe arg1 arg2. На какую строку указывает argv[2]?
Ответ:
 (1) arg1 
 (2) arg2 
 (3) Example.exe 
 (4) NULL, так как элементы массива нумеруются с 0, то argv[2] должен указывать на 3-ий элемент, но этот элемент не задан 
Упражнение 5:
Номер 1
Приведенная программа формирует сообщение об ошибке из отдельных строк в зависимости от значения аргумента командной строки, который задает степень критичности ошибки:
#include <stdio.h>
#include <conio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <locale.h>
void error(int severity, ... );
int main(int argc, char* argv[])
{
char err[][30] = {"Сообщение1", "Сообщение2"};
int n;
setlocale (LC_ALL, "rus");
n = argv[1];
switch (n) {
case 0: error(0, "Ошибка!", '\0');
break;
case 1: error(0, "Ошибка!", err[0], '\0');
break;
default: error(1, "Ошибка!", err[0], err[1], '\0');
}
return 0;
}
void error(int severity, ... )
{
va_list ap;
va_start(ap, severity);
for (;;) {
char *p = va_arg(ap, char*);
if (p == '\0') break;
printf("%s ", p);
}
va_end(ap);
printf("\n");
}
Программа запускается из командной строки командой Example.exe 0. Какое сообщение будет выведено на экран?
Ответ:
 (1) Ошибка! 
 (2) Ошибка! Сообщение1 
 (3) Ошибка! Сообщение1 Сообщение2 
Номер 2
Приведенная программа формирует сообщение об ошибке из отдельных строк в зависимости от значения аргумента командной строки, который задает степень критичности ошибки:
#include <stdio.h>
#include <conio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <locale.h>
void error(int severity, ... );
int main(int argc, char* argv[])
{
char err[][30] = {"Сообщение1", "Сообщение2"};
int n;
setlocale (LC_ALL, "rus");
n = argv[1];
switch (n) {
case 0: error(0, "Ошибка!", '\0');
break;
case 1: error(0, "Ошибка!", err[0], '\0');
break;
default: error(1, "Ошибка!", err[0], err[1], '\0');
}
return 0;
}
void error(int severity, ... )
{
va_list ap;
va_start(ap, severity);
for (;;) {
char *p = va_arg(ap, char*);
if (p == '\0') break;
printf("%s ", p);
}
va_end(ap);
printf("\n");
}
Программа запускается из командной строки командой Example.exe 0. При этом вместо сообщения Ошибка! на экран выводится сообщение Ошибка! Сообщение1 Сообщение2. С чем это связано?
Ответ:
 (1) переменной n необходимо присвоить значение argv[0] 
 (2) с переменной переменной n необходимо выполнить дополнительные вычисления 
 (3) argv[1] указывает на строку 
Номер 3
Приведенная программа формирует сообщение об ошибке из отдельных строк в зависимости от значения аргумента командной строки, который задает степень критичности ошибки:
#include <stdio.h>
#include <conio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <locale.h>
void error(int severity, ... );
int main(int argc, char* argv[])
{
char err[][30] = {"Сообщение1", "Сообщение2"};
int n;
setlocale (LC_ALL, "rus");
n = atoi(argv[1]);
switch (n) {
case 0: error(0, "Ошибка!", '\0');
break;
case 1: error(0, "Ошибка!", err[0], '\0');
break;
default: error(1, "Ошибка!", err[0], err[1], '\0');
}
return 0;
}
void error(int severity, ... )
{
va_list ap;
va_start(ap, severity);
for (;;) {
char *p = va_arg(ap, char*);
if (p == '\0') break;
printf("%s ", p);
}
va_end(ap);
printf("\n");
}
Программа запускается из командной строки командой Example.exe 0. Какое сообщение будет выведено на экран?
Ответ:
 (1) Ошибка! 
 (2) Ошибка! Сообщение1 
 (3) Ошибка! Сообщение1 Сообщение2 
Упражнение 6:
Номер 1
Необходимо написать программу, которая имеет два аргумента командной строки и вычислиет их сумму. Какая программа выполняет поставленную задачу?
Ответ:
 (1)
int main(int argc, char* argv[])
{
int n1, n2,sum;
n1 = atoi(argv[0]);
n2 = atoi(argv[1]);
sum = n1 + n2;
printf("sum = %d\n", sum);
return 0;
}
 
 (2)
int main(int argc, char* argv[])
{
int n1, n2,sum;
n1 = argv[0];
n2 = argv[1];
sum = n1 + n2;
printf("sum = %d\n", sum);
return 0;
}
 
 (3)
int main(int argc, char* argv[])
{
int n1, n2,sum;
n1 = atoi(argv[1]);
n2 = atoi(argv[2]);
sum = n1 + n2;
printf("sum = %d\n", sum);
return 0;
}
 
 (4)
int main(int argc, char* argv[])
{
int n1, n2,sum;
n1 = argv[1];
n2 = argv[2];
sum = n1 + n2;
printf("sum = %d\n", sum);
return 0;
}
 
Номер 2
Необходимо написать программу, которая имеет два аргумента командной строки и вычислиет их сумму. Какие из приведенных программ не выполняют поставленную задачу?
Ответ:
 (1)
int main(int argc, char* argv[])
{
int n1, n2,sum;
n1 = atoi(argv[0]);
n2 = atoi(argv[1]);
sum = n1 + n2;
printf("sum = %d\n", sum);
return 0;
}
 
 (2)
int main(int argc, char* argv[])
{
int n1, n2,sum;
n1 = argv[0];
n2 = argv[1];
sum = n1 + n2;
printf("sum = %d\n", sum);
return 0;
}
 
 (3)
int main(int argc, char* argv[])
{
int n1, n2,sum;
n1 = atoi(argv[1]);
n2 = atoi(argv[2]);
sum = n1 + n2;
printf("sum = %d\n", sum);
return 0;
}
 
 (4)
int main(int argc, char* argv[])
{
int n1, n2,sum;
n1 = argv[1];
n2 = argv[2];
sum = n1 + n2;
printf("sum = %d\n", sum);
return 0;
}
 
Номер 3
Необходимо написать программу, которая имеет два аргумента командной строки и вычислиет их разность. Какая программа выполняет поставленную задачу?
Ответ:
 (1)
int main(int argc, char* argv[])
{
int n1, n2,sum;
n1 = atoi(argv[0]);
n2 = atoi(argv[1]);
sum = n1 - n2;
printf("sum = %d\n", sum);
return 0;
}
 
 (2)
int main(int argc, char* argv[])
{
int n1, n2,sum;
n1 = argv[0];
n2 = argv[1];
sum = n1 - n2;
printf("sum = %d\n", sum);
return 0;
}
 
 (3)
int main(int argc, char* argv[])
{
int n1, n2,sum;
n1 = argv[1];
n2 = argv[2];
sum = n1 - n2;
printf("sum = %d\n", sum);
return 0;
}
 
 (4)
int main(int argc, char* argv[])
{
int n1, n2,sum;
n1 = atoi(argv[1]);
n2 = atoi(argv[2]);
sum = n1 - n2;
printf("sum = %d\n", sum);
return 0;
}
 
Упражнение 7:
Номер 1
Задана программа, исполняемый файл которой имеет имя Example.exe:
int main(int argc, char* argv[])
{
int n1, n2, m, sum;
m = argc;
n1 = atoi(argv[1]);
n2 = atoi(argv[2]);
sum = n1 + n2;
printf("sum = %d\n", sum);
return 0;
}
Программа запускается из командной строки командой Example.exe 2 3 5. Чему будет равно значение переменной m?
Ответ:
 (1) 0 
 (2) 3 
 (3) 5 
Номер 2
Задана программа, исполняемый файл которой имеет имя Example.exe:
int main(int argc, char* argv[])
{
int n1, n2, m, sum;
m = argc;
n1 = atoi(argv[1]);
n2 = atoi(argv[2]);
sum = n1 + n2;
printf("sum = %d\n", sum);
return 0;
}
Программа запускается из командной строки командой Example.exe 2 3 5. Чему будет равно значение переменной sum?
Ответ:
 (1) 5 
 (2) 7 
 (3) 9 
 (4) 10 
Номер 3
Задана программа, исполняемый файл которой имеет имя Example.exe:
int main(int argc, char* argv[])
{
int n1, n2, n3, m, sum;
m = argc;
n1 = atoi(argv[1]);
n2 = atoi(argv[2]);
n3 = atoi(argv[3]);
sum = n1 + n2 + n3 + m;
printf("sum = %d\n", sum);
return 0;
}
Программа запускается из командной строки командой Example.exe 2 3 5. Чему будет равно значение переменной sum?
Ответ:
 (1) 5 
 (2) 7 
 (3) 9 
 (4) 10 
Упражнение 8:
Номер 1
Приведенная программа считает в обратном порядке, начиная с какого-либо значения (указанного в командной строке):
int main(int argc, char *argv[])
{
int disp, count;
setlocale (LC_ALL, "rus");
if(argc<2) {
printf("В командной строке на задано число\n");
exit(1);
}
if(argc==3 && !strcmp(argv[2], "display")) disp = 1;
else disp = 0;
for(count=atoi(argv[1]); count; --count)
if(disp) printf("%d ", count);
putchar('\a');
printf("Счет закончен");
return 0;
}
Что будет выведено на экран в результате выполнения приведенной программы, если ее запуск выполняется из командной строки командой Example.exe 5?
Ответ:
 (1) 5 4 3 2 1 
 (2) 5 4 3 2 1 0 
 (3) ничего не будет выведено 
Номер 2
Приведенная программа считает в обратном порядке, начиная с какого-либо значения (указанного в командной строке):
int main(int argc, char *argv[])
{
int disp, count;
setlocale (LC_ALL, "rus");
if(argc<2) {
printf("В командной строке на задано число\n");
exit(1);
}
if(argc==3 && !strcmp(argv[2], "display")) disp = 1;
else disp = 0;
for(count=atoi(argv[1]); count; --count)
if(disp) printf("%d ", count);
putchar('\a');
printf("Счет закончен");
return 0;
}
Что будет выведено на экран в результате выполнения приведенной программы, если ее запуск выполняется из командной строки командой Example.exe?
Ответ:
 (1) 5 4 3 2 1 
 (2) 5 4 3 2 1 0 
 (3) В командной строке не задано число 
 (4) ничего не будет выведено 
Номер 3
Приведенная программа считает в обратном порядке, начиная с какого-либо значения (указанного в командной строке):
int main(int argc, char *argv[])
{
int disp, count;
setlocale (LC_ALL, "rus");
if(argc<2) {
printf("В командной строке на задано число\n");
exit(1);
}
if(argc==3 && !strcmp(argv[2], "display")) disp = 1;
else disp = 0;
for(count=atoi(argv[1]); count; --count)
if(disp) printf("%d ", count);
putchar('\a');
printf("Счет закончен");
return 0;
}
Что будет выведено на экран в результате выполнения приведенной программы, если ее запуск выполняется из командной строки командой Example.exe 5 display?
Ответ:
 (1) 5 4 3 2 1 
 (2) 5 4 3 2 1 0 
 (3) ничего не будет выведено 
Упражнение 9:
Номер 1
Какая программа посимвольно выводит все аргументы, с которыми ее вызвали?
Ответ:
 (1)
int main(int argc, char *argv[])
{
int t, i;
for(t=0; t<argc-1; ++t) {
i = 0;
while(argv[t][i]) {
putchar(argv[t][i]);
++i;
}
printf("\n");
}
return 0;
}
 
 (2)
int main(int argc, char *argv[])
{
int t;
for(t=0; t<argc; ++t)
printf("%s\n", argv[t]);
return 0;
}
 
 (3)
int main(int argc, char *argv[])
{
int t, i;
for(t=0; t<argc; ++t) {
i = 0;
while(argv[t][i]) {
putchar(argv[t][i]);
++i;
}
printf("\n");
}
return 0;
}
 
Номер 2
Что делает приведенная программа?
int main(int argc, char *argv[])
{
int t, i;
for(t=0; t<argc-1; ++t) {
i = 0;
while(argv[t][i]) {
putchar(argv[t][i]);
++i;
}
printf("\n");
}
return 0;
}
Ответ:
 (1) посимвольно выводит все аргументы, с которыми ее вызвали 
 (2) построчно выводит все аргументы, с которыми ее вызвали 
 (3) посимвольно выводит все аргументы, кроме последнего, с которыми ее вызвали 
 (4) построчно выводит все аргументы, кроме последнего, с которыми ее вызвали 
Номер 3
Что делает приведенная программа?
int main(int argc, char *argv[])
{
int t, i;
for(t=0; t<argc; ++t) {
i = 0;
while(argv[t][i]) {
putchar(argv[t][i]);
++i;
}
printf("\n");
}
return 0;
}
Ответ:
 (1) посимвольно выводит все аргументы, с которыми ее вызвали 
 (2) построчно выводит все аргументы, с которыми ее вызвали 
 (3) посимвольно выводит все аргументы, кроме последнего, с которыми ее вызвали 
 (4) построчно выводит все аргументы, кроме последнего, с которыми ее вызвали 
Упражнение 10:
Номер 1
При каком условии запуска программы из командной строки значение argc будет равно 0?
int main(int argc, char *argv[])
{
int t;
for(t=0; t<argc; ++t)
printf("%s\n", argv[t]);
return 0;
}
Ответ:
 (1) при запуске программы без параметров, то есть командой ProgramName.exe 
 (2) при запуске программы командой ProgramName.exe 0 
 (3) ни при каких условиях 
 (4) при запуске программы с любым количеством параметров 
Номер 2
При каком условии запуска программы из командной строки значение argc будет равно 1?
int main(int argc, char *argv[])
{
int t;
for(t=0; t<argc; ++t)
printf("%s\n", argv[t]);
return 0;
}
Ответ:
 (1) при запуске программы без параметров, то есть командой ProgramName.exe 
 (2) при запуске программы командой ProgramName.exe 0 
 (3) ни при каких условиях 
 (4) при запуске программы с любым количеством параметров 
Номер 3
При какой команде запуска заданной программы из командной строки значение argc будет равно 1?
int main(int argc, char *argv[])
{
int t;
for(t=0; t<argc; ++t)
printf("%s\n", argv[t]);
return 0;
}
Ответ:
 (1) ProgramName.exe 
 (2) ProgramName.exe 1 
 (3) ProgramName.exe 1 2 
Упражнение 11:
Номер 1
Каким образом будет предствален аргумент argv при запуске программы через командную строку echo Hello, world!?
Ответ:
 
(1) 
 
 
(2) 
 
 
(3) 
 
Номер 2
При каком запуске программы echo через командную строку аргумент argv будет представлен заданным образом?
Ответ:
 (1) echo "Hello, world!" 
 (2) echo Hello, world! 
 (3) echo "Hello," "world!" 
Номер 3
При каком запуске программы echo через командную строку аргумент argv будет представлен заданным образом?
Ответ:
 (1) echo "Hello, world!" 
 (2) echo Hello, world! 
 (3) echo "Hello," "world!" 
Упражнение 12:
Номер 1
Какое утверждение является верным?
Ответ:
 (1) если argc равно 1, то в командной строке после имени программы задан 1 аргумент 
 (2) в случае запуска программы echo Здравствуй, мир! количество аргументов argc равно 3 
 (3) аргумент argv представляет собой массив символьных строк, содержащих сами аргументы 
Номер 2
Какие утверждения являются неверными?
Ответ:
 (1) если argc равно 1, то в командной строке после имени программы задан 1 аргумент 
 (2) в случае запуска программы echo Здравствуй, мир! количество аргументов argc равно 3 
 (3) аргумент argv представляет собой массив символьных строк, содержащих сами аргументы 
Номер 3
Какие утверждения являются верными?
Ответ:
 (1) в случае запуска программы echo Здравствуй, мир! количество аргументов argc равно 3 
 (2) аргумент argv представляет собой указатель на массив символьных строк, содержащих сами аргументы 
 (3) если argc равно 1, то в командной строке после имени программы задан 1 аргумент