C++程序设计实验1(附参考答案).doc
文本预览下载声明
实验1:指针的定义和运算,指向变量的指针
一、实验目的
(1)掌握指针的概念、如何定义指针以及如何初始化
(2)掌握指向简单变量的指针的使用
二、基础知识巩固
1、变量的指针,其含义是指该变量的_________.
a)值 b)地址 c)名 d)一个标志
2、已知 int *p,a;则语句 p=a;中的运算符‘’的含义是______。
A 逻辑与运算符 B 位与运算 C取指针内容目D 取变量地址
3、设指针p指向的整型变量值为28,则printf (“%d\n”,++*p)的输出是_____。
A 27 B 28 C 29 D 30
4、若已定义a为int型变量,则对指针p的说明和初始化正确的是____。
A int *p=a; B int p=a; C int *p=*a D int *p=a;
5、若有说明:int i,j=7,*p=i;,则与i=j;等价的语句是_____。
A.i=*p B *p=*j C i=j D i=**p;
6、设int *p,i;p=10; i=p; i=*p; =2*p+1;
以下程序的输出结果是#include stdio.h
void main()
{
int k=2,m=4,n=6;
int *pk=k,*pm=m,*p;
*(p=n)=*pk*(*pm);
printf(%d\n,n);
}
9、以下程序的输出结果是#include stdio.h
void main()
{
int *var,ab;
ab=100; var=ab; ab=*var+10;
printf(%d\n,*var);
}
10、阅读程序,写出运行结果
(1)、# include stdio.h
main()
{ int a,b;
a=5;b=10;
printf(before swap a=%d,b=%d\n,a,b);
swap(a,b);
printf(after swap a=%d,b=%d\n,a,b);
}
swap(int x,int y)
{ int temp;
temp=x;
x=y;
y=temp;
printf(in swap x=%d,y=%d\n,x,y);
}
运行结果:
?
(2)、# include stdio.h
main()
{ int a,b;
a=5;b=10;
printf(before swap a=%d,b=%d\n,a,b);
swap(a,b);
printf(after swap a=%d,b=%d\n,a,b);
}
swap(int *px,int *py)
{ int temp;
temp=*px;
*px=*py;
*py=temp;
printf(in swap x=%d,y=%d\n,*px,*py);
}
运行结果:
比较上面两个程序,试说明两者的区别?
以上习题是传值和传址的最好说明。程序1是传值,是一种单向传递,只能由实参传递给形参。而程序2是传址,是形参和实参共享内存,双向传递的。当在子函数里面形参的值发生改变的时候,形参也发生了改变。
二、填空题
1、若有定义 int? ch;
(1)使指针p可以指向变量ch的定义语句是 int *p=ch; 。
(2)使指针p可以指向变量ch的赋值语句是 *p=ch; 。
(3)通过指针p给变量ch读入整数的scanf函数调用语句是_scanf(%d,p)_____。
(4)通过指针p给变量ch赋数值4的语句是 *p=4 。
(5)通过指针p输出ch中整数的语句是 printf(%d,*p); 。
三、编程题
1、从键盘输入两个数,输出他们的和,采用指针访问变量。
#includestdio.h
#includestring.h
#includestdlib.h
int main()
{
int a,b,*pa=a,*pb=b;
printf(该程序是求和程序\
显示全部