Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
6
Добавлен:
14.11.2017
Размер:
350.68 Кб
Скачать

Строки в языке С (продолжение)

Строки можно вводить с клавиатуры: 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

Технология и языки программирования

Соседние файлы в папке Бочаров презентации 1 семестр