C语言程设计实验与案例周信东主编实验八 指针
实验6 指针
学号:1700200224姓名:莫新锋实验日期:
一、实验目的和要求
(1)掌握指针的概念、指针变量定义和引用。
(2)掌握指针的运用方法。
(3)掌握数组的指针和指向数组的指针变量。
(4)掌握指针与函数的关系。
(5)能正确使用字符串的指针和指向字符串的指针变量。
(6)了解指向函数的指针。
(7)了解指向指针变量的指针的概念及其使用方法。
二、实验内容
完成实验指导书中的实验八“基础部分”和“增强部分”的题目。
实验九的内容由同学自行选作。
三、实验步骤及结果
【基础题】:Ex8-1请在下面分别插入改正错误后的源程序代码及运行成功时的画面源程序代码:
请在此粘贴修改后正确的程序代码。、
#include<stdio.h>
//#define N 12
void main()
{
int j, a[12],*p=a;
//p=&a[N];
for(j=1;j<=12;j++)
scanf("%d",p);
for(j=1;j<=12;j++)
{
printf("%d",p++);
if(j%4==0)
printf("\n");
}
C语言程设计实验与案例周信东主编实验八 指针
}
运行结果:
请在此粘贴本程序运行结果的截图
Ex8-2请在下面插入该程序的运行结果的画面:运行结果:
#include<stdio.h>
swap(int *pl,int *p2)
{
int p;
p=*pl;
*pl=*p2;
*p2=p;
}
void main()
{
int n1,n2,n3;
int *p1,*p2,*p3;
printf("Input n1,n2,n3: ");
C语言程设计实验与案例周信东主编实验八 指针
scanf("%d,%d,%d",&n1 ,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3;
if (n1>n2)
swap(p1,p2);
if (n1>n3)
swap(p1,p3);
if(n2>n3)
swap(p2,p3);
printf("The result is:%d %d %dn",n1,n2,n3);
}
请在此粘贴本程序运行结果的截图
试用解释本程序是如何通过指针参数p1、p2改变主函数main中的变量n1、n2、n3的值的?
请回答问题
将n1,n2,n3的地址分别给p1,p2,p3,通过对n1,n2,n3两两的比较,调用函数swap进行排序,进而得到新的地址排序后输出
【增强题】:Eh8-1请在下面分别完成本题的源程序代码及运行结果的画面:源程序代码:
请在此粘贴完成本题的程序源代码。
#include<stdio.h>
void main()
C语言程设计实验与案例周信东主编实验八 指针
{
void lookup(int *str,int n);
int str[10];
int i;
for (i=0;i<10;i++)
{
scanf("%d",&str[i]);
}
lookup(str,10);
}
void lookup(int *str,int n)
{
int *min,*p;
min=str;
for (p=str;p<(str+n);p++)
{
if (*min<*p)
{
min=p;
}
}
printf(",min=%d\n", *min);
}
运行结果截图:
请在此粘贴本程序运行成功时的截图
C语言程设计实验与案例周信东主编实验八 指针
Eh8-2请在下面分别完成本题的源程序代码及运行结果的画面:源程序代码:
请在此粘贴完成本题的程序源代码。
#include <stdio.h>
int change(char *s)
{
int n;
for(n=0;s[n]!='\0';n++);
return n;
}
int main()
{
char a[100];
gets(a);
printf("%d\n",change(a));
return 0;
}
C语言程设计实验与案例周信东主编实验八 指针
运行结果截图:
请在此粘贴本程序运行成功时的截图
、
四、选作实验题目完成情况
若你选作了课堂布置之外的题目,请按照上述格式依次编写你所作各题目的题号、源程序代码、运行结果截图及其结果情况分析。
五、实验总结
总结你在实验中易犯的错误及其解决方法,或总结本次实验中你学到的经验或技能等。注意,不要说空话。
在一定的程度上掌握了指针的概念、指针变量的定义和引用,但是指针的运用方法方面还是把握得不够到位,数组的指针和指向数组的指针变量找人两个还是不太搞得清楚,解决就只能是多做练习,巩固基础。