B. Найти количество повторений каждой цифры у заданного натурального числа

void SumDigit (int a){

int b = a;

int c;

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

for(int i = 0; i<10; ++i)

{

c = 0;

a = b;

while(a>0)

{

if(a%10 == i) c++;

a /=10;

}

if(c!=0)

printf ("%d => %d\n", i, c);

}

}

C. Перевод из 10-й с/с в 2..9

int a,r;
{ // ввод n
a = 0; r = 1;
while (n >= 1)
{
a = a + (n % p) * r; r = r * 10;
n = n / p;
}

либо

int main()

{

char M1[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

int M[32]; //Массив под остатки

int a,i,n;

scanf("%d %d", &a, &n);

i=0;

while (a!=0)

{

M[i]=a%n;

a/=n;

i++;

}

for(i--;i>=0;i--)

printf("%c", M1[M[i]]);

printf("\n");

}

D. Дихотомический поиск

int BinSearch(int *M, int left, int right, int x)

{

int mid;

while (left<=right)

{

mid=(left+right)/2;

if (M[mid]==x)

return(mid);

else

{

if (M[mid]>x)

right=mid-1; else

left=mid+1;

}

}

return(-1);

}

E. Проверка, простое ли число

int Prost (int a)

{ int i, n,flag;

double r;

if ((a==2)||(a==3))

flag =1;

else

{

i=2;

flag =1;

r=a;

n= (int)floor(sqrt (r));

while ((i <=n) && flag )

if (!(a%i)) flag=0;

else ++i;

}

return flag;

}

F. Совершенные числа

Натуральное число Р называется совершенным, если оно равно сумме всех своих делителей кроме Р. Доказано, что если р и 2р-1 - простые числа, то число Р=(2р-1)*2^(p-1) является совершенным

void Number_Sover (){

int n,k,p,i,flag,ch;

printf("Enter N ");

scanf("%d",&n);

p=2;i=1;

while (i<=n) {//простое или нет

int j=2;

flag=1; //да

while ((j<=p/2) && (flag))

if ( !(p%j)) flag=0;//нет

else ++j;

if ((flag)||(p==2) ||(p==3)){

int step=1; int m=p-1; int x=2;

while (m != 0){

if (m % 2 == 1) step=step*x;

x=x*x;

m=m / 2;

}

ch=step*(step*2-1);

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

i++;

}

p++;

}}

E. Числа Мерсенна

Числами Мерсенна называют числа вида 2^n-1

void Number_Mersenne(int m)

{

printf("CM\n");

int r=0;

for (int i=1;i<=m;i++)

{

r=(2<<i-1)-1;

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

}

}

F. Числа Армстронга

n-значное число называется числом Армстронга, если оно равно
сумме n-ых степеней своих цифр.

#include <stdio.h>

#include <math.h>

int main()

{

long a,b,k,c,chislo,z;

long double m,t,k1;

m=0; k=0;

printf("Input two borders a b (a<b): ");

scanf("%d %d", &a, &b);

for (int i=a; i<b+1; ++i){ //перебор всех чисел

m=0; k=0; z=i; chislo=i;

while (z) //определение количества знаков

{k++;

z/=10;}

k1=k;

for (int p=1; p<k+1; ++p) //подсчет суммы степеней цифр

{

c=chislo%10;

chislo=(chislo-c)/10;

t=pow(c,k1);

m+=t;

}

if (m==i)

printf("chislo Armstronga: %d\n", i);

}}

G. Числа Фибоначчи
Число называется числом Фибоначчи, если оно является одним из членов последовательности:
fn = fn-1 + fn-2,
где f0 = 1 и f1 = 1.

Можно также определить n-й член ряда Фибоначчи, непосредственно подсчитав выражение:

H. Числа Смита

Число называется числом Смита, если сумма цифр числа равна сумме цифр разложения этого числа на простые множители.

Объявление и определение функций .

При объявлении функции необходимо указать типы параметров и имя функции. Имя функции – идентификатор, в скобках – формальные параметры.

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

int step(int ,int ); //объявление

int step(int x,int n) //определение
{

//тело фнкции

return r;// возвращает результат вычислений и завершает выполнение функции.
}

Функция может возвращать любые типы, кроме массива и функции.

Но функция может вернуть указатель на область памяти, в которой хранится массив и может вернуть указатель на функцию.

Если в качестве типа возвращаемого значения задан тип void, то не требуется возвращать значение.

Функция main()

main – это имя главной функции программы. С функции main всегда начинается выполнение. У функции есть имя (main), после имени в круглых скобках перечисляются аргументы или параметры функции (в данном случае у функции main аргументов нет). У функции может быть результат или возвращаемое значение.

Функция main() с параметрами

Конкретная реализация этой функции зависит от компилятора, но стандартом поддерживаются по меньшей мере два следующих формата вызова:

- Идентификатор_типа main() { }
- Идентификатор_типа main
(int argc, char* argv[], char *envp[]) { }
параметры main - аргументы командной строки.

int main ( int argc , char** argv , char** envp);
где
argc – число параметров(слов) в командной строке, которые записываются в массив argv
argv – массив указателей на строки
envp – указатель на массив указателей на переменные среды

Последняя строка в массиве строк envp имеет нулевую длину.

Наши рекомендации