Написание программы, которая находит максимум из введенных целых чисел. Правильные скобочные структуры

Страницы работы

Фрагмент текста работы

Выражение a == 0 является проверкой равенства, её значение равно "истина" или "ложь".

Для иллюстрации применения условного оператора рассмотрим программу определения большего из трех чисел. Первый if оператор представляет полную условную конструкцию, во втором случае else отсутствует. Обратите внимание, что точка с запятой, завершая оператор присваивания max=x, не нарушает единство if- оператора. Еслиelse- ветвь пропускается во вложенных условиях, возможна неоднозначность их толкования. Во избежание двусмысленностей решают так: else  соответствует ближайшему if, не имеющего своего else.

  Пример 1.3.

#include <stdio.h> main()     /* главная функция*/ {    int x, y, z, max ;   /* описание переменных*/ printf(" Введите три числа :\n ");   scanf(" %d %d %d ", &x, &y, &z);  /*ввод трех чисел*/ if( x > y)   /*операции сравнивания*/   max=x;  else      max=y;  if ( z>max)    max=z;  printf(" Максимальное из (%d, %d, %d)= %d \n",x, y, z, max);    }

Приведенная ниже программа подсчитывает сумму цифр введенного числа N. Цикл while последовательно выделяет и суммирует цифру исходного числа, начиная с последней; для для выделения применяется операция взятия остатка от деления - %. При делении целых чисел любая дробная чать отбрасывается, поэтому после операции N=N/10; исходное число уменьшается в 10 раз при каждом "обороте" цикла, пока, наконец, не станет равным нулю, после чего цикл завершается и на экран дисплея выдается значение переменной S, в котором содержится сумма цифр числа N.

  Пример 1.6

#include <stdio.h> main()   {   int N,S,Z;   S=0;   printf("ВВЕДИ N\n");   scanf("%d",&N)   while(N!=0) {   Z=N%10   N=N/10   S=S+Z; }   printf("СУММАЦИФР=%d\n",S);   } 

// programa nahojdeniya raznici (max-min) #include<iostream.h> #include<conio.h> #include<stdlib.h>

void printArray ( int [] );

int main() {   clrscr();   int x[20],    max,    min;

  for (int i = 0; i<20; i++)     x[ i ] = rand() / 1000;

  max = x[ 0 ];   min = x[ 0 ];

  for (int j = 1; j<20; j++) {     if (x[ j ] < min)    min = x[ j ];     if (x[ j ] > max)    max = x[ j ];   }   printArray( x );   cout << "\n" << "Raznica = " << max - min;

  getch(); }

void printArray ( int a[] ) {   for (int i = 0; i < 20; i++)     cout << a[ i ] <<"  ";   cout << endl; } 

Определение функции

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

  Определение функции состоит из двух частей: заголовка и тела. Заголовок определяет имя функции, ее тип и формальные параметры, тело определяет действия над данными, выполняемые функцией. Возращающее функцией значение передается в вызывающюю программу опрератором return  (выражение). Значение "выражения" и есть результат функции (возращаемого значения). Если в нашей программе функция физически следует за вызывающей ее функцией main, то надо в последней объявить функцию внешней с помощью описателя extern: extern int fun(); или еще проще int fun();. В противном случае при компиляции будет выдана ошибка. Всякая функция имеет вид:  

[тип] имя([список формальных параметров])   описания формальных параметров; { описания; операторы; }

  Здесь квадратные скобки указываютя, что заключенная в них конструкция может отсутствовать. По умолчанию тип функции целый. Описание формальных параметров расположено между списком параметров и левой скобкой. Каждое описание заканчивается точкой с запятой. Формальные параметры функции полностью локализированы в ней и недоступны для других функций. Аргументы функции передаются по значению, а не их адреса.

  Рассмотрим пример программы возведения числа в степень. Для этого составим функцию power(t,n); В нашей реализации функция power предшествует головной программе, поэтому она предварительно не объявлена. Описание формальных параметров функции происходит в заголовке (int t,n;) Оператор int p=1;  в теле функции определяет переменную p целого типа и присваивает ей начальное значение равное 1. Выражение int p=1; в точности эквиалентно   последовательности операторов int p; p=1; Обращение к функции задает один из аргументов стнадартной функции printf в программе main. Выражение power(t,n) предписывает вызов функции. Когда программа main достигает этой точки, то все управление передается функции power. Операторы , содержащиеся в теле функции power фактически оперируютя данными. Когда достигается оператор return , осуществляется переход в ту точку программы main, из которой мы пришли в power. Значение, вычисляемое функцией power, передается в головную программу с помощью оператора return(p). В скобках в общем случае может быть любое значение.

  Прмер 2.0

/*Функция y=t**n*/   int power(t,n);   int t,n;   { int p=1;   while(n!=0)    { if(n%2 !=0) p=p*t; n=n/2; t=t*t;    } return(p); }   /*Возведение в степень- головная программа*/   #include <stdio.h>   main() {   int a,n;    printf("Введи a,n \n");   scanf("%d %d",&a,&n);   printf("%d в степени %d = %d",a,n power(a,n)); }

    Рекурсия.

В языке Си можно использовать рекурсивно, т.е. функция может вызывать сама себя. Простейший пример 2.1, где функция main вызывает сама себя остановить которую можно только с помощью CTRL+C  - ^С. При рекурсивном обращении к функции - создается новый экземпляр данных

Похожие материалы

Информация о работе

Тип:
Конспекты лекций
Размер файла:
127 Kb
Скачали:
0