当前位置:首页 >课程 >C语言程序设计

1、下列程序的输出结果是( )。 main(){ int k=4,m=5,n=7; int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf(“%d ”,n); }

A、5
B、7
C、20
D、21

参考答案:请扫码使用小程序查看答案

2、对于类型相同的指针变量,不能进行的运算是( )。

A、+
B、-
C、=
D、==

参考答案:请扫码使用小程序查看答案

3、以下程序的输出结果是( )。 #include int main() { char str[100]="ABCDEFG", *p=str; int i; for(i = 0; *p != ’’; p++,i++); printf("%d ",i); return 0; }

A、7
B、8
C、99
D、100

参考答案:请扫码使用小程序查看答案

4、已知有以下的说明, int a[]={8,1,2,5,0,4,7,6,3,9}; 那么a[*(a+a[3])]的值为( )。

A、5
B、0
C、4
D、7

参考答案:请扫码使用小程序查看答案

5、有以下程序: main() { char str[ ][10]={“China”,“Beijing”},*p=str; printf(“%s ”,p+10);} 该程序运行后的输出结果是( )。

A、China
B、Beijing
C、ng
D、ing

参考答案:请扫码使用小程序查看答案

6、下列关于指针定义的描述正确的有( )。

A、指针变量是一种变量,该变量是用来存放某个变量的地址值的
B、指针变量的类型与它所指向的变量类型一致
C、指针变量的命名规则与标识符相同
D、在定义指针时,”*”号表示指针变量的指向

参考答案:请扫码使用小程序查看答案

7、设有定义语句: int x[6]={2,4,6,8,5,7},*p=x,i; 要求依次输出x数组中6个元素中的值,下列选项中能完成此操作的语句有( )。

A、for(i=0;i<6;i++)printf(“%2d”,*(p++));
B、for(i=0;i<6;i++)printf(“%2d”,*(p+i));
C、for(i=0;i<6;i++)printf(“%2d”,*p++);
D、for(i=0;i<6;i++)printf(“%2d”,(*p)++);

参考答案:请扫码使用小程序查看答案

8、int i=3,*p;p=&i;printf("%d",*p);是正确的。

参考答案:请扫码使用小程序查看答案

9、C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首地址值。

参考答案:请扫码使用小程序查看答案

10、在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是地址量。

参考答案:请扫码使用小程序查看答案

11、对同一类型的两个指针变量而言,一个变量向另外一个变量赋值的结果是使得两个指针指向同一个对象。

参考答案:请扫码使用小程序查看答案

12、将一维数组a的第i个元素的地址赋给指针变量p的语句是p=&a[i-1];

参考答案:请扫码使用小程序查看答案

13、char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。

参考答案:请扫码使用小程序查看答案

14、int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则p+5相当于a[5] 。

参考答案:请扫码使用小程序查看答案

15、有如下说明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是 *(p+8) 。

参考答案:请扫码使用小程序查看答案

16、若有int a[3][4];*(a+1)+2表示a[1][2]元素的地址。

参考答案:请扫码使用小程序查看答案

17、C语言程序中,当调用函数时实参和形参各占一个独立的存储单元。

参考答案:请扫码使用小程序查看答案

18、若有定义:int a[5],*p;,则操作p=a;是合法的操作。

参考答案:请扫码使用小程序查看答案

19、若有定义:int a[5],*p;,则操作p=&a[2];是合法的操作。

参考答案:请扫码使用小程序查看答案

20、若有定义:int a[5][5],*p;,则操作p=a;是合法操作。

参考答案:请扫码使用小程序查看答案

21、若有定义:int a[5][5], (*p)[5];,则操作p=*a;是合法操作。

参考答案:请扫码使用小程序查看答案

22、若有定义:int a[5][5], (*p)[5];,则操作p=a[0];是合法操作。

参考答案:请扫码使用小程序查看答案

23、凡是整型变量可以参加的运算,指针变量都可以参加。

参考答案:请扫码使用小程序查看答案

24、对于指向同一个数组的两个变量而言,两个指针变量相减的操作是有意义的。

参考答案:请扫码使用小程序查看答案

25、对数组各元素的存取完全可以不用下标变量而用指针来代替。

参考答案:请扫码使用小程序查看答案

26、下列关于指针概念的描述中,错误的是( )

A、指针中存放的是某变量或对象的地址值
B、指针的类型是它所存放的数值的类型
C、指针是变量,它也具有一个内存地址值
D、指针的值是可以改变的

参考答案:请扫码使用小程序查看答案

27、已知:int a[5],*p=a;则与++*p相同的是( )。

A、*++p
B、a[0]
C、*p++
D、++a[0]

参考答案:请扫码使用小程序查看答案

28、已知:int a[ ]={1,2,3,4,5},*p=a;在下列数组元素地址的表示中,正确的是( )。

A、&(a+1)
B、&(p+1)
C、&p[2]
D、*p++

参考答案:请扫码使用小程序查看答案

29、若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( )不是对a数组元素的正确引用(其中0≤i<10)。

A、p[i]
B、*(*(a+i))
C、a[p-a]
D、*(&a[i])

参考答案:请扫码使用小程序查看答案

30、下列语句组中,正确的是( )

A、char *s;s="Olympic";
B、char s[7];s="Olympic";
C、char *s;s={"Olympic"};
D、char s[7];s={"Olympic"};

参考答案:请扫码使用小程序查看答案

31、若有定义int(*pt)[3];,则下列说法正确的是( )

A、定义了基类型为int的三个指针变量
B、定义了基类型为int的具有三个元素的指针数组pt
C、定义了一个名为*pt、具有三个元素的整型数组
D、定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组

参考答案:请扫码使用小程序查看答案

32、有以下程序  #include int f(int t[],int n); main() { int a[4]={1,2,3,4},s; s=f(a,4); printf("%d\n",s); } int f(int t[],int n) { if(n>0) return t[n-1]+f(t,n-1); else return 0; }  程序运行后的输出结果是( )

A、4
B、1O
C、14
D、6

参考答案:请扫码使用小程序查看答案

33、有以下程序 #include main() { int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r; printf(“%d,%d,%d,%d\n”,m,n,*p,*q); } 程序运行后的输出结果是( )

A、1,2,1,2
B、1,2,2,1
C、2,1,2,1
D、2,1,1,2

参考答案:请扫码使用小程序查看答案

34、若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是( )

A、p=a
B、q[i]=a[i]
C、p=a[i]
D、p=&a[2][1]

参考答案:请扫码使用小程序查看答案

35、有以下程序 #include #include main() { char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1]; printf(“%d,”,strlen(p));printf(“%s\n”,p); } 程序运行后的输出结果是( )

A、9,One*World
B、9,One*Dream
C、10,One*Dream
D、10,One*World

参考答案:请扫码使用小程序查看答案

36、下列函数的功能是( ) fun(char * a,char * b) { while((*b=*a)!=’\0’) {a++,b++;} }

A、将a所指字符串赋给b所指空间
B、使指针b指向a所指字符串
C、将a所指字符串和b所指字符串进行比较
D、检查a和b所指字符串中是否有’\0’

参考答案:请扫码使用小程序查看答案

37、设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是( )

A、char str[ ]=”string”;c=str;
B、scanf(“%s”,c);
C、c=getchar();
D、*c=”string”;

参考答案:请扫码使用小程序查看答案

38、有以下程序 #include void fun(int *a,int *b) {int *c; c=a;a=b;b=c; } main() {int x=3,y=5,*p=&x,*q=&y; fun(p,q);printf("%d,%d,",*p,*q); fun(&x,&y);printf("%d,%d\n",*p,*q); } 程序运行后的输出结果是( )

A、3,5,5,3
B、3,5,3,5
C、5,3,3,5
D、5,3,5,3

参考答案:请扫码使用小程序查看答案

39、已知char s[10],*p=s;,则在下列语句中,错误的语句是( )。

A、p=s+5;
B、s=p+s;
C、s[2]=p[4]
D、*p=s[0]

参考答案:请扫码使用小程序查看答案

40、已知char b[5],*p=b;,则正确的赋值语句是( )。

A、b=””;
B、*b=”abcd”;
C、p=”abcd”;
D、*p=”abcd”;

参考答案:请扫码使用小程序查看答案

41、已知char s[20]=”programming”,*ps=s;则不能引用字母o的表达式是( )。

A、ps+2
B、s[2]
C、ps[2]
D、ps+=2,*ps

参考答案:请扫码使用小程序查看答案

42、下列选项中,正确的语句组是( )。

A、char s[8];s={"Beijing"};
B、char *s;s={"Beijing"};
C、char s[8];s="Beijing";
D、char *s;s="Beijing";

参考答案:请扫码使用小程序查看答案

43、已知char *p,*q;下面语句正确的是( )。

A、p*=3;
B、p/=q;
C、p+=3;
D、p+=q;

参考答案:请扫码使用小程序查看答案

44、若说明int *p,n;则通过语句scanf能够正确读入数据n的程序段是( )。

A、p=&n;scanf("%d",&p);
B、p=&n;scanf("%d",*p);
C、scanf("%d",n);
D、p=&n;scanf("%d",p);

参考答案:请扫码使用小程序查看答案

45、若有定义:int x,*pb;则以下正确的表达式是( )

A、pb=&x
B、pb=x
C、*pb=&x
D、*pb=*x

参考答案:请扫码使用小程序查看答案

46、以下程序的输出结果是( ) #include void main() {printf(“%d\n”,NULL);}

A、因变量无定义输出不定值
B、0
C、-1
D、1

参考答案:请扫码使用小程序查看答案

47、已知指针p的指向如图所示的a[1],则执行语句*p++;后,*p的值是( )。

A、20
B、30
C、21
D、31

参考答案:请扫码使用小程序查看答案

48、已知指针p的指向如图所示的a[1],则表达式*++p的值是( )。

A、20
B、30
C、21
D、31

参考答案:请扫码使用小程序查看答案

49、已知指针p的指向如图所示的a[1],则表达式++*p的值是( )。

A、20
B、30
C、21
D、31

参考答案:请扫码使用小程序查看答案

50、若有语句int *point,a=4;和 point=&a;下面均代表地址的一组选项是( )。

A、a,point,*&a
B、&*a,&a,*point
C、*&point,*point,&a
D、&a,&*point,point

参考答案:请扫码使用小程序查看答案

51、若有下面的程序段: char s[]="china";char *p; p=s; 则下列叙述正确的是( )。

A、s和p完全相同
B、数组s中的内容和指针变量p中的内容相等
C、s数组长度和p所指向的字符串长度相等
D、*p与s[0]相等

参考答案:请扫码使用小程序查看答案

52、已定义以下函数 fun(char *p2, char *p1) { while((*p2=*p1)!=’\0’){p1++;p2++;} } 函数的功能是( )。

A、将p1所指字符串复制到p2所指内存空间
B、将p1所指字符串的地址赋给指针p2
C、对p1和p2两个指针所指字符串进行比较
D、检查p1和p2两个指针所指字符串中是否有’\0’

参考答案:请扫码使用小程序查看答案

53、下面程序段中,输出*的个数是( )。 char *s="\ta\018bc"; for(;*s!=′\0′;s++)printf("*");

A、9
B、5
C、6
D、7

参考答案:请扫码使用小程序查看答案

54、阅读下列程序,则执行后的结果为( )。 #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\n",c[2][2],*(*(c+1)+1)); }

A、3e,6
B、62,5
C、56,5
D、3E,6

参考答案:请扫码使用小程序查看答案

55、现有int a,*b;,b=&a;,则下列运算错误的是( )。

A、*&a
B、&*a
C、*&b
D、&*b

参考答案:请扫码使用小程序查看答案

56、现有如下定义语句,表示数组元素s[i]的表达式不正确的是( )。 int*p,s[20],i; p=s;

A、*(s+i)
B、*(p+i)
C、*(s=s+i)
D、*(p=p+i)

参考答案:请扫码使用小程序查看答案