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 имеет нулевую длину.