C语言单项选择题4

发布网友

我来回答

4个回答

热心网友

31.答:A)

32.答:C)

33.答:A)

34. 答:A)

35. 答:A)

36.答:A)

37.答:C)

38.答:B)

39.答:D)

40.答:A)
详解如下:
31.
以下4个变量定义中,定义p为二级指针的是()。
A) int **p;
B) int (*p)( );
C) int *p[10];
D) int (*p)[10];

答:A)
指向指针的指针,称为二级指针

32.
*若有以下定义和赋值语句, 则与&s[i][j]等价的是()。
int s[2][3]={0}, (*p)[3], i, j;
p=s; i=j=1;

A) *(*(p+i)+j)
B) *(p[i]+j)
C) *(p+i)+j
D) (*(p+i))[j ]

答:C)&s[i][j]等价 s[i][j]的地址
(*p)[3]表示指向数组的指针,又称数组指针,
*(p+i)表示指向s的第i行
*(p+i)+j就是第i行第j列的地址

33.
以下4个变量定义中,定义p为指针数组的是()。
A) int *p[10];
B) int (*p)( );
C) int **p;
D) int (*p)[10];

答:A)
指针数组是数组元素为指针的数组

34.
在C语言中,表示结束当前函数的语句是()。
A) return语句
B) break语句
C) continue语句
D) end语句

答:A)

35.
*若已定义x为int类型变量,下列定义指针变量p的语句正确的是()。
A) int *p=&x;
B) int p=&x;
C) int *p=x;
D) int p=x;

答:A)

36.
在C语言中,表示循环的一组语句是()。
A) for, while, do-while
B) for, while, do-until
C) for, loop, do-loop
D) for, for each, while

答:A)

37.
以下选项中,合法的函数说明语句是()。
A) void func( char a[], b[]);
B) void func( *a, char b[]);
C) void func( char a[], char *b);
D) void func( char *a, *b );

答:C)

38.
*以下定义语句中正确的是()。

A) char a="A", b="B" ; //"A"是字符串
B) char *p="abcd", *q=p+1;
C) int a=b=0; //b未定义
D) float *a, b=&a; //a未分配内存

答:B)

39.
*设有以下语句:
struct st
{ int n;
struct st *next;
}a[3]={5, &a[1], 7 , &a[2], 9, '\0'}, *p=a;
则以下表达式的值为6的是()。
A) p++->n
B) p->n++
C) (*p).n++
D) ++p->n

答:D)

p指向链表的第一个点n=5;++5=6 选D
B和C虽然也指向链表的第一个点n=5,但是是后缀++,n=6,表达式还是5

40.
设有以下结构体定义及初始化,则表达式结果为'i'的是()。
struct node
{
int num;
char name[20];
} stu[2]={101, "Wang",102, "Li"},*p=stu;

A) stu[1].name[1]
B) p->name[1]
C) stu[0].name[1]
D) p->name[1]+1

答:A)

辛苦给点分吧,555

热心网友

A
32. C B是要取到了s[i][j]的值 C才是取到了&s[i][j]的地址
A
A
A
A
C
38. B C是错误的 不信你可以边个代码测试一下
39. D B是错的 只会输出5 而不是6 同样你可以测试
A

热心网友

31 A;
32 B;
33 A;
34 A;
35 A;
36 A;
37 C;
38 C;
39 B D;(这道题确实是两个答案)
40 A;

热心网友

jazzit说得很详细,就是那个答案

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com