当前位置: 代码迷 >> 综合 >> C 语言编程练习,实践,解决方案:指针
  详细解决方案

C 语言编程练习,实践,解决方案:指针

热度:70   发布时间:2024-01-19 16:52:23.0

C Programming Exercises, Practice, Solution : Pointer

1.在C中编写一个程序以显示指针的基本声明。
期待输出:

z sotres the address of m  = 0x7ffe97a39854*z stores the value of m = 10&m is the address of m = 0x7ffe97a39854&n stores the address of n = 0x7ffe97a39858&o  stores the address of o = 0x7ffe97a3985c&z stores the address of z = 0x7ffe97a39860                                                                 

解决:


  1. #include <stdio.h>  
  2. void main(void)  
  3. {  
  4. int m=10,n,o;  
  5. int *z=&m ;  
  6.   
  7.     printf("\n\n Pointer : Show the basic declaration of pointer :\n");  
  8.     printf("-------------------------------------------------------\n");   
  9.     printf(" Here is m=10, n and o are two integer variable and *z is an integer");   
  10.     printf("\n\n z stores the address of m  = %p\n",  z); // z is a pointer so %p would print the address  
  11.     printf("\n *z stores the value of m = %i\n",   *z);   
  12.     printf("\n &m is the address of m = %p\n",   &m); // &m gives the address of the integer variable m   
  13.                              // so %p is the specifier for that address  
  14.     printf("\n &n stores the address of n = %p\n",   &n);  
  15.     printf("\n &o  stores the address of o = %p\n",   &o);  
  16.     printf("\n &z stores the address of z = %p\n\n", &z); // &z gives the address, where the pointer z is   
  17.                              // stored -> still an address -> %p is the right  
  18.                              // specifier          
  19. }  

2.在C中编写一个程序,演示如何处理程序中的指针。

期待输出:

Address of m : 0x7ffcc3ad291cValue of m : 29                                                                                              Now ab is assigned with the address of m.                                                                    Address of pointer ab : 0x7ffcc3ad291c                                                                       Content of pointer ab : 29                                                                                   The value of m assigned to 34 now.                                                                           Address of pointer ab : 0x7ffcc3ad291c                                                                       Content of pointer ab : 34                                                                                   The pointer variable ab is assigned with the value 7 now.                                                    Address of m : 0x7ffcc3ad291c                                                                                Value of m : 7 

C Code:


  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.    int* ab;  
  5.    int m;  
  6.    m=29;  
  7.     printf("\n\n Pointer : How to  handle the pointers in the program :\n");   
  8.     printf("------------------------------------------------------------\n");  
  9.     printf(" Here in the declaration ab = int pointer, int m= 29\n\n");  
  10.       
  11.    printf(" Address of m : %p\n",&m);  
  12.    printf(" Value of m : %d\n\n",m);  
  13.    ab=&m;  
  14.    printf(" Now ab is assigned with the address of m.\n");  
  15.    printf(" Address of pointer ab : %p\n",ab);  
  16.    printf(" Content of pointer ab : %d\n\n",*ab);  
  17.    m=34;  
  18.    printf(" The value of m assigned to 34 now.\n");  
  19.    printf(" Address of pointer ab : %p\n",ab);  
  20.    printf(" Content of pointer ab : %d\n\n",*ab);  
  21.    *ab=7;  
  22.    printf(" The pointer variable ab is assigned the value 7 now.\n");  
  23.    printf(" Address of m : %p\n",&m);//as ab contain the address of m  
  24.                                      //so *ab changed the value of m and now m become 7  
  25.    printf(" Value of m : %d\n\n",m);  
  26.    return 0;  
  27. }  

3.在C中编写程序以演示使用&(地址of)和*(地址处的值)运算符。

期待输出:

Using & operator :                                                                                           
-----------------------                                                                                       address of m = 0x7ffea3610bb8                                                                                address of fx = 0x7ffea3610bbc                                                                               address of cht = 0x7ffea3610bb7                                                                              Using & and * operator :                                                                                     
-----------------------------                                                                                 value at address of m = 300                                                                                  value at address of fx = 300.600006                                                                          value at address of cht = z                                                                                  Using only pointer variable :                                                                                
----------------------------------                                                                            address of m = 0x7ffea3610bb8                                                                                address of fx = 0x7ffea3610bbc                                                                               address of cht = 0x7ffea3610bb7                                                                              Using only pointer operator :                                                                                
----------------------------------                                                                            value at address of m = 300                                                                                  value at address of fx= 300.600006                                                                           value at address of cht= z 

C Code:


  1. #include <stdio.h>  
  2. void main()  
  3. {  
  4.   int m=300;  
  5.   float fx = 300.60;  
  6.   char cht = 'z';  
  7.     
  8.    printf("\n\n Pointer : Demonstrate the use of & and * operator :\n");   
  9.    printf("--------------------------------------------------------\n");  
  10.   
  11.    
  12.   int *pt1;  
  13.   float *pt2;  
  14.   char *pt3;  
  15.   pt1= &m;  
  16.   pt2=&fx;  
  17.   pt3=&cht;  
  18.   printf ( " m = %d\n",m);  
  19.   printf ( " fx = %f\n",fx);  
  20.   printf ( " cht = %c\n",cht);  
  21.   printf("\n Using & operator :\n");   
  22.   printf("-----------------------\n");    
  23.   printf ( " address of m = %p\n",&m);  
  24.   printf ( " address of fx = %p\n",&fx);  
  25.   printf ( " address of cht = %p\n",&cht);  
  26.   printf("\n Using & and * operator :\n");   
  27.   printf("-----------------------------\n");   
  28.   printf ( " value at address of m = %d\n",*(&m));  
  29.   printf ( " value at address of fx = %f\n",*(&fx));  
  30.   printf ( " value at address of cht = %c\n",*(&cht));  
  31.   printf("\n Using only pointer variable :\n");   
  32.   printf("----------------------------------\n");   
  33.   printf ( " address of m = %p\n",pt1);  
  34.   printf ( " address of fx = %p\n",pt2);  
  35.   printf ( " address of cht = %p\n",pt3);  
  36.   printf("\n Using only pointer operator :\n");   
  37.   printf("----------------------------------\n");   
  38.   printf ( " value at address of m = %d\n",*pt1);  
  39.   printf ( " value at address of fx= %f\n",*pt2);  
  40.   printf ( " value at address of cht= %c\n\n",*pt3);  
  41. }  

4.在C中编写一个程序,使用指针添加两个数字。

测试数据:
输入第一个数字:5
输入第二个数字:6
期待输出:

The sum of the entered numbers is : 11 

C Code:


  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.    int fno, sno, *ptr, *qtr, sum;  
  5.      
  6.    printf("\n\n Pointer : Add two numbers :\n");   
  7.    printf("--------------------------------\n");     
  8.    
  9.    printf(" Input the first number : ");  
  10.    scanf("%d", &fno);  
  11.    printf(" Input the second  number : ");  
  12.    scanf("%d", &sno);     
  13.    
  14.    ptr = &fno;  
  15.    qtr = &sno;  
  16.    
  17.    sum = *ptr + *qtr;  
  18.    
  19.    printf(" The sum of the entered numbers is : %d\n\n",sum);  
  20.    
  21.    return 0;  
  22. }  

5.在C中编写程序,使用调用引用添加数字。

测试数据:
输入第一个数字:5
输入第二个数字:6
期待输出:

 The sum of 5 and 6  is 11 

C Code:


  1. #include <stdio.h>  
  2. long addTwoNumbers(long *, long *);  
  3.    
  4. int main()  
  5. {  
  6.    long fno, sno, *ptr, *qtr, sum;  
  7.      
  8.    printf("\n\n Pointer : Add two numbers using call by reference:\n");   
  9.    printf("-------------------------------------------------------\n");     
  10.    
  11.    printf(" Input the first number : ");  
  12.    scanf("%ld", &fno);  
  13.    printf(" Input the second  number : ");  
  14.    scanf("%ld", &sno);     
  15.    sum = addTwoNumbers(&fno, &sno);  
  16.    printf(" The sum of %ld and %ld  is %ld\n\n", fno, sno, sum);  
  17.    return 0;  
  18. }  
  19. long addTwoNumbers(long *n1, long *n2)   
  20. {  
  21.    long sum;  
  22.    sum = *n1 + *n2;  
  23.    return sum;  
  24. }  

6.在C中编写一个程序,使用指针找到两个数字之间的最大数目。 转到编辑器

测试数据:
输入第一个数字:5
输入第二个数字:6
期待输出:

6 is the maximum number.  

C Code:

#include <stdio.h>
#include <stdlib.h>
void main()
{int fno,sno,*ptr1=&fno,*ptr2=&sno;printf("\n\n Pointer : Find the maximum number between two numbers :\n"); printf("------------------------------------------------------------\n");   printf(" Input the first number : ");scanf("%d", ptr1);printf(" Input the second  number : ");scanf("%d", ptr2); if(*ptr1>*ptr2){printf("\n\n %d is the maximum number.\n\n",*ptr1);}else{printf("\n\n %d is the maximum number.\n\n",*ptr2);}}

7.在C中编写一个程序,将n个元素存储在数组中,并使用指针打印元素。 
测试数据:
输入要存储在数组中的元素数量:5
输入5数组中的元素数量:
元素 - 0:5
元素-1:7
元素-2:2
元素-3:9
元素-4:8
期待输出:

 The elements you entered are :                                                                               element - 0 : 5                                                                                              element - 1 : 7                                                                                              element - 2 : 2                                                                                              element - 3 : 9                                                                                              element - 4 : 8   

C Code:


  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.    int arr1[25], i,n;  
  5.    printf("\n\n Pointer : Store and retrieve elements from an array :\n");   
  6.    printf("------------------------------------------------------------\n");      
  7.    printf(" Input the number of elements to store in the array :");  
  8.    scanf("%d",&n);  
  9.      
  10.    printf(" Input %d number of elements in the array :\n",n);  
  11.    for(i=0;i<n;i++)  
  12.       {  
  13.       printf(" element - %d : ",i);  
  14.       scanf("%d",arr1+i);  
  15.       }  
  16.    printf(" The elements you entered are : \n");  
  17.    for(i=0;i<n;i++)  
  18.       {  
  19.       printf(" element - %d : %d \n",i,*(arr1+i));  
  20.       }  
  21.        return 0;  
  22. } 


8.在C中编写一个程序,使用指针打印给定字符串的所有排列。
期待输出:

The permutations of the string are :                                                                         
abcd  abdc  acbd  acdb  adcb  adbc  bacd  badc  bcad  bcda  bdca  bdac  cbad  cbda  cabd  cadb  cdab  cdba  db
ca  dbac  dcba  dcab  dacb  dabc

C Code:

#include <stdio.h>
#include <string.h>void changePosition(char *ch1, char *ch2)
{char tmp;tmp = *ch1;*ch1 = *ch2;*ch2 = tmp;
}
void charPermu(char *cht, int stno, int endno)
{int i;if (stno == endno)printf("%s  ", cht);else{for (i = stno; i <= endno; i++){changePosition((cht+stno), (cht+i));charPermu(cht, stno+1, endno);changePosition((cht+stno), (cht+i)); }}
}int main()
{char str[] = "abcd";printf("\n\n Pointer : Generate permutations of a given string :\n"); printf("--------------------------------------------------------\n"); int n = strlen(str);printf(" The permutations of the string are : \n");charPermu(str, 0, n-1);printf("\n\n");return 0;
}

9.在C中编写一个程序,使用动态内存分配找到最大的元素。
测试数据:
Input total number of elements(1 to 100): 5 

Number 1: 5 
Number 2: 7 
Number 3: 2 
Number 4: 9 
Number 5: 8
期待输出:

The Largest element is :  9.00 

C Code:


  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. int main()  
  4. {  
  5.     int i,n;  
  6.     float *element;  
  7.     printf("\n\n Pointer : Find the largest element using Dynamic Memory Allocation :\n");   
  8.     printf("-------------------------------------------------------------------------\n");    
  9.     printf(" Input total number of elements(1 to 100): ");  
  10.     scanf("%d",&n);  
  11.     element=(float*)calloc(n,sizeof(float));  // Memory is allocated for 'n' elements   
  12.     if(element==NULL)  
  13.     {  
  14.         printf(" No memory is allocated.");  
  15.         exit(0);  
  16.     }  
  17.     printf("\n");  
  18.     for(i=0;i<n;++i)    
  19.     {  
  20.        printf(" Number %d: ",i+1);  
  21.        scanf("%f",element+i);  
  22.     }  
  23.     for(i=1;i<n;++i)    
  24.     {  
  25.        if(*element<*(element+i))   
  26.            *element=*(element+i);  
  27.     }  
  28.     printf(" The Largest element is :  %.2f \n\n",*element);  
  29.     return 0;  
  30. }  

10.在C中编写一个程序,使用指针计算字符串的长度。
测试数据:
输入字符串:w3resource
期待输出:

The length of the given string w3resource                                                                    
is : 10    

C Code:

#include <stdio.h>
int calculateLength(char*);void main() 
{char str1[25];int l;printf("\n\n Pointer : Calculate the length of the string :\n"); printf("---------------------------------------------------\n");printf(" Input a string : ");fgets(str1, sizeof str1, stdin);l = calculateLength(str1);printf(" The length of the given string %s is : %d ", str1, l-1);printf("\n\n");}int calculateLength(char* ch) // ch = base address of array str1 ( &str1[0]  )
{int ctr = 0;while (*ch != '\0') {ctr++;ch++;}return ctr;
}

11. Write a program in C to swap elements using call by reference. Go to the editor
Test Data : 
Input the value of 1st element : 5 
Input the value of 2nd element : 6 
Input the value of 3rd element : 7 
期待输出:

The value before swapping are :                                                                              
element 1 = 5                                                                                                
element 2 = 6                                                                                                
element 3 = 7                                                                                                The value after swapping are :                                                                               
element 1 = 7                                                                                                
element 2 = 5                                                                                                
element 3 = 6 

C Code:


  1. #include <stdio.h>  
  2. void swapNumbers(int *x,int *y,int *z);  
  3. int main()  
  4. {  
  5.     int e1,e2,e3;  
  6.     printf("\n\n Pointer : Swap elements using call by reference :\n");   
  7.     printf("------------------------------------------------------\n");   
  8.     printf(" Input the value of 1st element : ");  
  9.     scanf("%d",&e1);  
  10.     printf(" Input the value of 2nd element : ");  
  11.     scanf("%d",&e2);  
  12.     printf(" Input the value of 3rd element : ");  
  13.     scanf("%d",&e3);  
  14.       
  15.       
  16.     printf("\n The value before swapping are :\n");  
  17.     printf(" element 1 = %d\n element 2 = %d\n element 3 = %d\n",e1,e2,e3);  
  18.     swapNumbers(&e1,&e2,&e3);  
  19.     printf("\n The value after swapping are :\n");  
  20.     printf(" element 1 = %d\n element 2 = %d\n element 3 = %d\n\n",e1,e2,e3);  
  21.     return 0;  
  22. }  
  23. void swapNumbers(int *x,int *y,int *z)  
  24. {  
  25.     int tmp;  
  26.     tmp=*y;  
  27.     *y=*x;  
  28.     *x=*z;  
  29.     *z=tmp;  
  30. }  

12.在C中编写一个程序,使用指针查找给定数字的阶乘。 
测试数据:
输入数字:5
期待输出:

The Factorial of 5 is : 120 

C Code:


  1. #include <stdio.h>  
  2. void findFact(int,int*);  
  3. int main()  
  4. {  
  5.          int fact;  
  6.          int num1;  
  7.         printf("\n\n Pointer : Find the factorial of a given number :\n");   
  8.         printf("------------------------------------------------------\n");   
  9.         printf(" Input a number : ");  
  10.         scanf("%d",&num1);         
  11.   
  12.          findFact(num1,&fact);  
  13.          printf(" The Factorial of %d is : %d \n\n",num1,fact);  
  14.          return 0;  
  15.         }  
  16.   
  17. void findFact(int n,int *f)  
  18.         {  
  19.         int i;  
  20.   
  21.        *f =1;  
  22.        for(i=1;i<=n;i++)  
  23.        *f=*f*i;  
  24.        }  

13.在C中编写一个程序,使用指针来计算字符串中元音和辅音的数量。 
测试数据:
输入字符串:string
期待输出:

Number of vowels : 1                                                                                         
Number of constant : 5

C Code:


  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.     char str1[50];  
  5.     char *pt;  
  6.     int  ctrV,ctrC;  
  7.     printf("\n\n Pointer : Count the number of vowels and consonants :\n");   
  8.     printf("----------------------------------------------------------\n");       
  9.     printf(" Input a string: ");  
  10.     fgets(str1, sizeof str1, stdin);  
  11.        
  12.     //assign address of str1 to pt  
  13.     pt=str1;  
  14.        
  15.     ctrV=ctrC=0;  
  16.     while(*pt!='\0')  
  17.     {  
  18.         if(*pt=='A' ||*pt=='E' ||*pt=='I' ||*pt=='O' ||*pt=='U' ||*pt=='a' ||*pt=='e' ||*pt=='i' ||*pt=='o' ||*pt=='u')  
  19.             ctrV++;  
  20.         else  
  21.             ctrC++;  
  22.         pt++; //pointer is increasing for searching the next character  
  23.     }  
  24.        
  25.     printf(" Number of vowels : %d\n Number of constant : %d\n",ctrV,ctrC);          
  26.     return 0;  
  27. }  

14.在C中编写一个程序,使用指针对数组进行排序。
测试数据:
testdata 
期待输出:

Test Data : 
Input the number of elements to store in the array : 5 
Input 5 number of elements in the array : 
element - 1 : 25 
element - 2 : 45 
element - 3 : 89 
element - 4 : 15 
element - 5 : 82 
期待输出:

                                                                                           The elements in the array after sorting :                                                                    element - 1 : 15                                                                                             element - 2 : 25                                                                                             element - 3 : 45                                                                                             element - 4 : 82                                                                                             element - 5 : 89  

C Code:


  1. #include <stdio.h>  
  2. void main()  
  3. {  
  4.    int *a,i,j,tmp,n;  
  5.     printf("\n\n Pointer : Sort an array using pointer :\n");   
  6.     printf("--------------------------------------------\n");        
  7.      
  8.    printf(" Input the number of elements to store in the array : ");  
  9.    scanf("%d",&n);  
  10.      
  11.    printf(" Input %d number of elements in the array : \n",n);  
  12.    for(i=0;i<n;i++)  
  13.       {  
  14.       printf(" element - %d : ",i+1);  
  15.       scanf("%d",a+i);  
  16.       }     
  17.    for(i=0;i<n;i++)  
  18.    {  
  19.     for(j=i+1;j<n;j++)  
  20.     {  
  21.        if( *(a+i) > *(a+j))  
  22.        {  
  23.       tmp = *(a+i);  
  24.       *(a+i) = *(a+j);  
  25.       *(a+j) = tmp;  
  26.        }  
  27.     }  
  28.    }  
  29.    printf("\n The elements in the array after sorting : \n");  
  30.    for(i=0;i<n;i++)  
  31.       {  
  32.       printf(" element - %d : %d \n",i+1,*(a+i));  
  33.       }           
  34. printf("\n");  
  35. }  

15.在C中编写一个程序,显示一个函数返回指针。
测试数据:
Input the first number : 5 
Input the second number : 6 
期待输出:

 The number 6 is larger.       

C Code:


  1. #include <stdio.h>  
  2. int* findLarger(int*, int*);  
  3. void main()  
  4. {  
  5.  int numa=0;  
  6.  int numb=0;  
  7.  int *result;  
  8.     printf("\n\n Pointer : Show a function returning pointer :\n");   
  9.     printf("--------------------------------------------------\n");  
  10.    printf(" Input the first number : ");  
  11.    scanf("%d", &numa);  
  12.    printf(" Input the second  number : ");  
  13.    scanf("%d", &numb);    
  14.   
  15.  result=findLarger(&numa, &numb);  
  16.  printf(" The number %d is larger.  \n\n",*result);  
  17. }  
  18.   
  19. int* findLarger(int *n1, int *n2)  
  20. {  
  21.  if(*n1 > *n2)  
  22.   return n1;  
  23.  else  
  24.   return n2;  
  25. }  

16.在C中编写一个程序,使用指针计算数组中所有元素的总和。
测试数据:
Input the number of elements to store in the array (max 10) : 5 
Input 5 number of elements in the array : 
element - 1 : 2 
element - 2 : 3 
element - 3 : 4 
element - 4 : 5 
element - 5 : 6
期待输出:

 The sum of array is : 20 

C Code:


  1. #include <stdio.h>  
  2. void main()   
  3. {  
  4.    int arr1[10];  
  5.    int i,n, sum = 0;  
  6.    int *pt;  
  7.      
  8.     printf("\n\n Pointer : Sum of all elements in an array :\n");   
  9.     printf("------------------------------------------------\n");   
  10.       
  11.    printf(" Input the number of elements to store in the array (max 10) : ");  
  12.    scanf("%d",&n);  
  13.      
  14.    printf(" Input %d number of elements in the array : \n",n);  
  15.    for(i=0;i<n;i++)  
  16.       {  
  17.       printf(" element - %d : ",i+1);  
  18.       scanf("%d",&arr1[i]);  
  19.       }       
  20.   
  21.    pt = arr1; // pt store the base address of array arr1  
  22.    
  23.    for (i = 0; i < n; i++) {  
  24.       sum = sum + *pt;  
  25.       pt++;  
  26.    }  
  27.    
  28.    printf(" The sum of array is : %d\n\n", sum);  
  29. }  

17.在C中编写一个程序,以相反的顺序打印数组的元素。
测试数据:
Input the number of elements to store in the array (max 15) : 5 
Input 5 number of elements in the array : 
element - 1 : 2 
element - 2 : 3 
element - 3 : 4 
element - 4 : 5 
element - 5 : 6 
期待输出:

 The elements of array in reverse order are :                                                                 element - 5 : 6                                                                                              element - 4 : 5                                                                                              element - 3 : 4                                                                                              element - 2 : 3                                                                                              element - 1 : 2        

C Code:


  1. #include <stdio.h>  
  2. void main()   
  3. {  
  4.    int n, i, arr1[15];  
  5.    int *pt;  
  6.     printf("\n\n Pointer : Print the elements of an array in reverse order :\n");   
  7.     printf("----------------------------------------------------------------\n");  
  8.       
  9.    printf(" Input the number of elements to store in the array (max 15) : ");  
  10.    scanf("%d",&n);  
  11.    pt = &arr1[0];  // pt stores the address of base array arr1   
  12.    printf(" Input %d number of elements in the array : \n",n);  
  13.    for(i=0;i<n;i++)  
  14.       {  
  15.       printf(" element - %d : ",i+1);  
  16.       scanf("%d",pt);//accept the address of the value  
  17.       pt++;  
  18.       }       
  19.       
  20.    pt = &arr1[n - 1];  
  21.   
  22.    printf("\n The elements of array in reverse order are :");  
  23.   
  24.    for (i = n; i > 0; i--)   
  25.    {  
  26.       printf("\n element - %d : %d  ", i, *pt);  
  27.       pt--;  
  28.    }  
  29. printf("\n\n");  
  30. }  

18.在C中编写一个程序以显示指针对结构的使用。
期待输出:

 John Alter from Court Street

C Code:


  1. #include <stdio.h>  
  2. struct EmpAddress  
  3. {  
  4. char *ename;  
  5. char stname[20];  
  6. int pincode;  
  7. }  
  8. employee={ "John Alter","Court Street \n",654134},*pt=&employee;  
  9.   
  10. int main()  
  11. {  
  12.     printf("\n\n Pointer : Show the usage of pointer to structure :\n");   
  13.     printf("--------------------------------------------------------\n");  
  14.     printf(" %s from %s \n\n",pt->ename,(*pt).stname);  
  15.     return 0;  
  16. }  

19.在C中编写一个程序以显示指向union的指针。
期待输出:

Jhon Mc Jhon Mc    

C Code:


  1. #include <stdio.h>  
  2. union empAdd  
  3. {  
  4. char *ename;  
  5. char stname[20];  
  6. int pincode;  
  7. };  
  8.   
  9. int main()  
  10. {  
  11.     printf("\n\n Pointer : Show a pointer to union :\n");   
  12.     printf("----------------------------------------\n");  
  13.     union empAdd employee,*pt;  
  14.     employee.ename="Jhon Mc\0Donald";//assign  the string up to null character i.e. '\0'  
  15.   
  16.     pt=&employee;  
  17.   
  18.     printf(" %s %s\n\n",pt->ename,(*pt).ename);  
  19.   
  20.     return 0;  
  21. }  

20.在C中编写一个程序,以显示一个指向数组的指针,内容是指向结构的指针。
期待输出:

 Exmployee Name : Alex                                                                                        Employee ID :  1002                                                                                          

C Code:


  1. #include <stdio.h>  
  2. struct employee  
  3. {  
  4. char *empname;  
  5. int empid;  
  6. };  
  7.   
  8. int main()  
  9. {  
  10.     printf("\n\n Pointer : Show a pointer to an array which contents are pointer to structure :\n");   
  11.     printf("-----------------------------------------------------------------------------------\n");  
  12.   
  13.     static struct employee emp1={ "Jhon",1001},emp2={ "Alex",1002},emp3={ "Taylor",1003};  
  14.     struct employee(*arr[])={&emp1,&emp2,&emp3};  
  15.     struct employee(*(*pt)[3])=&arr;  
  16.   
  17.     printf(" Exmployee Name : %s \n",(**(*pt+1)).empname);  
  18.     printf("---------------- Explanation --------------------\n");  
  19.     printf("(**(*pt+1)).empname\n");  
  20.     printf("= (**(*&arr+1)).empname   as pt=&arr\n");  
  21.     printf("= (**(arr+1)).empname     from rule *&pt = pt\n");  
  22.     printf("= (*arr[1]).empname       from rule *(pt+i) = pt[i]\n");  
  23.     printf("= (*&emp2).empname        as arr[1] = &emp2\n");  
  24.     printf("= e2.empname = Alex       from rule *&pt = pt\n\n");  
  25.     printf(" Employee ID :  %d\n",(*(*pt+1))->empid);      
  26.     printf("---------------- Explanation --------------------\n");  
  27.     printf("(*(*pt+1))-> empid\n");  
  28.     printf("= (**(*pt+1)).empid     from rule -> = (*).\n");  
  29.     printf("= emp2.empid = 1002\n");  
  30.     printf("\n\n");  
  31.     return 0;  
  32. }  

21.在C中编写一个程序,使用指针打印所有的字母表。
期待输出:

The Alphabets are :                                                                                         A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z 

C Code:


  1. #include <stdio.h>  
  2.   
  3. int main()  
  4. {  
  5.     char alph[27];  
  6.     int x;  
  7.     char *ptr;  
  8.     printf("\n\n Pointer : Print all the alphabets:\n");   
  9.     printf("----------------------------------------\n");  
  10.     ptr = alph;       
  11.   
  12.     for(x=0;x<26;x++)  
  13.     {  
  14.         *ptr=x+'A';  
  15.         ptr++;  
  16.     }  
  17.     ptr = alph;  
  18.   
  19. printf(" The Alphabets are : \n");  
  20.     for(x=0;x<26;x++)  
  21.     {  
  22.        printf(" %c ", *ptr);  
  23.         ptr++;  
  24.     }  
  25.     printf("\n\n");  
  26.     return(0);  
  27. }  

22.在C中编写一个程序,使用指针反向打印一个字符串。
测试数据:
Input a string : w3resource 
期待输出:

 Reverse of the string is : ecruoser3w   

C Code:


  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.     char str1[50];  
  5.     char revstr[50];  
  6.     char *stptr = str1;  
  7.     char *rvptr = revstr;  
  8.     int i=-1;  
  9.     printf("\n\n Pointer : Print a string in reverse order :\n");   
  10.     printf("------------------------------------------------\n");     
  11.     printf(" Input a string : ");  
  12.     scanf("%s",str1);  
  13.     while(*stptr)  
  14.     {  
  15.      stptr++;  
  16.      i++;  
  17.     }  
  18.     while(i>=0)  
  19.     {  
  20.      stptr--;  
  21.      *rvptr = *stptr;  
  22.      rvptr++;  
  23.      --i;  
  24.     }  
  25.     *rvptr='\0';  
  26.     printf(" Reverse of the string is : %s\n\n",revstr);  
  27.     return 0;  
  28. }  

  相关解决方案