Т.В. Руденко - Сборник задач и упражнений по языку Си (1114664)
Текст из файла
Московский государственный университет им. М.В. ЛомоносоваФакультет вычислительной математики и кибернетикиРуденко Т.В.Сборник задач и упражнений по языку Си.( учебное пособие для студентов II курса )Москва1999УДК 519.682Представлены задачи и упражнения по языку Си и программированию нанем. Рассматриваемая версия Си соответствует международному и ANSIстандарту этого языка.Сборник составлен как дополнение к учебнику Б. Кернигана, Д. Ритчи«Язык программирования Си» (М., «Финансы и статистика», 1992) и с учетомопыта преподавания программирования на факультете вычислительной математики и кибернетики МГУ.Для студентов факультета ВМК в поддержку основного лекционного курса “Системное программное обеспечение” и для преподавателей, ведущихпрактические занятия по этому курсу.Автор выражает благодарность сотрудникам кафедры алгоритмическихязыков за помощь и поддержку при создании этого сборника.Рецензенты:доц.
Машечкин И.В.доц. Терехин А.Н.Руденко Т.В. “Сборник задач и упражнений по языку Си (учебное пособие для студентов II курса)”.Издательский отдел факультета ВМиК МГУ(лицензия ЛР №040777 от 23.07.96), 1999.-80 с.Печатается по решению Редакционно-издательского Совета факультетавычислительной математики и кибернетики МГУ им. М.В. ЛомоносоваISBN 5-89407-048-1© Издательский отдел факультета вычислительной математики и кибернетики МГУ им. М.В.Ломоносова, 199921.
ПРЕДИСЛОВИЕСборник задач составлен как дополнение к учебнику Б. Кернигана и Д.Ритчи «Язык программирования Си» [1], поэтому в нем сохранен такой же порядок разделов. Однако предполагается, что некоторое минимальное представление о структуре программы на Си и простейшем вводе-выводе у читателяимеется (в объеме разделов 1.7 и 1.8 первой главы учебника по Си [1]). Сборникможет быть использован и независимо от учебника Б. Кернигана и Д.
Ритчи;рассматриваемая версия Си соответствует стандарту ANSI (X3.159 - 1989) [2].Кроме того, в сборнике приведено краткое описание заданий практикума, которые рекомендуется выполнить для закрепления пройденного материалаи получения навыков в написании законченных программ.Значительную часть сборника составляют приложения, где описанабиблиотека стандартных функций языка Си, некоторые системные функции ОСUNIX и фрагменты стандарта языка Си, связанные с правилами приведения типов и адресной арифметикой.2.
ТИПЫ, ОПЕРАЦИИ, ВЫРАЖЕНИЯ2.1. Верно ли записаны константы, представляющие целочисленныезначения? Для верно записанных констант определить их значение, тип.1231E6123456789LU-50XFUL‘0’058‘\x7’0X-1AD‘\122’001230xffffffL01A-‘x’″x″‘a’U0731UL‘\n’+0xaf0X02.2. Верно ли записаны константы с плавающей точкой? Для верно записанных констант определить их значение, тип.1.711E-60.314159E1F.0050051E-045.E+20e00x1A1.505.500X1E60F1234.56789L1.0E-10D3.1415U1e-2f-12.3E-6+10e6123456LE-62.3. Верно ли записаны выражения? Для верно записанных выраженийвычислить их значения ( операции + - * / % = ):int a, b, c, d, e;a = 2; b = 13; c = 7; d = 19; e = -4;b/a/cd/a%cc % d-e-e % a + b / a ∗-5+5b%e7-d%+(3-a)b % - e ∗ c 9 / c - - 20 / d2.4.
Верно ли решена задача: «значение целочисленной переменной сувеличить на 1; целочисленной переменной а присвоить значение, равное удвоенному значению переменной с ».int a, c; c = 5;a). c ++ ;b). a = 2 ∗ c++ ;c). c += 1;d). a = c++ + c;a = 2 ∗ c;a = c + c;3e). ++c;a = c + c;f). a = ++ c + c;g). a = c += 1 + c;h). a = (c+=1)+c;2.5. Верно ли решена задача: «значение целочисленной переменной суменьшить на 1; целочисленной переменной а присвоить значение, равное частному от деления переменной с на 2».int a, c; c = 5;a). -- c ;b).
a = -- c / 2;c). c -= 1;d). a = c -- / 2;a = c / 2;a = c % 2;e). a = c -= 1/2;f). a = (c = c - 1)/2; g). a = (c -= 1)/2;h). a=(c-= 1)/2.0;2.6. Эквивалентны ли выражения?a) E1 op= E2иE1 = E1 op E2b) E1 op= E2иE1 = E1 op (E2)Замечание: здесь E1, E2 - выражения допустимого в этом случае типа ;op - операция (одна из + - * / % >> << & ^ | ).2.7. Верно ли записаны выражения? Для верно записанных выраженийвычислить их значения ( операции + - * / ++ - - операции присваивания ):int a, b, c; a = 2; b = 6; c = 3;- - -a-- - ab-- - aa += a ++++ b / a ++ ∗ --ca --- b- a-- -ba ++ = ba = a ++b++ / ++a ∗ c -- --aa- --ca ++ = a++ a = ba = ( b + 1 ) ++2.8.
Верно ли записаны выражения? Для верно записанных выраженийвычислить их значения, определить тип результата (операции + - * / % ++операции отношения, операции присваивания ):int i, j, k, m; char c, d; i = 1; j = 2; k = -7; m = 0; c = ‘w’;d = ’a’+1 < cm = - i - 5 ∗ j >= k+1i + j++ + k = = -2∗jm=3<j<5m=3==j<5m = = c = ’w’m = c != 87m = c = ! 87m = ! c = 87m = !c+87! m = =c + 87m ! = c + 87k==j-9==ik ∗= 3 + ji + j = !ki += ++ j + 3k %= m = 1 + n / 21 + 3 ∗ n += 7 / 51 + 3 ∗ (n += 7) / 5 c + i < c - ‘x’+10i - k = = ‘0’+9 < 102.9.
В логике справедливы утверждения:not (not x) = xx and true = xВерны ли соответствующие утверждения для операций ! и && в Си?Ответ обосновать.2.10. При любом вещественном y > 0 x < x + y математически верно.Верно ли подобное утверждение для выражения на Си?2.11. Написать эквивалентное выражение, не содержащее операции !! ( a>b )! ( 2∗a == b+4 )! ( a<b && c<d )4! ( a<2 || a>5)! ( a<1 || b<2 && c<3 )2.12. Пустьchar c; short s;int i;unsigned u;signed char sc;float f; double d; long lng; unsigned short us; long double ld;Определить тип выражений:c-s/iu ∗ 3 - 3.0 ∗ u - iu - us ∗ i( sc + d ) ∗ ld(5 ∗ lng - ‘a’ ) ∗ ( s + u / 2 )( f + 3 ) / ( 2.5f - s ∗ 3.14 )2.13.
Допустимо ли в Си? Если "да" вий; если "нет" - объясните почему.а). . . .b).int i;i = (1 || 2) % (1 | 2 );printf ( ″ i = %d\n″, i);опишите семантику этих дейст-...int a, b, m, n, z;m = n = 5;z = a = b = 0;z--, ( a = b ) = z + ( m != n );printf (″%d %d %d %d %d\n″,a, b, m, n, z);с). . . .d).
. . .int i = 1;double x = 1.9; int a;i = i << i | i;double b = 3.7;printf ( ″ i = %d\n″, i);a = b += (1 && 2 || 3) != (int)x;printf (″%f %d %f\n″, x, a, b);e). . . .f). . . .int x;int i, x, y; x = 5; y = 10; i = 15;x = 5; ++ x =10;x = ( y = 0, i = 1);printf ("%d\n", x);printf("%d %d %d\n", i, x ,y);( x = y == 0) , i=1;printf("%d %d %d\n", i, x, y);g). . . .h). . . .int x, y;int x = 2, y, z;x = 5; y = x && ++ x;x ∗= 3+2; x ∗= y = z = 4;printf("%d %d\n", x, y);printf ("%d %d %d\n", x, y, z);x = y == z; x == ( y = z );printf ("%d %d %d\n", x, y, z);i).
. . .j). . . .int x = 2, y = 1, z = 0;int x = 03, y = 02, z = 01;y = x && y || z;printf("%d\n", x | y & -z);x = x || !y && z;printf("%d\n", x ^ y & -z);z = x / ++x;printf("%d\n", x & y && z);printf(" %d %d %d\n", x, y, z);printf("%d\n", x<<3);k). .
. .l). . . .int x, y, z; x = y = z = 1;int x, y, z, i; x = y = z = 1;x += y += z;i = ++x || ++y && ++z;printf("%d\n", x < y ? y++ : x++);printf("%d%d%d%d\n", x,y,z,i);printf("%d\n", z+=x<y ? ++x : y--);i = x++ <= --y || ++z >= i;printf("%d %d %d\n", x, y, z);printf("%d%d%d%d\n", x,y,z,i);printf("%d\n", z>=y && y>=x);52.14. Что будет напечатано в результате выполнения следующего фрагмента программы?...double d; float f; long lng; int i; short s;s = i = lng = f = d = 100/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);d = f = lng = i = s =100/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);s = i = lng = f = d = 1000000/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);d = f = lng = i = s =1000000/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);lng = s = f = i = d =100/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);f = s = d = lng = i = (double)100/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);s = i = lng = f = d = 100/(double)3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);f = s = d = lng = i = (double)100/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);i = s = lng = d = f = (double)(100/3);printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);2.15.
Что будет напечатано в результате выполнения следующего фрагмента программы?double d = 3.2, x; int i = 2, y;x = ( y = d / i ) ∗ 2; printf ("x = %f ;y = %d\n", x, y);x = ( y = d / i ) ∗ 2; printf ("x = %d ;y = %f\n", x, y);y = ( x = d / i ) ∗ 2; printf ("x = %f ;y = %d\n", x, y);y = d ∗ ( x = 2.5 / d); printf ("x = %f; y = %d\n", x, y);x = d ∗ ( y = ( (int)2.9 + 1.1) / d; printf ("x = %d y = %f\n", x, y);2.16. Дано вещественное число x .
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.