
- •Простые типы данных
- •Модификаторы
- •1. Запись целых констант
- •2. Запись вещественных констант
- •3. Запись символьных констант
- •1. Арифметические операции над данными целочисленных типов
- •Простые типы данных
- •Модификаторы
- •Операция присваивания
- •Простые типы данных
- •Модификаторы
- •Операция присваивания
- •Диапазоны значений простых типов данных для ibm pc
- •5. Структура программы. Функции.
- •2. Формальные параметры функций
- •3. Возвращаемые значения функций
- •2.2 Пример простой программы на языке Си.
- •Управляющие конструкции
- •Ветвления
- •Циклы while, do.. .While и for
- •Теоретичсекий зачет по операторам цикла
- •Графика
- •Указатели
- •Преобразование типов
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Операции над указателями.
- •Структуры
- •Объединения
- •. Описания типов (typedef)
- •Поразрядные операции (bitwize)
2.2 Пример простой программы на языке Си.
Следующий пример простой, но вполне законченной программы поможет понять многие из рассмотренных раннее принципов построения программ на языке Си. Наша первая программа вводит два числа, вычисляет их сумму и печатает результат с поясняющим текстом “Сумма” (рис.2.1.).
#include <stdio.h>
main()
{
int a, b, c;
a=5; b=7;
c= a + b;
printf(“СУММА= %d \ n”, c);
scanf обеспечивает форматированный ввод данных. в качестве фактических параметров функция scanf использует адреса переменных, а не их значения. Для этого перед соответствующим параметром ставят знак &XI означает “адрес переменной XI”, а не значение , которая эта переменная имеет в данный момент. Строка форматов функции scanf указывает, какие данные ожидаются на выходе. Если функция встречает в форматной строке знак % , за которым следует символ преобразования, то она будет пропускать на входе символы до тех пор , пока не встретит какой нибудь непустой символ /* Ввод двух чисел, вычисление их суммы и печать результата
*/
#include <stdio.h> main()
{
int a, b, c;
scanf( “%d %d “, &a, &b );
c = a + b;
printf( “СУММА= %d \ n”, c ) }
Символ формата |
Тип выводимого объекта |
%с char
%s строка
%d int
%o int ( в восьмеричном виде )
%u unsigned int
%x int ( в шестнадцатеричном виде )
%ld long ( в десятичном виде )
%lo long ( в восьмеричном виде )
%lu unsigned long
%lx long ( в шестнадцатеричном виде )
%f float/double ( c фиксированной точкой)
%e float/double ( в экспоненциальной форме )
%g float/double ( в виде f или е в зависимости от значения )
%lf long float ( c фиксированной точкой )
%le long float ( в экспоненциальной форме )
%lg long float ( в виде f или е в зависимости от значения )
10 первых программ
Ввести а и b. Поменять местами значения этих переменных.
#include <stdio.h>
main()
{
int x,y;
scanf("%d",&x);
if (x>0) printf("Net resheniya\n");
else y=x*2+3;
if (x==0) y=0;
printf("y=%d",y);
}
2. вывести название месяца по его номеру
#include <stdio.h>
main()
{
int m;
scanf("%d",&m);
if ((m<=0) || (m>12)) printf("Ne byvae\n");
if (m==1) printf("january\n");
if (m==2) printf("februaru\n");
if (m==3) printf("march\n");
if (m==4) printf("april\n");
if (m==5) printf("may\n");
if (m==6) printf("june\n");
if (m==7) printf("july\n");
if (m==8) printf("august\n");
if (m==9) printf("september\n");
if (m==10) printf("october\n");
if (m==11) printf("november\n");
if (m==12) printf("december\n");
}
3. вывести времена суток по часу
#include <stdio.h>
main()
{
int a;
scanf("%d",&a);
if ((a>23) ||(a<0)) printf("NET!\n");
if ((a>=0) && (a<=3)) printf("Night\n");
if ((a>3) && (a<=12)) printf("Morning\n");
if ((a>12) && (a<18)) printf("Afternoon\n");
if ((a>18) && (a<=21)) printf("Evening\n");
if ((a>21) && (a<=23)) printf("Night\n");
}
4 поменять местами 2 переменные. не используя третьей
#include <stdio.h>
main()
{
int a,b;
scanf("%d%d",&a,&b);
a=b-a;
b=b-a;
a=a+b;
printf("a=%d,b=%d",a,b);
}
5.вычислить сумму 10 чисел ( без цикла)
#include <stdio.h>
void main()
{
int m,a,s,d,f,g,h,j,k,l,o;
scanf("%d%d%d%d%d%d%d%d%d%d",&a,&s,&d,&f,&g,&h,&j,&k,&l,&o);
m=a+s+d+f+g+h+j+k+l+o;
printf("Summa=%d",m);
}
6. вычислить произведение 5 чисел без цикла
#include <stdio.h>
void main()
{
int m,a,s,d,f,g;
scanf("%d%d%d%d%d",&a,&s,&d,&f,&g);
m=a*s*d*f*g;
printf("Summa=%d",m);
}
#include <stdio.h>
void main()
{
int a,s;
s=0;
for (a=1;a<=10;a++) s+=a;
printf("Summa=%d",s);
}
6. вычислить сумму положительных произведение отрицательных и колиечство нулевых значений из 10 (без цмкла)
#include <stdio.h>
void main()
{
int a,s,d,e,f,g,h,j,k,l,o,p,q;
p=0;
q=0;
scanf("%d%d%d%d%d%d%d%d%d%d",&a,&s,&d,&f,&g,&h,&j,&k,&l,&o);
if (a>0) p+=a;
else q+=a;
if (s>0) p+=s;
else q+=s;
if (d>0) p+=d;
else q+=d;
if (f>0) p+=f;
else q+=f;
if (g>0) p+=g;
else q+=g;
if (h>0) p+=h;
else q+=h;
if (j>0) p+=j;
else q+=j;
if (k>0) p+=k;
else q+=k;
if (l>0) p+=l;
else q+=l;
if (o>0) p+=o;
else q+=o;
printf("Summa=%d,%d",q,p);
}
поменять местами 2 переменных через 3 дополнительную
#include <stdio.h>
main()
{
int a,b,t;
scanf("%d%d",&a,&b);
t=a;
a=b;
b=t;
printf("a=%d,b=%d",a,b);
}
найти наибольшее из 2 чисел
#include <stdio.h>
main()
{
int a,b,c,max;
scanf("%d%d%d",&a,&b,&c);
max=a;
if (max<b) max=b;
if (max<c) max=c;
printf("max=%d",max);
}
Прототипирование (предварительное объявление) функций.
Директива препроцессора #include
Рассмотрим следующий пример:
void main(void)
{ printf("Здравствуй, Мир!");}
! В правильном варианте (мы приводили его в качестве примера первой программы) обязательно должна присутствовать строчка #include <stdio.h>. Если вы посмотрите на содержимое файла stdio.h (а это вполне можно сделать, это обычный текстовый файл, обычно он располагается в каталоге, указанном в Include Directories), то увидите в нем большое количество строк, являющихся объявлениями функций (объявление ? это фактически некоторый шаблон заголовка
Итак, прототипирование - это предварительное объявление функций (описание того, как выглядят их заголовки). Большинство файлов, подключаемых директивой #include, содержат именно прототипы функций.