Какое число будет выведено в результате работы следующей программы var k s integer begin k 1
Перейти к содержимому

Какое число будет выведено в результате работы следующей программы var k s integer begin k 1

Какое число будет выведено в результате работы следующей программы var k s integer begin k 1

Задания Д8 № 4627

Определите, что будет напечатано в результате работы следующей программы. Текст программы приведен на трех языках программирования.

DIM k, s AS INTEGER

FOR k = 12 TO 15

for k := 12 to 15 do

Это задание ещё не решено, приводим решение прототипа.

Определите, что будет напечатано в результате работы следующей программы. Текст программы приведен на пяти языках программирования.

Какое число будет выведено в результате работы следующей программы var k s integer begin k 1

№1. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

var k, s: integer;

while s < 66 do begin

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s < 66, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

Зна­че­ние s есть сумма пер­вых n чле­нов ариф­ме­ти­че­ской про­грес­сии. b =2 a 1+( n -1) d \2* n , — сумма пер­вых n чле­нов про­грес­сии, — раз­ность про­грес­сии, — ко­ли­че­ство чле­нов.

Цикл пре­рвет­ся, когда . s = 2 s 1+( n -1) d /2* n <66

Най ­ дем :s=(2s1+(n-1)d)n<132 ,s1=1 ,d=3 ( т . к . k:=k+3). Чтобы ре­шить это не­ра­вен­ство, нам не­об­хо­ди­мо ре­шить квад­рат­ное урав­не­ние 3 n ^2- n -132=0, среди его кор­ней нас ин­те­ре­су­ют толь­ко по­ло­жи­тель­ные, сле­до­ва­тель­но, n =6,8

Вос­поль­зо­вав­шись ме­то­дом ин­тер­ва­лов, на­хо­дим, что пер­вое на­ту­раль­ное n, при ко­то­ром на­ру­ша­ет­ся усло­вие, есть n =7 .

Под­ста­вив из­вест­ные па­ра­мет­ры в Kn = k 1+( n -1) d по­лу­ча­ем, что k 1=19

№2. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

var k, s: integer;

while k < 30 do begin

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие k < 30, т. е. пе­ре­мен­ная k опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

Так как по­сле­до­ва­тель­ность k пред­став­ля­ет собой ариф­ме­ти­че­скую про­грес­сию, най­дем n из не­ра­вен­ства:

Kn=k1+9n-1)d<30,k1=0,d=3( т . к . k:=k+3). Вос­поль­зо­вав­шись ме­то­дом ин­тер­ва­лов, на­хо­дим пер­вое на­ту­раль­ное n, при ко­то­ром на­ру­ша­ет­ся усло­вие: n =11

Зна­че­ние s есть сумма пер­вых n чле­нов ариф­ме­ти­че­ской про­грес­сии. b =2 a 1+( n -1) d \2* n — сумма пер­вых n чле­нов про­грес­сии, — раз­ность про­грес­сии, — ко­ли­че­ство чле­нов.

№3. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

var k, s: integer;

while k < 13 do begin

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие k < 13, т. е. пе­ре­мен­ная k опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

Так как числа не­боль­шие, можно ак­ку­рат­но вы­пи­сать все s и k:

(Пом­ни­те, что усло­вие k < 13 про­ве­ря­ет­ся сразу после k:=k+4, сле­до­ва­тель­но, дей­ствие s:=s+2*k для k=16 вы­пол­нять­ся не будет)

Сле­до­ва­тель­но, ответ 49+16=65

№4. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

var k, s: integer;

while k < 11 do begin

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие k < 11, т. е. пе­ре­мен­ная k опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

За­пи­шем по­сле­до­ва­тель­но зна­че­ния s и k:

k 1 2 3 4 5 6 7 8 9 10

s 0 3 6 10 15 21 28 36 45 55

Цикл вы­пол­нит­ся де­сять раз: так как дей­ствие k := k+1 стоит в конце цикла для k=11 дей­ствие s:= s + k не будет вы­пол­нять­ся.

№5. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

var k, s: integer;

while k < 15 do begin

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие k < 15, т. е. пе­ре­мен­ная k опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

Цикл будет вы­пол­нять­ся, пока k не ста­нет боль­ше либо рав­ным 15. Учи­ты­вая, что k при­ни­ма­ет толь­ко чётные зна­че­ния, по­след­ним дей­стви­ем будет , а цикл вы­пол­нит­ся 8 раз. К 5 в ре­зуль­та­те по­сле­до­ва­тель­но при­бав­ля­ют­ся все чет­ные числа до 16 вклю­чи­тель­но. За­ме­тим, что это — ариф­ме­ти­че­ская про­грес­сия с раз­но­стью про­грес­сии, рав­ной 2. Поль­зу­ясь фор­му­лой для суммы n пер­вых чле­нов ариф­ме­ти­че­ской про­грес­сии, по­лу­чим:

№6. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

var n, s: integer;

while n <= 8 do begin

По­сколь­ку из­на­чаль­но n = 4, цикл while n <= 8 вы­пол­нит­ся пять раз. Сле­до­ва­тель­но, s = 4 + 5 + 6 + 7 + 8 = 30.

№7. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

var k, s: integer;

while s < 100 do begin

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s < 100, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

Зна­че­ние s есть сумма пер­вых n чле­нов ариф­ме­ти­че­ской про­грес­сии. d =2 a 1+( n -1) d \2* n , — сумма пер­вых n чле­нов про­грес­сии, — раз­ность про­грес­сии, — ко­ли­че­ство чле­нов.

Цикл пре­рвет­ся, когда s =2 s 1( m -1) d \2* n <100 .

Най ­ дем :s=(2s1+(n-1)d)n<200 ,s1=0 ,d=4 ( т . к . k:=k+4). Чтобы ре­шить это не­ра­вен­ство, нам не­об­хо­ди­мо ре­шить квад­рат­ное урав­не­ние: n ^2- n -50=0 . Среди его кор­ней нас ин­те­ре­су­ют толь­ко по­ло­жи­тель­ные, сле­до­ва­тель­но, n=7,5

Вос­поль­зо­вав­шись ме­то­дом ин­тер­ва­лов, на­хо­дим, что пер­вое на­ту­раль­ное n, при ко­то­ром на­ру­ша­ет­ся усло­вие, есть n =8 .

Учи­ты­вая по­ря­док опе­ра­ций в цикле, вы­яс­ня­ем, что, до того как пре­рвать­ся, цикл вы­пол­нит­ся еще раз, сле­до­ва­тель­но, n =9 .

Под­ста­вив из­вест­ные па­ра­мет­ры в Kn = k 1+( n -1) d , по­лу­ча­ем, что k 9=32

№8. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

var k, s: integer;

while s < 50 do begin

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s < 50, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

Зна­че­ние s есть сумма пер­вых n чле­нов ариф­ме­ти­че­ской про­грес­сии. d=2a1+(n-1)d\2*n , — сумма пер­вых n чле­нов про­грес­сии, — раз­ность про­грес­сии, — ко­ли­че­ство чле­нов.

Цикл пре­рвет­ся, когда s =2 s 1+( n -1) d \2* n <50 .

Вы ­ яс ­ ним : s=(2s1+(n-1)d)n<100, s1=2, d=2 ( т . к . k:=k+2). Чтобы ре­шить это не­ра­вен­ство, нам не­об­хо­ди­мо ре­шить квад­рат­ное урав­не­ние: n^2-n-50=0 . Среди его кор­ней нас ин­те­ре­су­ют толь­ко по­ло­жи­тель­ные, сле­до­ва­тель­но n =6,5

Вос­поль­зо­вав­шись ме­то­дом ин­тер­ва­лов, на­хо­дим, что пер­вое на­ту­раль­ное n, при ко­то­ром на­ру­ша­ет­ся усло­вие, есть n =7.

Так как опе­ра­ция k:=k+2; идет после s:=s+k; то цикл вы­пол­нит­ся еще раз, сле­до­ва­тель­но, n =8.

Kn=k1+(n-1)d Под­ста­вив из­вест­ные па­ра­мет­ры, по­лу­ча­ем, что k 8=16

№9. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

var k, s: integer;

while k < 25 do begin

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие k < 25, т.к. по усл. while k < 25 do begin и k:=k+2. То есть цикл будет вы­пол­нен 13 раз.

Ак­ку­рат­но вы­пи­шем все s и k:

s 3 4 7 12 19 28 39 52 67 84 103 124 147

k 1 3 5 7 9 11 13 15 17 19 21 23 25

№10. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы (за­пи­сан­ной ниже на раз­ных язы­ках про­грам­ми­ро­ва­ния):

Какое число будет выведено в результате работы следующей программы var k s integer begin k 1

Опубликовано 22.08.2017 по предмету Информатика от Гость >>

Ответ оставил Гость

Блок-схемы — в прилагаемом файле.
1.
переменные s и n в цикле будут меняться так:
30 3
60 9
90 27
120 81
150 243 (n > 100)
Т.е. на экран будет выведено 150

2.
Здесь переменные s и k в цикле будут меняться так:
1 2
3 3
6 4
10 5
15 6
21 7
28 8
36 9
45 10
55 11 (k >=11)
На экран будет выведено значение 55

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *