Вторник, 21.05.2024, 10:54
Приветствую Вас, Гость

БИЛЕТ 28.

1) Передача аргументов-массивов в функции

 

2) Операции отношения (сравнения).

Операции отношения группируются слева направо, но этот факт не очень полезен; выражение A<B<C не означает того, что оно казалось бы должно означать. Выражение-отношения: <, >, <=, >=, ==, !=

Операции все дают 0, если указанное отношение ложно, и 1, если оно истинно. Результат имеет тип ITN. Выполняются обычные арифметические преобразования. Могут сравниваться два указателя; результат зависит от относительного расположения указываемых объектов в адресном пространстве. Сравнение указателей переносимо только в том случае, если указатели указывают на объекты из одного и того же массива.


*************************************28 - 3

Напишите функцию поиска подстроки в строке.


int posfor(char*s,char*sub)

{

 int ls=strlen(s);

 int lsub=strlen(sub);

 int iold; //переменная, являющаяся здесь позицией sub в s

  printf("Мы имеем строку: %s\n",s);

  printf("И подстроку: %s\n",sub);

 int i=0,i1=0; //i-элемент строки s; i1-элемент строки sub

 for (;i<=ls && i1<lsub;) //пока не просмотрится вся строка s и sub, будут

     {                    //выполняться след. действия

      if (s[i]==sub[i1])  //если найдены одинаковые элементы

             {

              iold=i;i1++;i++;//позиции iold присваивается значение позиции на

             }//которой элементы совпали; i и i1 (элементы s и sub) увел. на 1

      else//если одинаковые элементы не найдены

             {//выплоняется следующий цикл

              if (s[i]<sub[i1] || s[i]>sub[i1])//если элементы не совпдают

                 {

                  if (i1>0)//и если в это время позиция просмотра строки sub не 0

                         {

                          i1=0;//позиция просмотра строки sub принимает 0 значение

                         }

                  else//если же в это время позиция просмотра строки sub - 0

                          i++;//тогда позиция строки s увеличивается на единицу

                 }; //это нужно для того, чтобы: если *непервый* элемент строки

             }; //sub не совпадёт с каким-либо элементом строки s, то вдруг *первый*

     } //элемент sub совпадёт с ним. Поэтому i1 присваевается значение 0.

 iold=i-lsub+1;//iold присваевается значение первого совпадения элементов

  if (i==ls+1 && i1<lsub)//если промотрена вся s, в то время как i1 просмотрен

       {

       printf("Такого символа нет в данной строке\n");//не до конца

       return -1;}

  else//если всё в порядке

      { printf("Подстрока входит в строку в первый раз начиная с %d позиции\n",iold);

      return iold;}

}

 

*************************************28 - 4

Известно, что число делится на 3, когда сумма его цифр делится на 3. Проверить этот признак на примере заданного натурального числа n.


#include<stdio.h>

#include<conio.h>

 int  n=100;

 int s=0;

 int ost;

 void main()

 {

 clrscr();

 printf("%d\n",n);

 for(;n!=0;)

   {

    ost=n%10;

    n=(n-ost)/10;

    s=s+ost;

   }

 if(s%3==0)

   printf("Yes.");

 else

    printf("No.");

 getch();

 }