C++程序设计课件 设计制作:徐龙琴 1
1 若有以下说明和语句,且 0<i<10,则 是数组元素的错误引用。
int a[]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
a.*(a+i) b.a[p-a]
c.p+i d.*(&a[i])
2 下面程序的输出是:
#include <stdio.h>
void main( )
{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d",*(p+2)); }
a,3 b,4 c,1 d,2
一、选择题,
c
a
C++程序设计课件 设计制作:徐龙琴 2
3、若 0<i<10,则对数组元素地址的正确表示是:
int a[]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
a.&(a+1) b.a++
c.*p d.&p[i]
4、已知,int a,x=1;则下面正确的赋值语句是:
a,a=(a[1]+a[2])/2; b,a=(a[1]+a[2])/2;
c,a=x+2; d,a="good";
5、若,int a[]={1,2,3,4,5,6},*p=a;执行下面语句 p指向 5的是:
a.p+=3;*(p++); b.p+=5;*p++ ;
c.p+=4;*++p; d.p+=4;++*p;
d
c
a
C++程序设计课件 设计制作:徐龙琴 3
6、若 0<=k<6,则正确表示数组元素地址的语句是:
int x[]={1,9,10,7,32,4},*ptr=x,k=1;
a.x++ b.&ptr
c.&ptr[k] d.&(x+1)
7、若有说明,int i,j=7,*p;p=&i;则与 i=j等价的语句是
a.i=*p; b.*p=*&j;
c.i=&j d.i=**p;
8、设 p1和 p2是指向同一个 int型一维数组的指针变量,k为 int型变
量,则不能正确执行的语句是
a.k=*p1+*p2; b.p2=k;
c.p1=p2; d.k=*p1*(*p2);
C
B
B
C++程序设计课件 设计制作:徐龙琴 4
9、设有以下函数定义,则该函数返回的值是
int * fun(int a)
{int *t,n;
n=a;t=&n;
return t;}
a.一个不可用的存储单元地址值 b.一个可用的存储单元地址值
c.n中的值 d.形参 a中的值
10、下面函数的功能是:
int fun(char *x)
{char *y=x;
while(*y++){};
return y-x-1;}
a,求字符串的长度 b,求字符串存放位置
c,比较两个字符串的大小 d,将字符串 x连接到字符串 y后面
a
a
C++程序设计课件 设计制作:徐龙琴 5
11、用 new为 int数组分配 10个存储空间,下面哪个语句正确
A) int *p=new; B) int *p=new int[10];
C) int *p=new int[]; D) int *p=new int;
12,指向同一个数组的两个指针, 作 运算是没有意义的 。
A)相减 B)相加
C)比较 D)赋值
13,已知指针 p的指向下图所示, 则表达式 *--p的值是:
a[0]在低地址, a[1]在高地址
B
B
20
C++程序设计课件 设计制作:徐龙琴 6
二 下列程序有无错误:
1,#include <iostream.h>
int fun1(int);
int fun2(int);
void main()
{ int i=12;
int (*fp)();
fp = fun1;
cout<<"Fun1:"<<(*fp)(i)<<endl;
fp = fun2;
cout<<"Fun2:"<<(*fp)(i)<<endl;}
int fun1(int k)
{ k = k*2+1;
return k;}
int fun2(int m)
{ m = m/2+1;
return m;}
int ( )(int);
C++程序设计课件 设计制作:徐龙琴 7
2,#include <iostream.h>
void main()
{ int i,*p;
i = 10;
*p = i;
cout<<*p;
}
p = &i
C++程序设计课件 设计制作:徐龙琴 8
3、分别指出下面的 p各是什么。
int *p;
int *p[n];
int (*p)[n];
int *p( );
int (*p) ( );
int **p;
//p 为指针变量
//p 为指针数组
//p 为指向数组的指针变量
//p 为返回指针型的函数
//p 为函数指针
//p 为指向指针的指针变量
C++程序设计课件 设计制作:徐龙琴 9
4 指出下列程序的错误。
#include <iostream.h>
void exchange(int,int);
void main()
{cout<<"Input two data seprated by space:";
int a,b;
cin>>a>>b;
cout<<"Before Exchange:a="<<a
<<",b="<<b<<endl;
exchange(a,b);
cout<<"After Exchange:a= "<<a
<<",b="<<b<<endl;
}
void exchange(int x,int y)
{ int t;
t=x;x=y;y=t;
}
l i
void exchange(int*,int*);
void main()
{cout<<"Input two data seprated by space:";
int a,b,*p1=&a,*p2=&b;
in>>a>>b;
cout<<"Before Exchange:a="<<a<<",b="<<b<<endl;
exchange(p1,p2);
cout<<"After Exchange:a="<<a<<",b="<<b<<endl;
}
i *x,int *y)
{ int t;
t=*x;*x=*y;*y=t;
}
&,int&);
int a,b;
cin>>a>>b;
cout<<"Before Exchange:a="<<a<<",b="<<b<<endl;
exchange(a,b);
cout<<"After Exchange:a="<<a<<",b="<<b<<endl;
&x,int &y)
{int ;
t=x;x=y;y=t;
}
C++程序设计课件 设计制作:徐龙琴 10
三 读程题:
1,#include<stdio.h>
void main()
{ int *v,b;
v=&b; b=100; *v+=b;
printf("%d\n",b);
} 运行结果为:200
C++程序设计课件 设计制作:徐龙琴 11
⒉ #include <stdio.h>
void main( )
{ int a[ ]={1,2,3,4,5};
int x,y,*p;
p=&a[0];
x=*(p+2);
y=*(p+4);
printf("*p=%d,x=%d,y=%d\n",*p,x,y);
return;
}
运行结果为:
*p=1,x=3,y=5
C++程序设计课件 设计制作:徐龙琴 12
3 #include<iostream.h>
void callbyval(int a,int b,int c)
{a=3;b=2;c=1;}
void callbypointer(int* a,int* b,int* c)
{*a=3;*b=2;*c=1;}
void callbyreference(int& a,int& b,int& c)
{ a=1;b=2;c=3;}
void main()
{ int a=1,b=2,c=3;
int& a1=a;
int& b1=a;
int& c1=a;
callbyval(a,b,c);
cout<<a<<b<<c<<endl;
callbypointer(&a,&b,&c);
cout<<a<<b<<c<<endl;
callbyreference(a1,b1,c1);
cout<<a<<b<<c<<endl;}
运行结果为:
123
321
321
C++程序设计课件 设计制作:徐龙琴 13
4 #include<iostream.h>
void ast(int x,int y,int *cp,int *dp)
{
*cp=x*y;
*dp=x%y;
}
void main()
{
int a,b,c,d;
a=2; b=3;
ast(a,b,&c,&d);
cout<<c<<d<<endl;
}
运行结果为:
62
C++程序设计课件 设计制作:徐龙琴 14
5 #include <stdio.h>
void main( )
{ int a=10,b=0,*pa,*pb;
pa=&a; pb=&b;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
a=20; b=30;
*pa=a++; *pb=b++;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
(*pa)++;
(*pb)++;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb); }
运行结果为:
10,0
10,0
21,31
21,31
22,32
22,32
C++程序设计课件 设计制作:徐龙琴 15
6 #include <iostream.h>
void main()
{
int a[2][3]={1,2,3,4,5,6};
int i,j,(*p)[3];
p=a;
cout<<"input i,j:";
cin>>i>>j;
cout<<"a["<<i<<","<<j<<"]= "
<<*(*(p+i)+j)<<endl;
}
运行结果为:
1 2
6
C++程序设计课件 设计制作:徐龙琴 16
7 阅读程序,给出运行结果。
#include<iostream.h>
void main()
{ int i,a[10];
int *p1,*p2;
p1=a;
p2=p1+5;
for (i=0;i<=9;i++)
{a[i]=i*i;
cout<<"a["<<i<<"]="<<a[i]<<endl;}
cout<<"a="<<a<<endl;
cout<<"p1="<<p1<<",p2="<<p2<<endl;
cout<<"p2-p1="<<p2-p1<<endl;
cout<<"*p2-*p1="<<*p2-*p1<<endl;
}
1=&a[0];
cout <"*a="<<*a <<endl;
a[5] a[0] a[5]-a[0] <<endl;
运行结果为:
a[0]=0
a[1]=1
a[2]=4
a[3]=9
a[4]=16
a[5]=25
a[6]=36
a[7]=49
a[8]=64
a[9]=81
a=0x0065FDCC
p1= 0x0065FDCC,p2= 0x0065FDED
p2-p1=5
*p1-*p2=25
改后的运行结果为:
a[0]=0
a[1]=1
a[2]=4
a[3]=9
a[4]=16
a[5]=25
a[6]=36
a[7]=49
a[8]=64
a[9]=81
*a=0
p1= 0x0065FDCC,p2= 0x0065FDED
p2-p1=5
a[5]-a[0]= 25
C++程序设计课件 设计制作:徐龙琴 17
四 编程题:
1、写一个函数,求一个字符串的长度,在 main函数中输入字符
串,并输出其长度。
2、编程实现:从键盘输入一任意字符串,然后,输入所要查找
字符。存在则返回它第一次在字符串中出现的位置;否则,输
出“在字符串中查找不到!” 。并实现对同一字符串,能连续
输入所要查找的字符
3、编程实现:从字符串中删除子字符串。从键盘输入一字符串,
然后,输入要删除的子字符串。最后输出删除子串后的新字
符串。
4、用指针数组实现:输入月份的阿拉伯数字 1~ 12,输出对应
的月份英文名称。
5,.编程实现:输入 5个字符,从中找出最大的字符并输出。要
求用字符数组存放这 5个字符,用指针数组元素分别指向这 5
个字符,再用一个二级指针变量指向这个指针数组。
1 若有以下说明和语句,且 0<i<10,则 是数组元素的错误引用。
int a[]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
a.*(a+i) b.a[p-a]
c.p+i d.*(&a[i])
2 下面程序的输出是:
#include <stdio.h>
void main( )
{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d",*(p+2)); }
a,3 b,4 c,1 d,2
一、选择题,
c
a
C++程序设计课件 设计制作:徐龙琴 2
3、若 0<i<10,则对数组元素地址的正确表示是:
int a[]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
a.&(a+1) b.a++
c.*p d.&p[i]
4、已知,int a,x=1;则下面正确的赋值语句是:
a,a=(a[1]+a[2])/2; b,a=(a[1]+a[2])/2;
c,a=x+2; d,a="good";
5、若,int a[]={1,2,3,4,5,6},*p=a;执行下面语句 p指向 5的是:
a.p+=3;*(p++); b.p+=5;*p++ ;
c.p+=4;*++p; d.p+=4;++*p;
d
c
a
C++程序设计课件 设计制作:徐龙琴 3
6、若 0<=k<6,则正确表示数组元素地址的语句是:
int x[]={1,9,10,7,32,4},*ptr=x,k=1;
a.x++ b.&ptr
c.&ptr[k] d.&(x+1)
7、若有说明,int i,j=7,*p;p=&i;则与 i=j等价的语句是
a.i=*p; b.*p=*&j;
c.i=&j d.i=**p;
8、设 p1和 p2是指向同一个 int型一维数组的指针变量,k为 int型变
量,则不能正确执行的语句是
a.k=*p1+*p2; b.p2=k;
c.p1=p2; d.k=*p1*(*p2);
C
B
B
C++程序设计课件 设计制作:徐龙琴 4
9、设有以下函数定义,则该函数返回的值是
int * fun(int a)
{int *t,n;
n=a;t=&n;
return t;}
a.一个不可用的存储单元地址值 b.一个可用的存储单元地址值
c.n中的值 d.形参 a中的值
10、下面函数的功能是:
int fun(char *x)
{char *y=x;
while(*y++){};
return y-x-1;}
a,求字符串的长度 b,求字符串存放位置
c,比较两个字符串的大小 d,将字符串 x连接到字符串 y后面
a
a
C++程序设计课件 设计制作:徐龙琴 5
11、用 new为 int数组分配 10个存储空间,下面哪个语句正确
A) int *p=new; B) int *p=new int[10];
C) int *p=new int[]; D) int *p=new int;
12,指向同一个数组的两个指针, 作 运算是没有意义的 。
A)相减 B)相加
C)比较 D)赋值
13,已知指针 p的指向下图所示, 则表达式 *--p的值是:
a[0]在低地址, a[1]在高地址
B
B
20
C++程序设计课件 设计制作:徐龙琴 6
二 下列程序有无错误:
1,#include <iostream.h>
int fun1(int);
int fun2(int);
void main()
{ int i=12;
int (*fp)();
fp = fun1;
cout<<"Fun1:"<<(*fp)(i)<<endl;
fp = fun2;
cout<<"Fun2:"<<(*fp)(i)<<endl;}
int fun1(int k)
{ k = k*2+1;
return k;}
int fun2(int m)
{ m = m/2+1;
return m;}
int ( )(int);
C++程序设计课件 设计制作:徐龙琴 7
2,#include <iostream.h>
void main()
{ int i,*p;
i = 10;
*p = i;
cout<<*p;
}
p = &i
C++程序设计课件 设计制作:徐龙琴 8
3、分别指出下面的 p各是什么。
int *p;
int *p[n];
int (*p)[n];
int *p( );
int (*p) ( );
int **p;
//p 为指针变量
//p 为指针数组
//p 为指向数组的指针变量
//p 为返回指针型的函数
//p 为函数指针
//p 为指向指针的指针变量
C++程序设计课件 设计制作:徐龙琴 9
4 指出下列程序的错误。
#include <iostream.h>
void exchange(int,int);
void main()
{cout<<"Input two data seprated by space:";
int a,b;
cin>>a>>b;
cout<<"Before Exchange:a="<<a
<<",b="<<b<<endl;
exchange(a,b);
cout<<"After Exchange:a= "<<a
<<",b="<<b<<endl;
}
void exchange(int x,int y)
{ int t;
t=x;x=y;y=t;
}
l i
void exchange(int*,int*);
void main()
{cout<<"Input two data seprated by space:";
int a,b,*p1=&a,*p2=&b;
in>>a>>b;
cout<<"Before Exchange:a="<<a<<",b="<<b<<endl;
exchange(p1,p2);
cout<<"After Exchange:a="<<a<<",b="<<b<<endl;
}
i *x,int *y)
{ int t;
t=*x;*x=*y;*y=t;
}
&,int&);
int a,b;
cin>>a>>b;
cout<<"Before Exchange:a="<<a<<",b="<<b<<endl;
exchange(a,b);
cout<<"After Exchange:a="<<a<<",b="<<b<<endl;
&x,int &y)
{int ;
t=x;x=y;y=t;
}
C++程序设计课件 设计制作:徐龙琴 10
三 读程题:
1,#include<stdio.h>
void main()
{ int *v,b;
v=&b; b=100; *v+=b;
printf("%d\n",b);
} 运行结果为:200
C++程序设计课件 设计制作:徐龙琴 11
⒉ #include <stdio.h>
void main( )
{ int a[ ]={1,2,3,4,5};
int x,y,*p;
p=&a[0];
x=*(p+2);
y=*(p+4);
printf("*p=%d,x=%d,y=%d\n",*p,x,y);
return;
}
运行结果为:
*p=1,x=3,y=5
C++程序设计课件 设计制作:徐龙琴 12
3 #include<iostream.h>
void callbyval(int a,int b,int c)
{a=3;b=2;c=1;}
void callbypointer(int* a,int* b,int* c)
{*a=3;*b=2;*c=1;}
void callbyreference(int& a,int& b,int& c)
{ a=1;b=2;c=3;}
void main()
{ int a=1,b=2,c=3;
int& a1=a;
int& b1=a;
int& c1=a;
callbyval(a,b,c);
cout<<a<<b<<c<<endl;
callbypointer(&a,&b,&c);
cout<<a<<b<<c<<endl;
callbyreference(a1,b1,c1);
cout<<a<<b<<c<<endl;}
运行结果为:
123
321
321
C++程序设计课件 设计制作:徐龙琴 13
4 #include<iostream.h>
void ast(int x,int y,int *cp,int *dp)
{
*cp=x*y;
*dp=x%y;
}
void main()
{
int a,b,c,d;
a=2; b=3;
ast(a,b,&c,&d);
cout<<c<<d<<endl;
}
运行结果为:
62
C++程序设计课件 设计制作:徐龙琴 14
5 #include <stdio.h>
void main( )
{ int a=10,b=0,*pa,*pb;
pa=&a; pb=&b;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
a=20; b=30;
*pa=a++; *pb=b++;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
(*pa)++;
(*pb)++;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb); }
运行结果为:
10,0
10,0
21,31
21,31
22,32
22,32
C++程序设计课件 设计制作:徐龙琴 15
6 #include <iostream.h>
void main()
{
int a[2][3]={1,2,3,4,5,6};
int i,j,(*p)[3];
p=a;
cout<<"input i,j:";
cin>>i>>j;
cout<<"a["<<i<<","<<j<<"]= "
<<*(*(p+i)+j)<<endl;
}
运行结果为:
1 2
6
C++程序设计课件 设计制作:徐龙琴 16
7 阅读程序,给出运行结果。
#include<iostream.h>
void main()
{ int i,a[10];
int *p1,*p2;
p1=a;
p2=p1+5;
for (i=0;i<=9;i++)
{a[i]=i*i;
cout<<"a["<<i<<"]="<<a[i]<<endl;}
cout<<"a="<<a<<endl;
cout<<"p1="<<p1<<",p2="<<p2<<endl;
cout<<"p2-p1="<<p2-p1<<endl;
cout<<"*p2-*p1="<<*p2-*p1<<endl;
}
1=&a[0];
cout <"*a="<<*a <<endl;
a[5] a[0] a[5]-a[0] <<endl;
运行结果为:
a[0]=0
a[1]=1
a[2]=4
a[3]=9
a[4]=16
a[5]=25
a[6]=36
a[7]=49
a[8]=64
a[9]=81
a=0x0065FDCC
p1= 0x0065FDCC,p2= 0x0065FDED
p2-p1=5
*p1-*p2=25
改后的运行结果为:
a[0]=0
a[1]=1
a[2]=4
a[3]=9
a[4]=16
a[5]=25
a[6]=36
a[7]=49
a[8]=64
a[9]=81
*a=0
p1= 0x0065FDCC,p2= 0x0065FDED
p2-p1=5
a[5]-a[0]= 25
C++程序设计课件 设计制作:徐龙琴 17
四 编程题:
1、写一个函数,求一个字符串的长度,在 main函数中输入字符
串,并输出其长度。
2、编程实现:从键盘输入一任意字符串,然后,输入所要查找
字符。存在则返回它第一次在字符串中出现的位置;否则,输
出“在字符串中查找不到!” 。并实现对同一字符串,能连续
输入所要查找的字符
3、编程实现:从字符串中删除子字符串。从键盘输入一字符串,
然后,输入要删除的子字符串。最后输出删除子串后的新字
符串。
4、用指针数组实现:输入月份的阿拉伯数字 1~ 12,输出对应
的月份英文名称。
5,.编程实现:输入 5个字符,从中找出最大的字符并输出。要
求用字符数组存放这 5个字符,用指针数组元素分别指向这 5
个字符,再用一个二级指针变量指向这个指针数组。