Язык си
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); }