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函数开始,...