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

Практика

Задача #1

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

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

}

Задача #2

Заполнить двумерный массив [3][3], в каждой строке найти максимальное и минимальное значения.

#include <stdio.h>​

#include <stdlib.h>​

​

int main()​ {​

int a[3][3];​ size_t i,j;​ int max,min;​

for(i=0;i<sizeof(a)/sizeof(a[0]);i++)​ {​

for(j=0;j<sizeof(a[0])/sizeof(a[0][0]);j++)​ {​

scanf("%d",&a[i][j]);​ fflush(stdin);​

}​

}​ for(i=0;i<sizeof(a)/sizeof(a[0]);i++)​ {​

max = a[i][0];​ min = a[i][0];​

for(j=0;j<sizeof(a[0])/sizeof(a[0][0]);j++)​ {​

if (max<a[i][j]) max = a[i][j];​ if (min>a[i][j]) min = a[i][j];​

}​ printf("%d\n%d\n",max,min);​

}​

return 0;​

}

Задача #3

Функция принимает массив int, размер массива, два адреса. Подсчитать количество четных и нечетных значений и вернуть их количество через указатели.

#include <stdio.h>​ #include <stdlib.h>​

​

int chetnechet(int a[],size_t n,int* chet,int* nechet)​ {​

if(n<0) return 2;​ if(chet==NULL) return 3;​ if(nechet==NULL) return 4;​ int x=y=0;​

size_t i;​ for(i=0;i<n;i++)​ {​

if(a[i]%2==0) x++;​ else y++;​

}​

*chet=x;​

*nechet=y;​ return 0;​

}​

​

int main()​

{​

int a[10];​ size_t n,i;​

int chet,nechet;​ n=sizeof(a)/sizeof(a[0]);​ for(i=0;i<n;i++)​

{​

scanf("%d",&a[i]);​

}​

chetnechet(a,n,&chet,&nechet);​ printf("%d\n%d",chet,nechet);​ return 0;​

}

Задача #4

Двумерный динамический массив​

#include <stdio.h>​

#include <stdlib.h>​

​

int main()​

{​

int** a;​

size_t n,m,i,j;​ scanf("%zu",&n);​ fflush(stdin);​ scanf("%zu",&m);​ fflush(stdin);​

a=(int**)malloc(n*sizeof(a[0]));​ if(a==NULL) return 1;​ for(i=0;i<n;i++)​

{​

a[i]=(int*)malloc(m*sizeof(a[0][0]));​ if(a[i]==NULL) return 2;​

}​ for(i=0;i<n;i++)​ {​

for(j=0;j<m;j++)​ {​

scanf("%d",&a[i][j]);​ fflush(stdin);​

}​

}​ for(i=0;i<n;i++)​ {​

for(j=0;j<m;j++)​ {​

printf("%d\n",a[i][j]);​

}​

}​ for(i=0;i<n;i++)​ {​

free(a[i]);​

}​ free(a);​ return 0;​

}

Задача #5

int example(size_t n,int** a)​ {​

int* b;​

if(n==0) return 1;​ if(a==NULL) return 2;​

b=(int*)malloc(n*sizeof(b[0]));​ if(b==NULL) return 3;​

*a=b;​

return 0;​

}​

​

без промежуточного указателя *b​

​

int example(size_t n,int** a)​ {​

if(n==0) return 1;​ if(a==NULL) return 2;​

*a=(int*)malloc(n*sizeof((*a)[0]));​ if(*a==NULL) return 3;​

return 0;​

}

Создание динамического массива в функции. что в мейне писать???

Задача #6

Написать функцию, которая ищет минимум из интового массива, и возвращает это значение через указатель. Аргумента три, сам массив, кол-во элементов, указатель чтоб вернуть значение.

Обязательно проверка.

#include <stdio.h>​

#include <stdlib.h>​

​

int getmin(int a[],size_t n,int* min)​ {​

int x;​ size_t i;​

if(n==0) return 2;​ if(min==NULL) return 3;​ x=a[0];​ for(i=0;i<n;i++)​

{​

if(x>a[i]) x=a[i];​

}​ *min=x;​ return 0;​

}​