Главная / Программирование /
Программирование на языке 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 аргумент