2019级C语言指针摸底试卷

发布 2020-05-16 23:06:28 阅读 3056

2012级c语言高级专题摸底试卷。

考试方式: 开卷,但不允许讨论和交流。

一、选择题(每题1分,共20分)

1、若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是( c )。

a)p1=&m; p2=&p1b)p1=&m; p2=&n; *p1=*p2 ;

c)p1=&m; p2=p1d)p1=&m; *p1=*p2 ;

/a不能用&p1赋值 b n没有初始化 d p2没有指向任何地址,所以没有值。

2、下面判断正确的是( c )。

a)char *a=”china”; 等价于 char *a; *a=”china” ;

b)char str[10]=;等价于 char str[10]; str[ ]

c)char *s=”china”; 等价于 char *s; s=”china” ;

d)char c[4]=”abc”,d[4]=”abc”; 等价于 char c[4]=d[4]=”abc” ;

/a 无法赋值 b str[ ]是错的 d 不能整体赋值,除非初始化赋值。

3、下面程序段中,for循环的执行次数是( )题目有问题。

char *s=”\ta\018bc” ;for ( s!=’0’ ;s++)printf(“*

a)9b)7 c)6d)5

4、.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是( b )。

a)c=*p1+*p2 b)p2=c c)p1=p2 d)c=*p1*(*p2)

/c为字符变量,p2为指向字符串的指针变量,无法把一个变量直接赋值给指针,应该吧变量c的地址赋值给指针。

5、设有程序段:char s[ ]china”; char *p ; p=s ;则下面叙述正确的是( d )。

a)s和p完全相同

b)数组s中的内容和指针变量p中的内容相等。

c)s数组长度和p所指向的字符串长度相等

d)*p与s[0]相等。

/a s是字符数组的首地址,s是指向数组s的首地址的指针

/b s是字符c,p是指向c的地址。

/c s长度为5,p指向的字符串长度为5还要加上字符串结束标志 \0

6、以下与库函数strcpy(char *p1,char *p2)功能不相等的程序段是( d )。

a)strcpy1(char *p1,char *p2)

while ((p1++=p2++)0’)

b)strcpy2(char *p1,char *p2)

c)strcpy3(char *p1,char *p2)

while (*p1++=p2++)

d)strcpy4(char *p1,char *p2)

/d中当p2指向字符串结束标志\0时while语句还是没有结束。

7、若有说明:char *language=则language[2]的值是( b )。

a)一个字符 b)一个地址 c)一个字符串 d)一个不定值。

/*language为指针数组,每一个指向一个地址。

8、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是( c )。

a)(*p)max(a,b) b)*pmax(a,b); c)(*p)(a,b); d )*p(a,b);

/*p即为max

9、.已知学生记录描述为:

struct student birth ;

} s ;设结构变量s中的“birth”应是“2023年10月1日”,则下面正确的赋值方式是( d )。

a)year=1985b)

month=

day=c)

/结构体中有结构体,所以首先要选择以一个大结构体s,在s中还有一个小结构体birth,所以需要再调用birth中的数据。

10、以下引用不合法的是( d )。

struct s a[3]= ptr=a;

a)ptr->i1++ b)*ptr->i2 c)++ptr->i0 d)*ptr->i1

/a[0]的数据成员为 2,a[1], 0’

/a[1]的数据成员为 4, a[2], a[0]

/a[2]的数据成员为 6, ‘0’, a[1]

/d应该改为 prt->i1;

11、若要利用下面的程序段使指针变量p指向一个存储整型变量的存储单元,则在【】中应有的内容是( d )。

int *p ; p = malloc(sizeof(int));

a)int b)intc)(*int) d)(int*)

/malloc开辟内存空间指定结构。

12、下面程序的输出是( a )。

a) 60b) 68c) 99d) 108

main()

int a[3][4]=;

int ( p)[4]=a,i,j,k=0;

for(i=0; i<3; i++)

for(j=0; j<2; j++)

k=k+*(p+i)+j);

printf("%d",k);}

/3行4列,数据为,黄色区域语句第i行第j列数据相加,结果为1+3+9+11+17+19=60

13、设有以下定义:

int a[4][3]=;

int (*prt)[3]=a,*p=a[0];

则下列能够正确表示数组元素a[1][2]的表达式是( d )。

a) *prt+1) [2]) b) *p+5))

c) (prt+1)+2d) *a+1)+2)

/a *prt指下标为0的那一行,加1为那一行下标为1的那一列。

14、下列程序的输出结果是( c )。

main( )

int a[5]=,p,* k;

p=a; k=&p;

printf("%d",*pprintf("%d",*k);

a) 4 4 b) 2 2c) 2 4 d) 4 6

/p是指向a的首地址的,k是指向指针的指针,k指向指针p,第一个输出语句首先先输出p所指的数为2,然后再自增,指向a的下一个地址,里面的数值为4,所以第二个输出语句输出的为4;

15、以下程序的输出结果是( c )。

fut (int**s,int p[2][3])

**s=p[1][1];

main( )

int a[2][3]=,p;

p=(int*)malloc(sizeof(int));

fut(&p,a);

printf("%d",*p);

a) 1b) 7c) 9d) 11

/fun函数让p的值为a[1][1]即为9,fun函数中**s为**&p为*p=a[1][1]

16、以下程序的输出结果是( d )。

#include""

space (char *str)

int i,t;char ts[81];

for(i=0,t=0;str[i]!=0';i+=2)

if(! isspace(*str+i)&&str+i)!=a'))

ts[t++]toupper(str[i]);

ts[t]='0';

strcpy(str,ts);

mian( )

char s[81]=;

space(s);

puts(s);

a) abcdeg b) bcdec) abcde d) bcde

/由黄色区域可看出没有a,绿色区域函数功能为把小写变大写。

17、设有如下定义:

int arr=

int * ptr;

则下列程序段的输出结果为( d )。

ptr=arr;

(ptr+2)+=2;

C语言指针测试1教师版

满分100分时间 120分钟。姓名专业。一 填空题 5题每题3分 1.设int a 10 p a 则利用指针p对a 2 的正确引用,是 p 2 2.设有语句int point,a 4 则 a表示的是变量a的地址,point表示的是指针变量point的地址 若再有语句point a,则指针变量poin...

2019级C语言试卷 A

一。单选题 1 15题1分,16 25每题2分,共35分 1.算法具有五个特性,以下选项中不属于算法特性的是 a 有穷性 b 简洁性 c 确定性 d 可行性 2.有定义语句 int x,y 若x值11,变量y得到数值12,下面四组输入要通过scanf x d,y d x,y 正确的是。a x 11 ...

2019级C语言试卷

中南大学考试试卷。2009 2010 学年 1 学期时间110分钟。c语言程序设计基础课程 48 学时 3 学分考试形式 闭卷。班级学号姓名总分100分,占总评成绩70 注 第一至第五题均直接做在试卷上。一 选择题 每小题1.5分,共计30分 1.一个c程序的执行是从 a 本程序的main函数开始,...