Новосибирский Государственный Технический Университет
Лабораторная работа № 1
Тема:Технология работы с программами на языке СИ в системе
программирования Quick C. Элементарные операции.
Группа: АП-318 Дата: 15.03.2004
Преподаватель: Щувихина Я.В.
Студенты: Иванчиков И.В.
Мухин Р.С.
Некрасов А.В.
Вариант: III
г.Новосибирск 2003г.
Цель: Изучить процесс прохождения программы на языке СИ в системе программирования QUICK-C. Ознакомиться с технологией отладки программ. Изучить основные конструкции операторов присваивания и директивы препроцессора.
Задача: А - сложить с В и С, увеличенными на 1 и разделить по модулю D.
В - разделить на 6
С - сложить с В, уменьшенным на 1 и прибавить А. А увеличить на 1.
D - 2-8 разряды В и 1-3 разряды С, сдвинутые вправо на 2.
Задание 1:
Написать программу, выполнявшую арифметические и логические операции над целыми переменными А, В, С, D. Использовать. глобальные статические переменные и инициализацию при компиляции. Вывести значения переменных с помощью функции printf. Переменные С и D печатать в восьмеричном виде.
Текст программы:
#include<stdio.h>
static int a=2,b=5,c=0,d=3;
main()
{
a=(a+(++b)+(++c))/d;
printf("\nA=%d",a);
b=b/6;
printf(" B=%d",b);
c=c+(--b)+a++;
printf(" C=%o",c);
d=((b&508)&(c&14))>>2;
printf(" D=%o",d);
return 0;
}
Результаты: A=3 B=1 C=4 D=0
Вывод: Написали программу, выполняющую арифметические и логические операции над целыми переменными А, В, С, D, используя глобальные статические переменные и инициализацию при компиляции. Вывели значения переменных с помощью функции printf. Переменные С и D напечатали в восьмеричном виде.
Задание 2:
Модифицировать программу, описав переменные как локальные и задав их значения с помощью прямого присваивания. Сравнить результаты с результатами задания 1.
Текст программы:
#include<stdio.h>
main()
{
static int a=2,b=5,c=0,d=3;
a=(a+(++b)+(++c))/d;
printf("\nA=%d",a);
b=b/6;
printf(" B=%d",b);
c=c+(--b)+a++;
printf(" C=%o",c);
d=((b&508)&(c&14))>>2;
printf(" D=%o",d);
return 0;
}
Результаты: A=3 B=1 C=4 D=0
Вывод: Модифицировали программу, описав переменные как локальные и задав их значения с помощью прямого присваивания. Результаты не изменились.
Задание 3:
Изменить программу, использовав для ввода значений переменных функцию scanf. Сравнить результаты.
Текст программы:
#include<stdio.h>
main()
{
static int a,b,c,d;
//a=2,b=5,c=0,d=3;
printf("Введите данные:\n");
printf("\nA=");
scanf("%d",&a);
printf("B=");
scanf("%d",&b);
printf("C=");
scanf("%d",&c);
printf("D=");
scanf("%d",&d);
a=(a+(++b)+(++c))/d;
printf("\nA=%d",a);
b=b/6;
printf(" B=%d",b);
c=c+(--b)+a++;
printf(" C=%o",c);
d=((b&508)&(c&14))>>2;
printf(" D=%o",d);
return 0;
}
Результаты: A=3 B=1 C=4 D=0
Вывод: Изменили программу, использовав для ввода значений переменных функцию scanf. Результаты не изменились
Задание 4:
Описать переменные как автоматические. Вывести их значения до присваивания. Объяснить полученные результаты.
Текст программы:
#include<stdio.h>
main()
{
auto int a=2,b=5,c=0,d=3;
printf("A=%d B=%d c=%o D=%o",a,b,c,d);
a=(a+(++b)+(++c))/d;
printf("\nA=%d",a);
b=b/6;
printf(" B=%d",b);
c=c+(--b)+a++;
printf(" C=%o",c);
d=((b&508)&(c&14))>>2;
printf(" D=%o",d);
return 0;
}
Результаты: A=3 B=1 C=4 D=0
Вывод: Описали переменные как автоматические. Вывесли их значения до присваивания.
Задание 5:
Повторить задание 4, разместив все описания в отдельном файле.
Текст программы:
#include<stdio.h>
#include"c:\progra~1\qc2\bin\laba1_51.h"
main()
{
a=(a+(++b)+(++c))/d;
printf("\nA=%d",a);
b=b/6;
printf(" B=%d",b);
c=c+(--b)+a++;
printf(" C=%o",c);
d=((b&508)&(c&14))>>2;
printf(" D=%o",d);
return 0;
}
Текст файла laba1_51.h:
static int a=2,b=5,c=0,d=3;
Результаты: A=3 B=1 C=4 D=0
Вывод: Повторили задание 4, разместив все описания в отдельном файле.
Задание 6:
Повторить задание 1, использовав вместо переменных А, В, С, D статический массив.
Текст программы:
#include<stdio.h>
main()
{
static int a[4]={2,5,0,3};
a[0]=(a[0]+(++a[1])+(++a[2]))/a[3];
printf("\nA=%d",a[0]);
a[1]=a[1]/6;
printf(" B=%d",a[1]);
a[2]=a[2]+(--a[1])+a[0]++;
printf(" C=%o",a[2]);
a[3]=((a[1]&508)&(a[2]&14))>>2;
printf(" D=%o",a[3]);
return 0;
}
Результаты: A=3 B=1 C=4 D=0
Вывод: Повторить задание 1, использовав вместо переменных А, В, С, D статический массив.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.