return 0; }
A)hello B)null C)h D)发生异常 36.下段程序的运行结果是 void main() {
char *p,*q;
char str[]=\q = p = str; p++; print(q); print(p); }
void print(char *s) {
printf(“%s”,s); }
A)H e
B)Hello,World ello,World C)Hello,World Hello,World D)ello,World ell,World 37.有以下程序 void fun(char *c,int d) {
*c=*c+1; d=d+1;
printf(\}
void main() {
char a='A',b='a'; fun(&b,a);
printf(\}
程序运行后的输出结果是___。
A) B,a,B,a B) a,B,a,B C) A,b,A,b D) b,B,A,b
38、下面选项属于函数指针的是: A、(int*)p(int, int) B、int *p(int, int) C、两者都是 D、两者都不是
39、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是__ __.
A)(*p)max(a,b); B)*pmax(a,b); C) (*p)(a,b); D) *p(a,b);
40、下面几个选项中的代码能通过编译的是 : A)int* fun()
{
int s[3]={1,3,4};; return s; }
int main() {
int * result; result = fun();
for(int i =0;i<3;i++) printf(\ return 0; }
B)int& fun() {
int s[3]={1,3,4};; return s; }
int main() {
int * result; result = fun();
for(int i =0;i<3;i++) printf(\ return 0; }
C)int* fun() {
int s[3]={1,3,4};; return &s; }
int main() {
int * result; result = fun();
for(int i =0;i<3;i++) printf(\ return 0; }
D)int& fun() {
int s[3]={1,3,4};; return &s; }
int main()
{
int * result; result = fun();
for(int i =0;i<3;i++) printf(\ return 0; }
41、下列选项中声明了一个指针数组的是: A)int *p[2]; B)int (*p)[2]; C)typedef int* intPtr; intPtr p[2]; D)A和B E)A和C F)B和C
42、下面代码能通过编译的是: A)int main() {
int a[3]={1,2,3};
int *b[3]={&a[1],&a[2],&a[3]}; int **p = b; return 0; }
B)int main() {
int a[3]={1,2,3};
int *b[3]={a[1],a[2],a[3]}; int **p = b; return 0; }
C)int main() {
int a[3]={1,2,3};
int *b[3]={&a[1],&a[2],&a[3]}; int *p = b; return 0; }
D)int main() {
int a[3]={1,2,3};
int *b[3]={&a[1],&a[2],&a[3]}; int *p = &b; return 0; }
43、对于语句int *pa[5];下列描述中正确的是_ __.
A) pa是一个指向数组的指针,所指向的数组是5个int型元素int (*p)[5]
B) pa是一个指向某数组中第5个元素的指针,该元素是int型变量 C) pa [5]表示某个元素的第5个元素的值
D) pa是一个具有5个元素的指针数组,每个元素是一个int型指针 44、若有以下定义,且0≤i<4,则不正确的赋值语句是__ __. int b[4][6], *p, *q[4];
A) q[i] = b[i]; B) p = b;
C) p = b[i] D) q[i] = &b[0][0];
45、若要对a进行++运算,则a应具有下面说明____. A) int a[3][2]; B) char *a[ ] = {“12”,”ab”}; C) char (*a)[3]; D) int b[10], *a = b; 46、若有以下说明语句:
char *language[ ] = {“FORTRAN”,”BASIC”,’’PASCAL”,’’JAVA”,”C”}; char **q;
q = language + 2;
则语句printf(“%o\\n”, *q) 输出的是_ __. A) language[2]元素的地址; B)字符串PASCAL
C) language[2]元素的值,它是字符串PASCAL的首地址 D)格式说明不正确,无法得到确定的输出
47、若有以下程序: void main() {
char *a[3] = {\ char **ptr = a;
printf(\ %s\}
这段程序的输出是() A) I l B) o o C)o love D) I love
二、程序题
1、计算字符串中子串出现的次数。要求:用一个子函数subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。
加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。 算法:明文中的字母转换成其后的第4个字母,例如,A变成E(a变成e),Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。例如,China转换成密文为G l m r e。要求:在函数change中完成字母转换,在函数insert中完成增加空格,用指针传递参数。
字符替换。要求用函数replace将用户输入的字符串中的字符t(T)都替换为e(E),并返回替换字符的个数。
编写一个程序,输入星期,输出该星期的英文名。用指针数组处理。
5、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。要求:利用字符串指针和指针数组实现。
定义一个动态数组,长度为变量n,用随机数给数组各元素赋值,然后对数组各单元排序,定义swap函数交换数据单元,要求参数使用指针传递。
实现模拟彩票的程序设计:随机产生6个数字,与用户输入的数字进行比较,输它们相同的数字个数(使用动态内存分配)。 题号 答案 1 B 2 D 3 D 4 B 5 D 6 A 7 B 8 C 9 C 10 A 11 D 12 D 13 A 14 B 15 A 16 D 17 4,12 18 D 19 D 20 8,8 21 B 22 C 23 C 24 A 25 D 26 B 27 C 28 D 29 B 30 C 31 C 32 D 33 D 34 35 36 37 38 39 40 41 42 43 44 45 46 47 A D B D D C A E A D B D C C