- •Теория
- •Структуры
- •Объединение
- •Файлы
- •Определения
- •Объявление файлов:
- •Смещение
- •Определение размера файла:
- •Чтение и запись данных в файл
- •JAVA
- •Типы переменных
- •Объявление переменных
- •Объявление массивов
- •Классы, поля, методы
- •Квалификаторы доступа к полям и методам класса
- •Конструктор
- •Класс Scanner
- •Наследование
- •Исключения
- •Отслеживаемые исключения
- •Неотслеживаемые исключения
- •Практика
- •Практика
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Задание 6
Практика
Практика
Пример:
Ввести с клавиатуры строку с пробелами. Программа должна вывести символы в верхнем регистре
#include <stdio.h>
int main() {
int i;
char a[100];
scanf("%99[^\n]s",a); /*безопасный ввод до 99 потому что существует терм. ноль*/
fflush(stdin);
for (i=0;a[i]!=0;i++) /*счетчик считает пока не встретит терминальный ноль*/
{
if ('A'<=a[i] && a[i]<='Z') /*проверка на соответствие верхнему регистру*/
{
printf("%c",a[i]);
}
}
return 0;
}
Задание 1
Создать телефонный справочник. Объявить структуру, которая состоит из имени и телефона пользователя. Вывести всё в консоль.
size_t i;
struct Telephone
{
char Name[100];
char Number[11];
};
struct Telephone Users[3]; for(i=0;i<sizeof(Users)/sizeof(Users[0]);i++) {
scanf("%99[^\n]s",Users[i].Name); fflush(stdin); scanf("%10[^\n]s",Users[i].Number); fflush(stdin);
} for(i=0;i<sizeof(Users)/sizeof(Users[0]);i++) {
printf("Name: %s Number: %s\n",Users[i].Name,Users[i].Number);
}
Задание 2
Передача структуры в функцию и вывод её полей:
struct Student/* я так понял структуру нужно объявлять вне main */ {
char Name[100]; int Group;
};
int Example(struct Student* b) {
if(b==NULL) return 1; printf("%s\n",b->Name); printf("%d\n",b->Group); return 0;
}
int main() {
struct Student a;
scanf("%99[^\n]s",a.Name); scanf("%d",&a.Group); Example(&a);
return 0;
}
Задание 3
Поля объединения: интовый массив и char. Размеры одинаковы. Заполнить числами интовый массив и вывести его по байтно.
int main() {
union Example {
int a[4];
char b[16];
};
union Example z; size_t i;
for(i=0;i<sizeof(z.a)/sizeof(z.a[0]);i++) {
scanf("%d",&z.a[i]);
}
for(i=0;i<sizeof(z.b)/sizeof(z.b[0]);i++) {
printf("%hhd\n",z.b[i]);
}
return 0;
}
Задание 4
Создать текстовый файл, режим выбрать самому прочитать значения разных типов. Записать значения в текстовый файл, закрыть файл.
int main() {
int x;
char a[100]; FILE* f;
f=fopen("zxc.txt","w+"); if(f==NULL) return 1; scanf("%d",&x); fflush(stdin); scanf("%99[^\n]s",a); fprintf(f,"%d %s",x,a); x=fclose(f);
if(x!=0) return 2; return 0;
}
Задание 5
Создать бинарный файл, записать в него интовый массив, и не закрывая файл перейти в начало
файла и прочитать данные в другой массив и вывести его. Закрыть файл.
int main() {
int x[3],a[3],z; size_t i;
FILE* f; f=fopen("zxc","wb+"); if(f==NULL) return 1;
for(i=0;i<sizeof(a)/sizeof(a[0]);i++) {
scanf("%d",&x[i]); fprintf(f,"%d\n",x[i]);
} fseek(f,0,SEEK_SET);
fread(a,sizeof(a[0]),sizeof(a)/sizeof(a[0]),f);
for(i=0;i<sizeof(a)/sizeof(a[0]);i++) {
printf("%d\n",a[i]);
} z=fclose(f);
if(z!=0) return 2; return 0;
}
Задание 6
Реализовать функцию, которая принимает путь к файлу и указатель на переменную, через которую, возвратится размер файла.
int example(char* filepath,long int* x) {
int y; FILE* f; long int j;
if(filepath==NULL) return 1; if(x==NULL) return 2; f=fopen(filepath,"r"); if(f==NULL) return 3; fseek(f,0,SEEK_END); j=ftell(f);
y=fclose(f);
if(y!=0) return 4; *x=j;
return 0;
}
int main() {
long int i; FILE* f;
char a[100];
scanf("%99[^\n]s",a); example(a,&i);
printf("%d\n",i); return 0;
}
