18878977809 发表于 2023-9-21 11:52:16

求助下列问题

1.下面四个选项中,所给出的三个标识符都是不合法的用户标识符的选项是(
A. A P_0 do
B. float 7a0 _A
C.b+a goto int
D._123 temp break
4.执行以下程序段时,以下答案正确的是(
int x=-1;
do{
x=-x;
} while(x);
A.循环体执行一次 B.循环体执行两次C.循环体执行无限次
D.系统提示有语法错误
6.以下函数的功能是(
int fun(char *a, char *b)
{
while((*a!='/0')&&(*b!='\0')&&(*a==*b))
a++,b++;
return (*a-*b);
}
A.比较a和b所指字符串的长度是否相等
C.将b所指字符串连接到a所指字符串后面
B.将b所指字符串复制到a所指字符串中
D.比较a和b所指字符串的大小
9.对a数组元素不正确的引用是(int a []={ 1,2,3, 4,5,6},*p=a, i; 其中 0≤i≤5。
A. a
B.*(&a)
C. p
D. p+i
10.对于语句int(*p);,以下说法正确的是(
A.p是一个指针,指向一个数组,数组的每一个成员包含8个整型数据。B.p是一个指针,指向一个数组,数组中有8个整型数据
C.p是一个数组,它的每一个元素是指向整型数据的指针
D.p是一个数组,它的每一个元素是指向8个整型数据的指针
12.已知有如下语句:struct Student {
int num;
char name;
} st1,st2={101,”Tom”},*p=&st1;则不正确的语句是(
A. (*p).num=100;
B.p->num = st2.num;
C. st1=st2;
D. p->name=st2.name
15.对于基类型相同的两个指针变量之间,不能进行的运算是(
A.
B.=
C.+
D.-

isdkz 发表于 2023-9-21 11:52:17

1. 不合法的用户标识符是B、C、D。B不符合标识符命名规则,标识符不能以数字开头;C中含有加号,不符合标识符命名规则;D中含有 break,也不符合标识符命名规则。

4. 循环体执行无限次。因为 x 的初值为 -1,每次循环 x 的值都会取反,即 x 的值在 1 和 -1 之间不断循环变化,条件表达式 while(x) 恒为真,所以循环体会一直执行下去。

6. 比较a和b所指字符串的大小。该函数通过 while 循环比较两个字符串中对应位置的字符是否相等,如果相等则继续比较下一个字符,如果不相等则返回它们的 ASCII 码之差。因此,该函数的功能是比较两个字符串的大小。

9. 不正确的引用是 D. p+i。p 是一个指向 a 数组的指针,p+i 表示 p 指向的地址加上 i 个 int 类型的长度,即指向了 a 数组中第 i + 1 个元素的地址,但是 p 的类型是 int(*),所以不能用 p+i 来访问 a 数组中的元素。

10. p 是一个指针,指向一个数组,数组的每一个成员包含8个整型数据。int(*p) 表示 p 是一个指向包含 8 个整型数据的数组的指针。

12. 不正确的语句是 D. p->name=st2.name。p 是一个指向结构体 Student 的指针,p->name 表示访问结构体 Student 中的 name 成员,但是 name 是一个字符数组,不能直接赋值,需要使用 strcpy 函数进行字符串拷贝。

15. 不能进行的运算是 B. =。指针变量不能直接进行赋值运算,只能赋值为另一个指针变量的地址。
页: [1]
查看完整版本: 求助下列问题