Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!