November 1, 2018

Язык си

1) Ввод библиотек.

#include<stdio.h.

#include<math.h>

#include<string.h>

#include<stdlib.h>

#include<time.h>

#include <locale.h>

setlocale(LC_ALL, ""); - после int main - включает русский язык

2) Функция main

int main()
{
. 
.
.
return 0;
}

3) Виды переменных

  • целые числа – тип int (%d)
  • вещественные числа – тип double(%f), float (%f) - или еще %.2f - 2 точки после запятой
  • и символы – тип char (%c)

4) Оператор switch

  char answer; // создаем переменную
  printf("Введите ваш вариант ответа: ");
  scanf("%c",&answer); // ввод с клавиатуры
 switch (answer) {                     - 
    case 'a': printf("GOOD!\n"); break; // если ввели "a", то будет вывод такой
    case 'b': // тут если пропуск -  повторяется как выше
    case 'c': // тут тоже
    case 'd': printf("BAD!\n"); break; // если "d" - вывод такой
    default:  printf("ERROR!\n"); break; // в остальных случаях вот такая штука
  }

5) Оператор if - else

if ( x < 0 ) {            // условие
    printf("Negative!\n");
  } else {              // или же если
    if ( x == 0 ){
      printf("Zero!\n");
    } else {           // или же если
      printf("Positive!\n");
    }
  }

6) Оператор for

for (int i = 0; i < 100; i = i + 1)
{
   printf или что-то такое тут
  }

7) Оператор while

 while(control != 0) //проверяется условие, если условие не выполняется - 
    все что в фигурных скобках работать не будет
{  

    } 

8) Оператор do while (зацикливание или постусловие)

  do { 
    scanf("%lf", &temp);
    sum = sum + temp;
    k = k + 1;  // счетчик
  } while(k <= 5);  //5 раз выполнится

Грубо говоря это можно юзать для счетчика, либо для того, чтобы выолнилась какая-то штука в 1 раз, а потом в остальные разы проверялось условие

9) Главная и не главная функции

int max_num(int a, int b)   // создаем функцию
{  
  int max = b;
  if (a > b) 
    max = a;

  return max;
}

//основная программа
int main(void)      //основная функция 
{
  int x = 0, y = 0;
  int  m = 0;

  scanf("%d %d", &x, &y);

  m = max_num(x,y);    // подставляем в переменную переменную из функции и в скобках порядок

  printf("max(%d,%d) = %d\n",x,y,m);

  return 0;
}

Иногда бывает удобно

10) Массивы

int arr_int[8];
double arr_float[11]; 
float number[2000];  // так объявляются массивы. так в них хранится мусор 
double arr[50] = {0}; // так в массиве хранятся все числа равные 0

Простая программа для вывода каждого числа массива:

#include <stdio.h>

int main(void){
  int arr[5] = {2, 4, 3, 5, 5}; // при объявлении в квадратных скобках - размер массива
  
  printf("%d %d %d %d %d\n",arr[0], arr[1], arr[2], arr[3], arr[4]); // при выводе или
просто присваивании и тд в квадратных скобках номер числа в массиве (начинается с 0)

  return(0);
}

Но для этого легче использовать циклы:

#include <stdio.h>


int main(void) {
	int arr[100] = { 0 };


	for (int i = 0; i < 100; i = i + 1) {
		arr[i] = i;
	}


	for (int i = 0; i < 100; i = i + 1) {
		printf("%d\t", arr[i]);
	}
	getch();
	return(0);
}

11) Двумерные массивы

int arr2[4][8] = {0}; // нулями
int arr [2][4] = {{1,2,4,29},{3,4,6,1}}; //произвольными значениями

// первое число в скобках - число столбцов
// второе число в скобках - число строк

При присваивании или выводе делается вот так:

12) Строки

Строка - это массив символов

Объявляется вот так:

char str[10];
  char str1[10] = {'Y','o','n','g','C','o','d','e','r','\0'};
  char str2[10] = "Hello!";
  char str3[] = "Hello!";

Вывод строки делается вот так (3 способа):

 puts(str1);
  printf("%s\n",str2);
  puts(str3);

Ввод строки с клавиатуры:

#include <stdio.h>
int main(void) {
  char str[20];
  gets(str); // вводим сюда че хотим
  puts(str); // выводим че ввели
  return 0;
}
#include <stdio.h>
int main(void) {
  char str[10];
  fgets(str, 10, stdin); // получить для стр, 10 символов (то есть 9 - 1 под ноль в конце), 
ввод с клавиатуры
  fflush(stdin); // очищаем поток ввода
  puts(str);

  int h = 99;
  printf("do %d\n", h);
  scanf("%d",&h);
  printf("posle %d\n", h);

  return 0;
}

Функции для работы со строками через #include <string.h>:

strlen - вычислить длину строки (число символов):

#include <stdio.h>
#include <string.h>

int main(void) {
// объявляем три строки
  char str1[19] = "Peace! ";

  int l1 = strlen(str1); // вычисляем длину первой строки

// выводим на экран строку str1 и её длину
  printf("%d\n", l1);

  return 0;
}

strcat - склеивание строк (следить за тем чтобы вместилось):

#include <stdio.h>
#include <string.h>

int main(void) {
// объявляем три строки
  char str1[19] = "Peace! ";
  char str2[] = "Labor! ";
  char str3[] = "May!";

// выводим строки на экран
  printf("str1: %s\n",str1);
  printf("str2: %s\n",str2);
  printf("str3: %s\n\n",str3);
   
// присоединяем к первой строке вторую
  strcat(str1, str2);
// теперь str1 = "Peace! Labor!"

// присоединяем к первой строке третью 
  strcat(str1, str3);
// теперь str1 = "Peace! Labor! May!"

// выводим на экран строку str1 и её длину
  printf("str1: %s %d\n",str1, strlen(str1));

  return 0;
}

сравнение строк strcmp - если строка больше -1, меньше - (-1), равна - 0:

#include <stdio.h> 
#include <string.h> 

int main(void) { 
  char  str1[] = "hello world",
        str2[] = "hello world", 
        str3[] = "hello World";
// сравниваем строки между собой
  int n12 = strcmp(str1,str2); 
  int n13 = strcmp(str1,str3); 
  int n31 = strcmp(str3,str1); 

// выводим строки и результат работы strcmp  
  printf(" %s i %s =  %d\n", str1, str2,n12); 
  printf(" %s i %s = %d\n", str1, str3,n13); 
  printf(" %s i %s = %d\n", str3, str1,n31); 

// выводим седьмой символ в строке и его ASCII-код
  printf("%c / %d\n",str1[6],str1[6]); 
  printf("%c / %d\n",str3[6],str3[6]);

  return(0); 
} 

strcpy - копирование строк:

копирует первую строку во вторую:

#include <stdio.h> 
#include <string.h> 

int main(void) { 
  char  str1[] = "Hello World!",
        str2[] = "Hi man!";
  printf("str1: %s \nstr2 %s\n\n", str1, str2); 

  strcpy(str1, str2); 

  printf("str1: %s \nstr2 %s\n", str1, str2);

  return(0); 
}