Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Добавить в программу указатель pArr на тип int. Присвоить указателю pArr адрес среднего элемента массиваСодержание книги
Поиск на нашем сайте
#include<stdio.h> #include<conio.h> void main() { int arr[5],i,*pArr; printf("\narr=%p",arr); for(i=0;i<5;i++) printf("\n&arr[%d]=%p",i,arr+i); for(i=0;i<5;i++) *(arr+i)=i; for(i=0;i<5;i++) printf("\narr[%d]=%d",i,*(arr+i)); pArr=arr+2;//&arr[2] for(i=-2;i<3;i++) printf("\narr[%d]=%d",i,pArr[i]); } } Пример 55. float x=-8.92; int y=5; printf("sizeof x=%u\n", sizeof x); printf("sizeof y=%u\n", sizeof y); printf("sizeof x+y=%u\n", sizeof x+y); printf("sizeof (x+y)=%u\n", sizeof (x+y)); printf("sizeof x*2+1=%u\n", sizeof x*2+1); printf("sizeof 2*y+1=%u\n", sizeof 2*y+1); printf("sizeof ++y*2=%u\n", sizeof ++y*2); printf("sizeof y--*2=%u\n", sizeof y--*2); Ответ:4.4,9,4,9,21,8,8 Пример56. Написать программу, которая в отдельных строках выводит информацию о размере каждого из базовых типов языка (char, short, int, long, float, double, long double). #include <stdio.h> #include <conio.h> int main() { char *p_char,*cd; short *p_short; int *p_int; long *p_long; float *p_float; double *p_double, *dc; long double *p_long_double; printf("sizeof:\n"); printf("-char=%u\n",sizeof(char)); printf("-short=%u\n",sizeof(short)); printf("-int=%u\n",sizeof(int)); printf("-long=%u\n",sizeof(long)); printf("-float=%u\n",sizeof(float)); printf("-double=%u\n",sizeof(double)); printf("-long double=%u\n\n\n",sizeof(long double)); Пример 57. Написать программу, в которой определяются переменные типов char, int, double. Для каждой переменной программа выводит (в строку) ее адрес и значения выражений " адрес + 2 " и " адрес – 1 " #include <stdio.h> #include <conio.h> int main() { char c; int i; double d; printf("tip peremennoi \t adres perem\t adres+2 \t adres-1\n"); printf("char \t\t %p \t\t %p \t\t %p\n",&c,&c+2,&c-1); printf("int \t\t %p \t\t %p \t\t %p\n",&i,&i+2,&i-1); printf("double \t\t %p \t\t %p \t\t %p\n",&d,&d+2,&d-1); getch(); return 0; } Пример 58. Какие результаты будут получены при выполнении следующего фрагмента программы и почему? int x=8, y=3; float z1, z2; z1=x/y; z2=(float)x/y; printf("x/y=%f\n",z1); printf("(float)x/y=%f\n",z2); Ответ:2, 2,666 Пример 59. Написать программу, которая поочередно выводит в шестнадцатеричной форме значения байтов представления переменной ul unsigned long ul=0x77BBCCDD. # include <stdio.h> #include <conio.h> #include <windows.h> int main() { unsigned long ul=0x77BBCCDD,*pUL=&ul,razm; unsigned char *pb;int i=1,j=0; razm=sizeof(ul); pb=(unsigned char*)pUL; printf("byte\t chislo\n\n"); while(j++!=razm) { printf("%i\t %x \n",i++,*pb); pb++; } getch(); } Пример 60. Написать функцию print_arr, которая предназначена для вывода на экран значений элементов типа int из одномерного массивов любой длины. # include <stdio.h> #include <conio.h> void print_arr(int arr[],int len); int main() { int x[7]={1,15,8,14,5,16,2},len; len=sizeof(x)/sizeof(x[0]); print_arr(x,len); getch(); } void print_arr(int *a,int len) { int i, COLUMS,cout; do { printf("Kolichestvo elementov v stroke="); scanf("%d",&COLUMS);} while (COLUMS<0); for(i=0,cout=0; i!=len; i++,cout++) { if (cout==COLUMS) {cout=0; printf("\n");} printf("arr[%d]=%d\t",i,*(a+i)); } return; } Пример 61. В функции print_arr использовать синтаксис с квадратными скобками. П рименяя операцию sizeof к аргументу- массиву. #include <stdio.h> #include <conio.h> void print_arr(int arr[],int len); int main() { int x[7]={1,15,8,14,5,16,2},len; len=sizeof(x)/sizeof(x[0]); print_arr(x,len); getch(); } void print_arr(int *a,int len) { int i, COLUMS,cout; do { printf("Kolichestvo elementov v stroke="); scanf("%d",&COLUMS);} while (COLUMS<0);
for(i=0,cout=0;i!=len;i++,cout++) { if (cout==COLUMS) {cout=0; printf("\n");} printf("arr[%d]=%d\t",i,*(a+i)); } printf("\n\n"); printf("sizeof(a)=%d",sizeof(a)/sizeof(int)); return; } Пример 62. Написать функцию get_arr, которая предназначена для заполнения значениями одномерных массивов произвольной длины. Функция имеет два аргумента а) arr — массив значений типа int; б) len — длина массива. #include <stdio.h> #include <conio.h> const int perem=7; void print_arr(int arr[],int len); void get_arr(int *arr,int len); void main() { int x[perem], len; get_arr(x,7); print_arr(x,7); getch(); } void print_arr(int *a,int len) { int i, COLUMS,cout; do { printf("\nKolichestvo elementov v stroke="); scanf("%d",&COLUMS);} while (COLUMS<0); for(i=0,cout=0;i!=len;i++,cout++) { if (cout==COLUMS) {cout=0; printf("\n");} printf("arr[%d]=%d\t",i,*(a+i)); } printf("\n\n"); printf("sizeof(a)=%d",sizeof(a)/sizeof(int)); return; } void get_arr(int *arr,int len) { int i; printf("Vvedite znacheniya elementov:\n"); for(i=0;i<=len-1;i++) { printf("arr[%d]=\t",i);scanf("%d",&arr[i]); } return; }
Пример 63. Размер массива в функции main определить с помощью именованной константы ARRAY_LENGTH, определяемой препроцессорной директивой: int a[ARRAY_LENGTH]; #include <stdio.h> #include <conio.h> const int ARRAY_LENGTH=7; void print_arr(int arr[],int len); void get_arr(int *arr,int len); void main() { int x[ARRAY_LENGTH],len; get_arr(x,ARRAY_LENGTH); print_arr(x,len); getch(); } void print_arr(int *a,int len) { int i, COLUMS,cout; do { printf("\nKolichestvo elementov v stroke="); scanf("%d",&COLUMS);} while (COLUMS<0); for(i=0,cout=0;i!=len;i++,cout++) { if (cout==COLUMS) {cout=0; printf("\n");} printf("arr[%d]=%d\t",i,*(a+i)); } printf("\n\n"); printf("sizeof(a)=%d",sizeof(a)/sizeof(int)); return; } void get_arr(int *arr,int len) { int i; printf("Vvedite znacheniya elementov:\n"); for(i=0;i<=len;i++) { printf("arr[%d]=\t",i);scanf("%d",&arr[i]); } return; }
Пример 64. Двумерные массивы, как аргументы функций. Передача двумерного массива в функцию. адресная арифметика, n - количество элементов, выводимых в строке таблицы (размерность задаётся по N2)) */ #include <stdio.h> #define N1 3 #define N2 3 //void get_arr(int (*ptr)[3], int); //тоже правильный вариант void get_arr(int arr[][3], int); void print_arr(int arr[][3], int); void print_arr_second(int*, int, int, int); int main(){ int a[N1][N2],r; get_arr(&a[0],N2); print_arr(&a[0],N2); printf("\nВведите количество элементов, выводимых в строке n = "); scanf("%d",&r); print_arr_second(&a[0][0],N1,N2,r); printf("\n"); return 0; } //void get_arr(int (*ptr)[3], int len) void get_arr(int arr[][3], int len){ printf("Введите значения элементов массива:\n"); for(int i=0;i<len;i++) for(int j=0;j<len;j++){ printf("arr[%d][%d] = ",i,j); scanf("%d",&arr[i][j]); } } void print_arr(int arr[][3], int len) { for(int i=0;i<len;i++) { for(int j=0;j<len;j++) printf("%d ",arr[i][j]); printf("\n"); } } void print_arr_second(int* arr, int len1, int len2, int n){ int k=1; for(int i=0;i<len1;i++) for(int j=0;j<len2;j++,k++){ printf("%d ",*(arr+i*len2+j)); if(!(k%n)) printf("\n"); } } Пример 65. Написать три функции, которые получают строку, подсчитывают и возвращают ее длину, но для работы со строкой используют разные циклы: while, for, do...while. #include <stdio.h> #include <stdlib.h> //#include <conio.h> const int M=50; int count_wh(char*); int count_for(char*); int count_dwh(char*); int main(){ char str[M]; printf("Введите строку:\n"); gets(str); printf("%s - %d знаков.\n",str,count_wh(str)); printf("%s - %d знаков.\n",str,count_for(str)); printf("%s - %d знаков.\n",str,count_dwh(str)); str[0]=getch; return 0; } int count_wh(char* s){ //на русском одна буква считается как две int i=0; while(s[i]!='\0') i++; return i; } int count_for(char* s){ int i; for(i=0;s[i]!='\0';i++){} return i; } int count_dwh(char* s){ int i=-1; do i++; while(s[i]!='\0'); if(i==-1) i=0; return i; } Пример 66. Написать три функции, которые получают строку и копируют ее в другую строку, используя разные циклы: while, for, do...while. #include <stdio.h> #include <stdlib.h> #include <conio.h> const int M=50; void copy_wh(char*, char*); void copy_for(char*, char*); void copy_dwh(char*, char*); int main(){ char str[M],str1[M]; printf("Введите строку:\n"); gets(str); copy_wh(str,str1); printf("%s\n%s\n",str,str1); copy_for(str,str1); printf("\n%s\n%s\n",str,str1); copy_dwh(str,str1); printf("\n%s\n%s\n",str,str1); str[0]=getch; return 0; } void copy_wh(char* s, char* s1){ int i=0; while(s[i]!='\0'){ s1[i]=s[i]; i++; } s1[i]='\0'; } void copy_for(char* s, char* s1){ int i; for(i=0;s[i]!='\0';i++) s1[i]=s[i]; s[i+1]='\0'; } void copy_dwh(char* s, char* s1){ int i=0; do{ s1[i]=s[i]; i++; } while(s[i]!=0); s[i]='\0'; }
Пример 67. Написать программу, в которой ввести строку, состоящую из латинских букв и цифр; подсчитать количество букв и цифр, входящих в эту строку, напечатать текст "В строке... букв и... цифр". Проверять, является ли символ буквой или цифрой, по коду символа #include <stdio.h> #include <stdlib.h> #include <conio.h> const int M=50; int main(){ char str[M]; int i=0,b=0,c=0; printf("Введите строку:\n"); gets(str); while(str[i]!='\0'){ if(str[i]>=48&&str[i]<=57) c++; else if((str[i]>=65&&str[i]<=90)||(str[i]>=97&&str[i]<=122)) b++; i++; } printf("В строке %d букв и %d цифр.\n",b,c); str[0]=getch; return 0; } Пример 68. Написать программу, в которой ввести строку, состоящую из латинских букв и цифр;разбить исходную строку на две. Создать новую строку. #include <stdio.h> #include <stdlib.h> //#include <conio.h> const int M=50; int main(){ char str[M],str1[M],str2[M]; int i=0,k=0,l=0; printf("Введите строку:\n"); gets(str); while(str[i]!='\0'){ if(str[i]>=48&&str[i]<=57){ str1[k]=str[i]; k++; } else if((str[i]>=65&&str[i]<=90)||(str[i]>=97&&str[i]<=122)){ str2[l]=str[i]; l++; } i++; } str1[k]='\0'; str2[l]='\0'; for(i=0;i<=k;i++) str[i]=str1[i]; for(i=0;i<=l;i++) str[i+k]=str2[i]; str[k+l]='\0'; printf("%s\n%s\n%s\n",str1,str2,str); str[0]=getch; return 0; }
Пример 69. Написать программу, в которой 1. Ввести две символьных строки и распечатать в виде "Первая строка:..." и "Вторая строка:...". 2. Проверить, сколько первых символов в строках совпадают. #include <stdio.h> #include <stdlib.h> //#include <conio.h> const int M=50; int main(){ char str1[M],str2[M],str[M*2],str3[M*2]; int i=0,k=0,l=0; bool flag1=true,flag2=true; printf("Введите строку 1:\n"); gets(str1); printf("Введите строку 2:\n"); gets(str2); system("clear"); //заменить на clrscr и раскоментить <stdio.h> while((str1[i]!='\0'||str2[i]!='\0')&&str1[i]==str2[i]) i++; printf("Совпало символов: %d\n",i); for(int j=i;(j<M)&&(flag1||flag2);j++){ if(str1[j]!='\0'&&flag1) k++; else flag1=false; if(str2[j]!='\0'&&flag2) l++; else flag2=false; } printf("В первой и второй строке осталось %d и %d символов соответственно.\n",k,l); for(int j=0;j<k;j++) str[j]=str1[j+i]; for(int j=k;j<(k+l);j++) str[j]=str2[j-k+i]; str[k+l]='\0'; printf("%s\n",str); int r=0,j=0; for(int f=0;f<(i+i+k+l);f++){ if(str1[j]!='\0'){ str3[r]=str1[j]; r++; } if(str2[j]!='\0'){ str3[r]=str2[j]; r++; } j++; } str3[r-2]='\0'; printf("%s\n",str3); str[0]=getch; return 0; } Пример 70. Ввести cтроку, содержащую десятичное число с дробной частью. Подсчитать и вывести число цифр в целой части числа в виде " Целая часть числа... содержит... цифр".
|
||||
|
Последнее изменение этой страницы: 2021-08-16; просмотров: 320; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.119 (0.006 с.) |