C语言程序设计目及解答-12
一、判断题?(20分)
1. 语句char *p = "Turbo C"的含义是将字符串赋给字符型指针变量p。2分
2. 若指针变量指向一维数组的第一个元素,将指针变量加整数3,即指针后移3个元素。
3. b是一维数组名,数组元素b[1]还可写成*(b++)。2分
4. 对二维数组a来说,由于a+1与*(a+1)的值相等,因此二者的含义是一样的。2分
5. 在二维数组中,行指针是指向一维数组的指针变量.2分
6. 取地址运算符&与指针运算符*的优先级相同,结合方向为自右向左。2分
7. 两个字符串中的字符个数相同时才能进行字符串大小的比较2分
8. 字符串不能用指针进行引用2分
9. char c[]="Very Good"; 是一个合法的为字符串数组赋值的语句。2分
10. char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。2分
二、选择题?(24分)
1.下面程序段的运行结果是( )。?[B] 2分
char str[]="ABC",*p=str;
printf("%d\n",*(p+3));
A. 67?????B. 0?????C. 字符′C′的地址?????D. 字符′C′
2.阅读下列程序,则执行后的结果为( )。?[B] 2分
#include "stdio.h"
int main()
{ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
printf("%x,%x",c[2][2],*(*(c+1)+1));
}
A. 62,5?????B. 3e,6?????C. 56,5?????D. 3E,6
3.下面程序段的运行结果是( )。???[C] 2分
char *s="abcde";
s+=2;
printf("%d",s);
A. cde?????B. 字符′c′?????C. 字符′c′的地址?????D. 无确定的输出结果
4.若有变量定义 int x=3,*p;,则下面语句不正确的是( )。???[A] 2分
A. p=&(x+1);?????B. p=&x;?????C. p=&x+1;?????D. p=&x, p++;
5.指针变量p1、p2类型相同,要使p2、p1指向同一变量,哪一个语句是正确的()。A] 2分
A. p2=*&p1;?????B. p2=**p1;?????C. p2=&p1;?????D. p2=*p1
6.若有语句:char *line[5];,以下叙述中正确的是( )。??[A] 2分
A. 定义line是一个数组,每个数组元素是一个基类型为char为指针变量。B. 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组。C. 定义line是一个指针数组,语句中的*号称为间址运算符。D. 定义line是一个指向字符型函数的指针。
7.若有数组定义为int a[10],i; 与a[i]=100 等价的赋值表达式是???[B] 2分
A. a+i=100?????B. *(a+i)=100?????C. (a+i)=100?????D. &a[i]=100
8.定义函数int *max()的正确含义是()。???[B] 2分
A. 返回整型值的函数?????B. 返回指向整型变量的指针?????C. 返回指向函数max()的指针?????D. 上面的叙述都不正确
9.若有定义“int (*ptr)(float);”,其正确的含义是()。???[C] 2分
A. ptr是指向一维数组的指针变量B. ptr是指向int型数据的指针变量C. ptr是指向函数的指针变量,该函数有一个float型参数,返回值是整型D. ptr是一个函数名,该函数的返回值是指向int型数据的指针
10.若有定义char a[15]="ab\110\\cd\'\\ne";则strlen(a)返回值和sizeof(a)的返回值分别为()。???[C] 2分
A. 11,15?????B. 17,11?????C. 10,15?????D. 18,11
11.若有定义char a[15]="ab\110\\cd\'\\ne";则strlen(a+5)返回至为()。???[D] 2分
A. 8?????B. 10?????C. 17?????D. 5
12.char s[]="a\128b\\\tcd\xdg\n";则数组s的字符串长度为()。??[C] 2分
A. 12?????B. 10?????C. 11?????D. 18
三、程序填空题?(26分)
1. 功能:建立一个如下的二维数组,并按