БИЛЕТ 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();
}