Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Локальные и глобальные переменные



8. Дан код: void fun1(…);

void main() { int a; … }

void fun1 (…) { … }

Где можно использовать переменную a?

Варианты ответов: 1) только в main; 2) только в fun1; 3) в main и в fun1;

9. Дан код: void fun1(int a;…) { … };

void main() { … }

Где можно использовать переменную a?

Варианты ответов: 1) только в main; 2) только в fun1; 3) в main и в fun1;

10. Дан код: void fun1(…) { … };

void main() { int a; … }

Где можно использовать переменную a?

Варианты ответов: 1) только в main; 2) только в fun1; 3) в main и в fun1;

11. Дан код: void fun1(int x, …) { … };

void main() { int x; … }

Будет ли ошибка? Варианты ответов:

1) да, ошибка компиляции;

2) да, компиляция пройдёт успешно, но выполняться программа не будет;

3) компиляция и выполнение пройдут успешно.

Параметры по умолчанию.

12. Пусть описана функция

void fun (int i, char c='*', float f=1.2)

{ cout<< endl<< i<<'\t'<<c<<'\t'<<f<< endl;}

Какие из следующих вызовов допустимы? Что будет выведено для правильных вызовов?

1) fun(10, ‘A’); 2) fun (20, 65);

3) fun (33, 65, 3.3); 4) fun (44,, 4.4);

5) if (fun(50, ‘A’, 5.5)) cout<<”+++”; else cout<<”---“;

6) float r; r=fun(6, ‘*’, 0.6); 7) float r; r=fun(6,, 0.6);

13. Для каких функций в записи прототипа есть ошибки? Почему?

void Fun1(int, float, float); void Fun2(int x=5, float y, float z);

void Fun3(int x=5, float y=.6, float z=.7); void Fun4(int x, float y=.6, float z);

void Fun5(int x, float y, float z=.7);

Перегрузка функций.

14. Будет ли компилироваться и выполняться следующая программа? Ответ объяснить.

int Sum (int, int); //1

float Sum (float, float); //2

int main()

{ int i1=12, i2=34;

cout<<Sum(i1,i2)<<" "; //3

float f1=1.1, f2=2.2;

cout<<Sum(f1,f2)<<" "; //4

getch(); return 0;

}

int Sum (int x, int y) //5

{ return x%10 + y%10; }

float Sum (float x, float y) //6

{ return x>y?x:y; }

Варианты ответов:

1) Да. Будет выведено (записать самим) …

2) Нет, так как две функции с одинаковым именем.

3) Нет, так как в //6 вычисляется не сумма.

4) Нет, так как в //1 и //2 в прототипе не указаны имена переменных.

5) Нет, так как одна и та же переменная x в //5 и //6 объявлена с разными типами.

6) Нет, так как… (указать другую причину).

15. Перегрузите три функции для нахождения наибольшего из двух целых, вещественных и символьных величин. В последнем варианте найти символ с наибольшим кодом. В головной функции проверьте каждый из вариантов.

Задачи

1. Для каждой пары введенных целых чисел найти их сумму и произведение двумя способами: с помощью одной функции типа void, которая возвращает и сумму, и произведение двух чисел; с помощью двух функций с одним результатом типа int, одна из которых возвращает сумму, а вторая — произведение двух целых чисел.

void SumMult (int, int, int &, int &);

int MySum (int, int);

int MyMult (int, int);

int main()

{ int a, b, r1, r2; cout<<" 0 0 -- exit"<<endl; cin>>a>>b;

while(a!=0 || b!=0)

{ SumMult(a,b,r1,r2); cout<<a<<" + "<<b<<" = "<<r1<<endl;

cout<<a<<" * "<<b<<" = "<<r2<< endl;

cout<<a<<" + "<<b<<" = "<< MySum (a,b)<< endl;

cout << a << " * " << b << " = " << MyMult(a,b) << endl;

cin >> a >> b; }

return 0; }

void SumMult (int x, int y, int &s, int &p) { s=x+y; p=x*y; }

int MySum (int x, int y) { return x+y; }

int MyMult (int x, int y) { return x*y; }

2. Составить и проверить несколько вариантов функции для нахождения наибольшего из двух чисел: 1) функцию типа int с помощью оператора if и 2) с помощью тернарной операции; 3) функцию типа void с помощью тернарной операции.

int maxfun1 (int, int);

int maxfun2 (int, int);

void maxfun3 (int, int, int &r);

int main()

{ int a, b; cout<<" 0, 0 – exit "<<endl; cin>>a>>b;

while(a!=0 || b!=0){ if (a==b)

cout<<endl<<a<<" is equal "<<b<<endl;

else { cout<<maxfun1(a,b)<<" " <<maxfun2(a,b);

int mymax; maxfun3(a,b,mymax);

cout<<" "<<mymax<<endl; }

cin>>a>>b;

} return 0; }

int maxfun1(int x,int y) { if (x>y) return x; else return y; }

int maxfun2(int x,int y) { return x>y?x:y; }

void maxfun3(int x,int y,int &r) { r=x>y?x:y; }

3. Составить логическую функцию, которая определяет, принадлежит ли точка плоскости с координатами (x, y) части круга радиуса R, находящейся в первой или третьей четверти. В головной программе последовательно ввести координаты точек плоскости и для каждой из них вывести “Да” или “Нет”.

bool Test(float, float, float);

main()

{ float X,Y, R;

do // ввод радиуса с контролем ввода

{ cout<<"R= "; cin>>R;

if (R<=0) cout<<"R<=0, repeat\n ";

} while (R<=0);

int gy=wherey()+1;

cout<<"X=1000 && Y=1000 -- exit";

while (1)

{ gotoxy(2,gy); cin>>X;

gotoxy(10,gy); cin>>Y;

if (X==1000 && Y==1000) break;

if (Test(X, Y, R))

{ gotoxy(20, gy++);

cout<<"Yes\n"; }

else { gotoxy(30, gy++);

cout<<"No\n"; }

}

return 0; }

bool Test (float x, float y, float r)

{ return x*x+y*y<=r*r && x*y>=0; }

Для текста послeднeй функции можно прeдложить eщё два варианта:

if (x*x+y*y<=r*r && x*y>=0) return true;

else return false;

// или

return x*x+y*y<=r*r &&

(x>=0 && y>=0 || x<=0 && y<=0);

4. Составить функцию, которая для одного значения переменной х вычисляет значение бесконечной суммы ряда

y = 1–

c заданной точностью e. В головной программе вычислить значения этой функции для x=–1.6,–1.4,–1.2, …, 1.4, 1.6 и вывести их на экран.

float MyCos(float x);

main()

{ printf("\n x MyCos(x) cos(x)");

for(float X=-1.6; X<=1.600001; X+=0.2)

printf("\n%6.1f%11.7f%11.7f", X, MyCos(X), cos(X));

getch(); return 0; }

/* Для контроля вывели также значение этой же суммы, вычисленное с помощью стандартной функции cos(X) */

float MyCos(float x)

{ float y=0, u=1, k=-1, eps=1e-6;

while (fabs(u)>eps)

{ y+=u; k+=2;

u*=(-1)*x*x/(k*(k+1)); }

return y;

}





Дата публикования: 2015-02-18; Прочитано: 220 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.011 с)...