指针练习题
(2011-06-05 23:23:55)
标签:
指针杂谈 |
分类: 信息学竞赛 |
pointer1
(一)选择题
1.若有以下定义,则对a数组元素的正确引用是_________.
2.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为______.
3.若有以下定义,则p+5表示_______.
4.下面程序段的运行结果是_________.
5.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确
执行的赋值语句是________.
a)c=*p1+*p2;
6.以下正确的程序段是_________.
7.若有说明语句
8.下面程序的运行结果是_______.
9.下面程序的运行结果是_______.
{char *p;
a)7654321
10.变量的指针,其含义是指该变量的_________.
11.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_____.
12.若有说明;int *p,m=5,n;以下正确的程序段的是________.
(二)填空题
1.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。
请填空。
2.下面程序段的运行结果是________.
3.下面程序段的运行结果是________.
4.下面程序的功能是将两个字符串s1和s2连接起来。请填空。
5.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是______. *(a+5)的值是_________.
6.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是_____. *(*(a+1)+0))的值是________.
7.以下程序将数组a中的数据按逆序存放,请填空。
8.若有定义:int a[3][5],i,j;(且0<=i<3,0<=j<5),则a数组中任一元素可用
五种形式引用。它们是:
9.下面程序的运行结果是_________.
(三)程序设计题(要求用指针的方法完成)
1.编写程序,交换数组a和数组b中的对应元素。
2.有10个数围成一圈,求出相邻三个数之和的最小值。
3.产生动态数组。输入数组大小后,通过动态分配内存函数malloc产生数组。
4.编写程序,将一个字符串反向存放。
5.输入一串英文文字,统计其中字母(不区分大小写)的数目。
pointer2
1、please check out which of the following statements are wrong?
#include
<iostream>
using namespace
std;
int main()
{
int
iv;
int iv2 =
1024;
int iv3 =
399;
int
&reiv;
int &reiv2 =
iv;
int &reiv3 =
iv;
int
*pi;
*pi =
5;
pi =
&iv3;
const double
di;
const double maxWage =
10.0;
const double minWage =
0.5;
const double *pc =
&maxWage;
cout <<
pi;
return
0;
}
2、这个程序有什么问题?该如何修改?
char *strA() {
char str[] = “Hello World”;
return str;
}
3、What results after run the following code ?
#include <stdio.h>
int main() {
}
4、下面程序会在哪一行崩溃?
#include <stdio.h>
struct S {
};
int main()
{
}
5、设有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*prt)[3]=a, * p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是
*((*prt+1)[2])
*(*(p+5))
(*prt+1)+2
*(*(a+1)+2)
6、解释a的输出结果。
int (*a)[10];
a++;
7、#include
<stdio.h>
int main()
{
}