Бочаров презентации 1 семестр / Tech_Progr_PPT_1p_2016
.pdfСтроки в языке С (продолжение)
Строки можно вводить с клавиатуры: scanf(”%s”, s3);
scanf() – функция форматного ввода, аргументами которой в данном случае являются:
%s – спецификация формата строки s3 – адрес вводимой строки
char hh[]=" |
";//выделение места под строку hh |
char *HH="";
HH=hh; //указатель HH указывает на начало строки hh scanf("%s",HH);
printf("%s\n",HH);
HH++; /*указатель адреса начала строки строки увеличивается на 1, указывая на 2-й символ, а 1-й символ введенной строки не выводится на экран*/
printf("%s\n",HH);
21 |
Технология и языки программирования |
Инициализация переменных
Простые числовые переменные в десятичном формате: int x = 137;
long X = 2097152; float y = 137.0; float z = 1.37E2;
double Z =72.33333E-5;
Простые числовые переменные в других форматах: int x = 0137; // в восьмеричном коде (0 – это ноль) int x = 0x137; // в шестнадцатеричном коде Символьные переменные:
char v = ’W’; // Символ заглавной W char v = ’ \”’; // Символ ”
22 |
Технология и языки программирования |
Инициализация переменных
(продолжение)
Пример
int w=032; int W=0x32;
printf("%d\t%d\t%o\t%x\n",w,W,w,W);
Объявлены и инициализированы две переменные:
w=328 = 2610 W = 3216 = 5010
Выводятся эти переменные сначала в десятичном формате %d, а затем в восьмеричном и шестнадцатеричном форматах %o и %x.
На экране:
26 50 32 32
23 |
Технология и языки программирования |
Инициализация переменных
(продолжение)
Одномерные массивы (векторы) простых переменных, таких, например, как числа и символы инициализируются перечислением значений их элементов в {}. Нумерация элементов начинается с 0! int Vec[] = {1, 3, 7, 15, 31, 63}; //массив целых чисел printf("%d\t%d\t%d\n", Vec[0], Vec[2], Vec[4]);
На экране появится:
1 7 31
char Hi[] = {’H’,’e’,’l’,’l’,’o’,’!’}; //массив символов char *HH=""; //пустая строка
HH=Hi; //копирование массива в строку printf("%s\n",HH); //вывод строки
На экране появится:
Hello!
24 |
Технология и языки программирования |
Инициализация переменных
(продолжение)
Двумерный числовой массив (матрица) хранится в памяти, имеющей последовательную нумерациею ячеек, по строкам (0-я строка, 1-я строка, 2-я строка, 3-я строка и т.д.) и инициализируется перечислением строк, как векторов в общих фигурных скобках:
int M[3][3]={{1,2,3},{4,5,6},{7,8,9}};
Здесь объявлена и инициализирована квадратная матрица целых чисел размерности 3х3 следующего вида:
1 2 3
4 5 6
7 8 9
double mm[2][4] = {{1.8, 0.7, 0.0, 1.2},{-3.3, 0.5, 19.2, 7.1}};
Здесь объявлена и инициализирована квадратная матрица чисел с плавающей точкой размерностью 2х4.
25 |
Технология и языки программирования |
Инициализация переменных
(продолжение)
Пример
#include <stdio.h>
#define n 3 //препроцессор заменяет везде n на 3 int main(void)
{
int M[n][n]={{1,2,3},{4,5,6},{7,8,9}}; double mm[2][4]={{1,2,3,4},{5,6,7,8}}; printf("%d\n",M[2][0]); printf("%10.3f\n",mm[0][1]);
return 0;
}
На экран выводится
7
2.000
26 |
Технология и языки программирования |
Ввод числовых переменных
Используется функция форматного ввода scanf()
Пример
int x=0; int y=0;
float z=0.0;
printf("Initial numbers: x=%d, y=%d, z=%4.2f\n",x,y,z); printf("Enter inline integer x,y and real z: "); scanf("%d%d%f",&x,&y,&z); //Обратите внимание на знаки & printf("\nEnted numbers: x=%d, y=%d, z=%4.2f\n ",x,y,z);
Важное замечание!
Аргументами функции scanf() являются строка формата вводимых переменных и адреса, куда они будут записаны. Поэтому перед именами переменных указывается знак &, который обозначает операцию взятия адреса переменной.
27 |
Технология и языки программирования |
Операции с адресами
Если в программе объявлена переменная Х, которая не является указателем, то &X
–это адрес переменной (знак & называется амперсанд).
Если Р – это указатель, т.е. адрес переменной, то *Р – это значение переменной, содержимое памяти по этому адресу.
В языке Си с указателями (адресами) можно работать, как с переменными особого типа - адресными переменными.
Основные операции - & и *.
28 |
Технология и языки программирования |