Добавил:
north memphis Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование II Экзамен Теория и Практика.pdf
Скачиваний:
2
Добавлен:
29.01.2025
Размер:
344 Кб
Скачать
☆

Практика

Практика

Пример:

Ввести с клавиатуры строку с пробелами. Программа должна вывести символы в верхнем регистре

#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;​

}