C语言作答

来源:百度知道 编辑:UC知道 时间:2024/05/29 13:36:49
请分析说明一下。
21、(C语言)以下叙述中错误的是
A、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B、数组名代表的是数组所占存储区的首地址,其值不可改变
C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D、可以通过赋初值的方式确定数组元素的个数
22、(C语言)假设有如下定义方式int(**ptr)();,则以下叙述中正确的是
A、ptr是指向一维数组的指针变量
B、ptr是指向int型数据的指针变量
C、ptr是指向函数的指针的指针,该函数返回一个int型数据
D、ptr是一个函数名,该函数的返回值是指向int型数据的指针
23、(C语言)在头指针为head且表长大于1的单循环链表中,指针p指向表中英雄模范个结点,若p->next->next=head,则
A、p指向头结点
B、p指向尾结点
C、*p的直接后继是头结点
D、*p的直接后继是尾结点
24、(C语言)数字字符0的ASCII值为48,若有以下程序main(){char a='1',b='2';printf("%c,",b++);printf("%d\n",b-a);}程序运行的输出结果是
A、3,2 B、50,2 C、2,2 D、2,50
25、(C语言)有以下程序#define P 3void F(int x) {return (P*x*x);}main(){printf("%d\n",F(3+5);}程序运行后的输出结果是
A、192 B、29 C、25 D、编译出错
26、(C语言)有以下程序main(){int a=1,b;for(b=1;b<=10;b++){if(a>=8)break;if(a%2==1

21.C //数组越界时,编译器不会报错
22.C //int(**ptr)();中ptr先与**结合所以是指针,有两个是指针的指针后面是括号表函数,因此是指向函数指针的指针
21.C //数组越界时,编译器不会报错
22.C //int(**ptr)();中ptr先与**结合所以是指针,有两个是指针的指针后面是括号表函数,因此是指向函数指针的指针
23.D //单项循环链表中尾结点的next指针指向链表头,这里p->next指向的是尾结点,那么*p直接后继是尾结点
24.C //b++是先输出然后自己增1,增1后与1的差是2
25.D //编译出错,函数定义了void型就不能有返回值
26.B //第一个循环,a为1,执行+5变为6;第二循环,a-3变为3,第三循环,a+5变为8,第四循环判断a为8结束。
27.A //形参和实参存储空间各自独立,形参是调用时分配的空间,在栈里
28.A //c里就这样
29.D //函数是面向过程的
30.A //元的作用在于提高程序的运行效率,但是,它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。

21,C
22,C
23,D
24,C
25,A
26,B
27,A
28,A
29,D
30,A

21,C
22,C
23,D
24,C
25,D 至少不能通过TC2编译
26,B
27,A
28,A
29,D
30,A

ccdcd
baada

25如果第一句是#define P 3(我没看出别的断句方式)
的话,肯定是通不过编译的,函数F返回类型是void,是不能有return值的。

21.C
22.C
23.D
24.C
25.A
26.B
27.A
28.A
29.D
30.A<