当前位置:   article > 正文

头歌C语言指针综合实训(公共C实验五)_头歌网络教学答案(用指针实现数组元素逆置)

头歌网络教学答案(用指针实现数组元素逆置)

第1关 通过指针变量间接访问变量 

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int x,y;
  5. int *p; //定义指针变量p
  6. p=&x; //使指针变量p指向一个变量x
  7. /***** 请在以下填写通过p输入输出x值代码 *****/
  8. /********** Begin **********/
  9. scanf("%d",p);
  10. printf("%d\n",*p);
  11. /********** End **********/
  12. p=&y; //使指针变量p指向另一个变量y
  13. /***** 请在以下填写通过p输入输出y值代码 *****/
  14. /********** Begin **********/
  15. scanf("%d",p);
  16. printf("%d",*p);
  17. /********** End **********/
  18. return 0;
  19. }

第2关 交换两个指针变量的值

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a=100,b=200;
  5. int *p1, *p2, *p;
  6. p1=&a;
  7. p2=&b;
  8. scanf("%d%d",p1,p2);
  9. /***** 交换p1、p2的值 *****/
  10. /********** Begin **********/
  11. p=p1;p1=p2;p2=p;
  12. /********** End **********/
  13. printf("%d %d\n",*p1,*p2);
  14. return 0;
  15. }

第3关 利用指针方法求数组的最大值和最小值

  1. #include<stdio.h>
  2. #define M 3
  3. main()
  4. {
  5. int a[M],i;
  6. int *max,*min;
  7. for(i=0 ;i<M; i++)
  8. {
  9. scanf("%d",&a[i]);
  10. }
  11. /***** 将指针变量max,min初始化 *****/
  12. /********** Begin **********/
  13. max=&a[0],min=&a[0];
  14. /********** End **********/
  15. /***** 将每个数组元素依次与max,min指向的数组元素比较,使max,min分别指向的最大、最小的数组元素 *****/
  16. /********** Begin **********/
  17. for(i=0;i<M;i++)
  18. {
  19. if(a[i]>*max)
  20. max=&a[i];
  21. else if(a[i]<*min)
  22. min=&a[i];
  23. }
  24. /********** End **********/
  25. /***** 通过指针变量max,min输出最大值和最小值 *****/
  26. /********** Begin **********/
  27. printf("min=%d\nmax=%d",*min,*max);
  28. /********** End **********/
  29. return 0;
  30. }

第4关 通过指针变量存取一维数组元素 

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a[10],*p;
  5. /*****输入10个整数存入数组a *****/
  6. for( p=a;p<a+10;p++ ) // p指向a[0]
  7. {
  8. scanf("%d",p);
  9. }
  10. /*****输出数组a 的所有数组元素的值*****/
  11. /********** Begin *********/
  12. for(p=a;p<a+10;p++)
  13. {
  14. printf("%d ",*p);
  15. }
  16. /********** End **********/
  17. printf("\n");
  18. return 0;
  19. }

第5关 用指针实现数组元素逆置  

  1. #include <stdio.h>
  2. #define N 10
  3. int main()
  4. {
  5. /********** Begin **********/
  6. int a[N],*i,*j,t,*p=a,k;
  7. for(;p<a+N;p++)
  8. {
  9. scanf("%d",p);
  10. }
  11. for(i=&a[0],j=&a[N-1];i<j;i++,j--)
  12. {t=*i;*i=*j;*j=t;}
  13. for(p=a;p<a+N;p++)
  14. {
  15. printf("%d ",*p);
  16. }
  17. /********** End **********/
  18. return 0;
  19. }

 第6关 不同数据类型所占内存的字节数

  1. #include <stdio.h>
  2. int main ()
  3. {
  4. char a2, b2[5],c2[10],d2[3][4],e2[2][5];
  5. double a3, b3[5],c3[10],d3[3][4],e3[2][5];
  6. float a4, b4[5],c4[10],d4[3][4],e4[2][5];
  7. /*****输出a2,b2, b2[0],c2,d2,d2[0], d2[0][0],e2,e2[0],e2[0][0]所占内存的字节数*****/
  8. /********** Begin *********/
  9. printf("a2 = %d\n",sizeof(a2) );
  10. printf("b2 = %d\n",sizeof(b2) );
  11. printf("b2[0] = %d\n",sizeof(b2[0]));
  12. printf("c2 = %d\n",sizeof(c2));
  13. printf("d2 = %d\n",sizeof(d2));
  14. printf("d2[0] = %d\n",sizeof(d2[0]));
  15. printf("d2[0][0] = %d\n",sizeof(d2[0][0]));
  16. printf("e2 = %d\n",sizeof(e2));
  17. printf("e2[0] = %d\n",sizeof(e2[0]));
  18. printf("e2[0][0] = %d\n",sizeof(e2[0][0]));
  19. /********** End **********/
  20. /*****输出a3,b3, b3[0],c3,d3,d3[0],d3[0][0],e3,e3[0],e3[0][0]所占内存的字节数*****/
  21. /********** Begin *********/
  22. printf("a3 = %d\n",sizeof(a3));
  23. printf("b3 = %d\n",sizeof(b3));
  24. printf("b3[0] = %d\n",sizeof(b3[0]));
  25. printf("c3 = %d\n",sizeof(c3));
  26. printf("d3 = %d\n",sizeof(d3));
  27. printf("d3[0] = %d\n",sizeof(d3[0]));
  28. printf("d3[0][0] = %d\n",sizeof(d3[0][0]));
  29. printf("e3 = %d\n",sizeof(e3));
  30. printf("e3[0] = %d\n",sizeof(e3[0]));
  31. printf("e3[0][0] = %d\n",sizeof(e3[0][0]));
  32. /********** End **********/
  33. /*****输出a4,b4, b4[0],c4,d4,d4[0], d4[0][0],e4,e4[0],e4[0][0]所占内存的字节数*****/
  34. /********** Begin *********/
  35. printf("a4 = %d\n",sizeof(a4));
  36. printf("b4 = %d\n",sizeof(b4));
  37. printf("b4[0] = %d\n",sizeof(b4[0]));
  38. printf("c4 = %d\n",sizeof(c4));
  39. printf("d4 = %d\n",sizeof(d4));
  40. printf("d4[0] = %d\n",sizeof(d4[0]));
  41. printf("d4[0][0] = %d\n",sizeof(d4[0][0]));
  42. printf("e4 = %d\n",sizeof(e4));
  43. printf("e4[0] = %d\n",sizeof(e4[0]));
  44. printf("e4[0][0] = %d\n",sizeof(e4[0][0]));
  45. /********** End **********/
  46. return 0;
  47. }

 第7关 用指向数组的指针遍历二维数组

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a[3][4],i,j;
  5. int(*p)[4]; //定义p为指针,指向一个长度为4的整型数组
  6. p = a;
  7. /********** Begin *********/
  8. for(i=0;i<3;i++)
  9. {
  10. for(j=0;j<4;j++)
  11. {
  12. scanf("%d",(*(a+i)+j));
  13. }
  14. }
  15. for(i=0;i<3;i++)
  16. {
  17. for(j=0;j<4;j++)
  18. {
  19. printf("%d ",a[i][j]);
  20. }printf("\n");
  21. }
  22. /********** End **********/
  23. return 0;
  24. }

 第8关 计算不同类型的指针变量所占内存的字节数

  1. #include <stdio.h>
  2. int main ()
  3. {
  4. char * a2,**b2,*c2[4], (*d2)[5];
  5. double * a3,**b3,*c3[4], (*d3)[5];
  6. float * a4,**b4,*c4[4], (*d4)[5];
  7. /*****输出a2,b2,c2,d2所占内存的字节数*****/
  8. /********** Begin *********/
  9. printf("a2 = %d \n",sizeof(a2));
  10. printf("b2 = %d \n",sizeof(b2));
  11. printf("c2 = %d \n",sizeof(c2));
  12. printf("d2= %d \n",sizeof(d2));
  13. /********** End **********/
  14. /*****输出a3,b3,c3,d3所占内存的字节数*****/
  15. /********** Begin *********/
  16. printf("a3 = %d \n",sizeof(a3));
  17. printf("b3 = %d \n",sizeof(b3));
  18. printf("c3 = %d \n",sizeof(c3));
  19. printf("d3 = %d \n",sizeof(d3));
  20. /********** End **********/
  21. /*****输出a4,b4,c4,d4所占内存的字节数*****/
  22. /********** Begin *********/
  23. printf("a4 = %d \n",sizeof(a4));
  24. printf("b4 = %d \n",sizeof(b4));
  25. printf("c4 = %d \n",sizeof(c4));
  26. printf("d4 = %d \n",sizeof(d4));
  27. /********** End **********/
  28. return 0;
  29. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/622543
推荐阅读
相关标签
  

闽ICP备14008679号