C语言问题

2024-12-03 10:50:30
推荐回答(5个)
回答(1):

1) 变量的指针,其含义是指该变量的 B 。
A. 值 B. 地址 C. 名 D. 一个标志
2) 若需要建立如图所示的存储结构,且已有声明float *p, m=3.14;则正确的赋值语句是 B 。

A. p=m; B. p=&m; C. *p=m; D. *p=&m;
3) 有如下语句int a=10, b=20, *p1, *p2;p1= &a; p2=&b; 如图1所示;若要实现图2所示的存储结构,可选用的赋值语句是 B 。

A. *p1=*p2 B. p1=p2; C. p1=*p2; D. *p1=p2;
4) 若有语句int *point, a=4; 和point=&a; 下面均代表地址的一组选项是 D 。
A. a, point, *&a B. &*a, &a, *point
C. *&point, *point, &a D. &a, &*point, point

5) 若有以下声明和语句,则能表示a数组元素地址的表达式是 D 。
double a[5], *p1;
p1=a;
A. a+0 B. p1+5 C. *p1 D. &a[5]
6) 若有以下声明int a[5], *p=a; 且0<=i<5, 则对a数组元素的非法引用是 D 。
A. a[i] B. *(a+i) C. *(p+i) D. *(&a+i)
7) 若有以下定义,则数值不为3的表达式是 C 。
int x[10]={0,1,2,3,4,5,6,7,8,9}, *p1;
A. x[3] B. p1=x+3, *p1++;
C. p1=x+2, *(p1++); D. p1= x+2, *++p1;
8) 若有声明:int * p, m=5, n; 以下正确的程序段是 D 。
A. p=&n; scanf(“%d”, &p);
B. p=&n; scanf(“%d”, *p);
C. scanf(“%d”, &n); *p=n;
D. p=&n; *p=m;
9) 若有声明:int * p1, *p2, m=5, n;以下均是正确赋值语句的选项是 B 。
A. p1=&m; p2=&p1;
B. p1=&m; p2=&n; *p1=*p2;
C. p1=&m; p2=p1;
D. p1=&m; *p2=*p1;
10) 有四对对指针变量进行操作的语句,以下判断正确的选项是 D 。
(1)int *p, *q; q=p;
int a, *p, *q; p=q=&a;
(2)int a, *p,*q; q=&a; p=*q;
int a=20, *p; *p=a;
(3)int a=0,b=0, *p; p=&a; b=*p;
int a=20,*p,*q=&a; *p=*q;
(4)int a=20, *p, *q=&a; a=q;
int p, *q; q=&p;
A. 正确:(1); 不正确:(2)(3)(4)。
B. 正确:(1)(4); 不正确:(2)(3)。
C. 正确:(3); 不正确:(1)(2)(4)。
D. 以上结论都不正确。
11) 如下代码调用scanf语句有错,其错误原因是 B 。
main()
{
int *p, *q, a,b;
p=&a;
printf(“input a: ”);
scanf(“%d”, *p);
……
}
A. *p表示的是指针变量p的地址。
B. *p表示的是变量a的值,而不是变量a的地址。
C. *p表示的是指针变量p的值。
D. *p只能用来声明p是一个指针变量。
12) 以下选项中,对指针变量p的正确操作是 B 。
A. int a[5], *p; p=&a;
B. int a[5], *p; p=a;
C. int a[5]; int *p=a=1000;
D. int a[5]; int *p1, *p2=a; *p1=*p2;

回答(2):

1b 2b 3b 4d 5a 6d 7c 8a 9c 10a 11b 12b

回答(3):

1B 2B 3B 4D 5D 6D 7C 8D 9B 10D 11B 12B

回答(4):

1、B
2、B
3、B
4、D
5、A
6、D
7、C
8、D
9、C
10、A
11、B
12、B

回答(5):

的嵌套。比如:
struct segment {
struct complex_struct start;
struct complex_struct end;
};
下面的BS_213是递归,是定义成自己本身的一个结构体,本身的结构体又定义了一个本身的结构体,这样下去就是个无限递归了。可以这样写,但实际中是没有什么用处的。
Struct Node
{public:
int a;
Node BS_213;};
2:在C语言中,链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据;二为下一个结点的地址,即指针域和数据域。
3:链表有一个“头指针”,因此通过“头指针”可以按顺序往下找到链表中的任一结点,如果不提供“头指针”,则整个链表都无法访问,没有研究的意义。你说的变化应该是从第二个结点向前推“头指针”,因为你的链表都无法访问,第二个结点也在变,自然第一个结点也在变。
4:链表的最后一个结点不指向其他结点,称为“表尾”,它的地址部分存放一个“NULL”(表示“空地址”)。如果你head->next==null,表示你把头指针指向了一个空地址,直接让头指针和表尾相连接,这个链表不能存储任何数据,当然是空了。