一、实验目的
(一)进一步理解指针的概念,掌握其在数组和字符串中的应用。
(二)学会使用函数的指针和指向函数的指针变量。
(三)了解指向指针的指针的概念及其使用方法。
二、预习要求
(一)字符、字符串和字符数组的关系与表示方法;
(二)函数指针;
三、实验内容
1、有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
1. #include "stdio.h" 2. void main() 3. { void copy(char c[],char d[]); 4. char a[30],b[30]="Fall in love with C program"; 5. copy(a,b); 6. printf("输出字符串为:%s",a); 7. } 8. void copy(char c[],char d[]) 9. { 10. int i,j; 11. for(i=0,j=18;*(d+j)!='\0';i++,j++) 12. { 13. *(c+i)=*(d+j); 14. *(c+i)!='\0'; 15. } 16. }
2、有一个班4个学生,5门课程。求(1)求每个学生的平均成绩;(2)找出5门成绩均在85分以上的学生。要求用函数实现。
1. #include "stdio.h" 2. void main() 3. { 4. int a[4][5]={{80,79,82,77,90},{77,86,75,92,80},{87,89,88,95,86},{79,81,93,78,83}}; 5. void aver(int a[4][5]); 6. void grand(int a[4][5]); 7. aver(a); 8. grand(a); 9. } 10. void aver(int a[4][5]) 11. { 12. int i,j,sum; 13. float ave; 14. for(i=0;i<4;i++) 15. { 16. sum=0; 17. for(j=0;j<5;j++) 18. sum=sum+a[i][j]; 19. ave=sum/5.0; 20. printf("每个学生的平均成绩分别为:%f\n",ave); 21. } 22. } 23. void grand(int a[4][5]) 24. { 25. int i,j,k; 26. for(i=0;i<4;i++) 27. { 28. k=0; 29. for(j=0;j<5;j++) 30. if(a[i][j]>85) 31. k=k+1; 32. if(k==5) 33. printf("符合条件学号为%d的学生:",i+1); 34. } 35. }
四、实验注意事项
(一)注意变量、变量的指针、变量的地址间的相互关系;
(二)注意传地址与传值的区别。
(三)注意数组的指针与数据元素值之间的关系。