Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 223; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.199.19 (0.101 с.) |