Добавить в программу указатель pArr на тип int. Присвоить указателю pArr адрес среднего элемента массива 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Добавить в программу указатель 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; просмотров: 220; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.81.198 (0.12 с.)