1.在C语言中表示z<y<x,错误的表达式为( )。 下面对数组的操作错误的是( )。 假设有二维数组的定义“int a[3][4];”,则以下叙述正确的是( )。 下列关于一维数组的说法正确的是( )。
A:(x>y)||(y>z)
B:z
答案:AI参考:在C语言中,表示“z
2.
A:int n; scanf("%d",&n); int array[n];
B:int n=10,array[n];
C:int a[5]; scanf("%d",&a);
D:int n; int array[n];
答案:AI参考:对数组的操作正确的选项是B,其余的选项都存在错误。\n\nA选项中,变量n没有被初始化,可能会导致未定义的行为。\nC选项中,scanf函数读取的数组名a是一个指向数组首元素的指针,而不是数组本身。\nD选项中,变量n没有被初始化,也可能导致未定义的行为。\n\n所以,B选项是正确的,因为变量n被初始化为10,并且数组array的大小是确定的。其他选项都存在问题。'
3.下列说法正确的是( )。
A:主函数main中定义的变量在整个文件或者程序中都有效
B:在一个函数的内部,可以在复合语句中定义变量
C:在不同函数中,可以使用相同名字的变量
D:形式参数是局部变量
答案:AI参考:正确答案是:ABD。\nA选项正确,主函数main中定义的变量在整个文件或者程序中都有效;B选项正确,在一个函数的内部,可以在复合语句中定义变量;C选项错误,不同函数中不能使用相同名字的变量,否则会发生变量覆盖;D选项正确,形式参数是局部变量,只在定义它的函数内部有效。因此本题选择ABD选项。'
4.char c;
scanf("%c",&c);
switch(c)
{case 'A':printf(">=100");
case 'B':
case 'C': printf(">=80");break;
case 'D': printf("<80");break;
default:printf("error\n");
}
如果输入大写字母B,则以上程序段的输出结果是( )。
A:<80
B:>=80
C:>=100
D:error
答案:"AI参考:答案是B:>=80。
程序中使用了switch语句,根据输入的字符c进行不同的处理。当输入大写字母B时,case B和case C都会被匹配到,因为它们之间没有break语句,所以会执行后面的case语句,即printf(>=80);。因此,输出结果为>=80。"
5.在以下描述中正确的是( )。
A:在循环体内使用break语句和continue语句的作用相同
B:break语句可以跳出多重循环
C:continue语句的作用是结束整个循环的执行
D:只能在循环体内和switch语句体内使用break语句
答案:AI参考:在以下描述中正确的是B:break语句可以跳出多重循环。\n\nA选项中,break语句和continue语句在循环体内的作用不同。break语句用于跳出当前循环,而continue语句用于结束本次循环,进入下一次循环。因此,它们的用法是不同的。\n\nC选项中,continue语句的作用是结束本次循环,而不是结束整个循环的执行。它只影响本次循环,不会影响下一次循环。\n\nD选项中,break语句可以在循环体外使用,例如在switch语句体内。而continue语句只能在循环体内使用。\n\n因此,正确答案是B:break语句可以跳出多重循环。'
6.已知有以下语句,若要实现下图的存储结构,则正确的赋值语句是( )。
int a=10,b=20,*p1,*p2;
p1=&a;
p2=&b;
A:*p1=*p2;
B:p1=*p2;
C:p1=p2;
D:*p1=p2;
答案:AI参考:正确选项是【D】:*p1=p2;。\n\n题目要求将二维数组a,b作为一维数组进行存储,使用指针变量p1和p2指向a和b。要实现这种存储结构,正确的赋值语句应该是让p1指向b,并将b的值赋值给p1指向的内存地址。选项D:*p1=p2;符合这种赋值方式,因此是正确的选项。选项A、B、C中没有直接指向p2所指向的内存地址,所以不正确。'
7.
A:数组a可以看做是由a[0],a[1],a[2],a[3]四个元素组成的一维数组
B:a[0]、a[1]和a[2]都是数组名,分别代表一个地址常量
C:a[0]可以看成是由3个整型元素组成的一维数组
D:可以用“a[0]=0;”来初始化数组a中所有元素为0
答案:AI参考:正确选项是D:可以用“a[0]=0;”来初始化数组a中所有元素为0。\n\n二维数组a可以看做是由3个一维数组组成,每个一维数组有4个元素。因此,选项A和C都错误。选项B中,a[0]、a[1]和a[2]都是数组名,它们代表的是二维数组中每个位置的地址,而不是地址常量。因此,选项B也错误。而选项D中,“a[0]=0;”这一语句将数组a的第一个元素初始化为0,这个操作是正确的。'
8.假设指针p、q、r分别指定链表中连续的3个结点,现要将q和r所指结点交换前后位置,同时要保持链表的结构,则下列语句不能完成此操作的是( )。
struct node
{
double data;
struct node*next;
}*p, *q, *r;
A:q->next=r->next; p->next=r; r->next=q;
B:p->next=r; q->next=r->next; r->next=q;
C:q->next=r->next; r->next=q; p->next=r;
D:r->next=q; p->next=r; q->next=r->next;
答案:AI参考:单选题\n\n正确的答案是:D:r->next=q; p->next=r; q->next=r->next;\n\n我们需要将q和r所指结点交换前后位置,同时要保持链表的结构。根据题目给出的代码,我们需要确保交换后的节点顺序是正确的。选项D中,r->next=q;会导致r指向q的下一个节点,而q->next=r->next;会导致q指向r的下一个节点,这不符合题目要求。因此,选项D不能完成此操作。其他选项均可以正确交换节点位置,并保持链表的结构。因此,正确答案是D。'
9.关于结构体,以下叙述正确的是( )。
A:在定义结构体类型时,编译程序就为它分配了内存空间
B:一个结构体类型是由多个成员组成的构造数据类型
C:结构体中各个成员的数据类型必须是一致的
D:结构体中,成员的数据类型只能是C语言中预先已经定义好的基本数据类型
答案:AI参考:关于结构体,以下叙述正确的是(B:一个结构体类型是由多个成员组成的构造数据类型)。\n\n选项A、C、D都存在错误。\n\n选项A:结构体类型的声明只是在程序中定义了一个名字,编译程序并不会为它分配内存空间,而是等到使用该结构体类型的变量时,才会为其分配内存空间。\n\n选项C:结构体中的成员可以有不同的数据类型,只要这些类型能够满足题目中的特定要求即可。\n\n选项D:结构体中的成员可以是任何数据类型,不仅仅是C语言中预先定义好的基本数据类型。例如,也可以是用户自定义的数据类型。\n\n因此,只有选项B是正确的,它描述了结构体的基本概念,即一个结构体类型是由多个成员组成的构造数据类型。'
10.
A:任何一个一维数组的元素在引用时,其下标可以是任何常量
B:上面的说法都错
C:如果要引用数组中的每个元素,则直接使用该数组名称既可
D:一维数组的元素实质上就是一个变量,代表内存中的一个存储单元
答案:AI参考:正确选项是【D:一维数组的元素实质上就是一个变量,代表内存中的一个存储单元】。\n\n解释:\n\nA选项错误,因为在一维数组中,下标只能是整数常量或变量。\nB选项错误,因为题目中明确说明说法正确,而B选项的表述与题目相悖。\nC选项也不完全正确,因为直接使用数组名称只能访问数组的首元素,如果要访问数组中的每个元素,还需要加上步长(即下标的变化量)和起始下标。\nD选项是正确的,因为数组本质上是一个连续的内存空间,其中的元素实质上就是一个变量,代表内存中的一个存储单元。因此,可以通过下标来访问和操作数组中的元素。'
11.若x是double型变量,k是int型变量,以下正确的输入语句是( )。
A:scanf ("%d%f", &x, &k) ;
B:scanf ("%lf%d", x, k) ;
C:scanf ("%f%d", &x, &k) ;
D:scanf ("%lf%d", &x, &k) ;
12.下面的链表中,要删除q指向的结点,正确的操作是( )。
struct node
{ int data;
struct *next;
}*p1,*q,*p2;
A:p1->next=p2,p2->next=q;
B:p1->netx=p2->next;
C:p1->next=q->next;
D:p1->next=q; q->next=p2;
13.类型是变量的共性,不占用存储单元,不能用来存放数据。( )
A:对
B:错
14.在进行字符操作时,不会将换行符、空格符当做一个字符。( )
A:对
B:错
15.在定义一维数组时可以只给一部分元素赋初值。( )
A:对
B:错
16.十进制数7.125的二进制表示是( )。
A:0111.100
B:1101.001
C:1011.111
D:0111.001
17.执行以下代码段后变量i的值为是( )。 int a[4]={2,3,4},i; i=a[0]*a[1]+a[2]*a[3];
A:4
B:10
C:不确定
D:6
18.假定int类型变量占用两个字节,如有定义“int x[8]={0,1,2};”,则数组x在内存中所占字节数是( )。
A:3
B:8
C:16
D:6
19.已知“int x=40;float pay,pay1=0,pay2=0;”,则执行以下语句后pay,pay1,pay2的值分别是( )。if (x<=50)pay=x*0.35;elsepay1=50*0.35;pay2=(x-50)*0.5;pay=pay1+pay2;
A:14,0,0
B:9,14,-5
C:-5,0,-5
D:-5,0,14
20.下列程序段执行后s值为( )。int i=5, s=0;do{if (i%2==0) s+=i;}while(--i);printf("%d\n",s);
A:都不是
B:15
C:9
D:6
21.若变量均已正确赋初值,则以下语句中错误的是( )。 struct student{ char mark[12];int num1;double num2;} t1,t2;
A:t1=t2;
B:t2.mark=t1.mark;
C:t2.num1=t1.num2;
D:t2.num1=t1.num1;
22.将变量fp定义为文件型指针,下列语句中正确的是( )。
A:FILE *fp;
B:FILE fp;
C:file fp;
D:file *fp;
23.如有定义char c[ ]={ "NBU"};则数组c包含的元素个数( )。
A:不确定
B:3
C:4
D:5
24.若有x=1, y=2, z=3,则表达式 (x
A:arr[-1]=0;
B:arr=0;
C:arr[20]=0;
D:arr[0]= -1;
26.设“int *ptr, x, array[5]={5,4,3,2,1}; ptr=array;“, 则能使x的值为3的语句是( )。
A:x=array[3];
B:x=*(array+3);
C:x=*(ptr+2);
D:array+=2; x=*array;
27.若有定义“int a=1,b=1;”,则运行语句“b=a++;”后,a和b的值分别等于( )。
A:2.2
B:1,2
C:1,1
D:2,1
28.已知“char c;int count=0;”,则从键盘上输入一串字符"CdeAbCM"回车后执行以下语句,变量count的结果为( )。while ((c=getchar())!='A')count++;
A:8
B:4
C:7
D:3
29.以下程序短的输出结果是( )。 char ch[][10]={"Ningbo","Hangzhou","Shanghai"}; char *p=ch[1]; printf("%s\n",p+2);
A:ngbo
B:ngzhou
C:Ningbo
D:Hangzhou
30.下列程序段的运行结果是( )。int x=2,y=-1,z=2 ;if(y<0) z=0 ;else z+=1;printf("%d\n",z);
A:3
B:1
C:0
D:2
31.以下程序段执行以后z的输出结果是( )。int x,y,z;x=1;y=2;z=1.0/y*x;printf("%d\n",z);
A:2
B:1
C:0
D:0.5
32.下面结构体的语句中,错误的是( )。
A:struct {int x;int y;int z;} a;
B:struct {int x;int y;int z;} point a;
C:struct point {int x;int y;int z;};struct point a;
D:strunt point {int x;int y;int z;} a;
33.#include
A:4
B:8
C:5
D:9
34.关于链表,下面说法正确的是( )。
A:链表支持随机存取
B:链表属于动态数据结构
C:链表中各元素的物理地址连续
D:链表不能在表头插入元素或者删除元素
35.已知:int x[]={1,2,3,4,5},y[]={6,7,8,9,10},*p1=x,*p2=y; 则以下值等于7的语句是( )
A:*(p1--)+*(p2--);
B:x[1]+y[1];
C:*(--p1)+*(--p2);
D:x+y;
36.在下列给出的表达式中,与while(E)中的(E)不等价的表达式是( )。
A:(E>0||E<0)
B:(!E==0)
C:(E==0)
D:(E!=0)
37.在C语言函数的定义和引用中,以下描述正确的是( )。
A:数组名不能作为形式参数
B:可以有也可以没有形式参数
C:不同函数中,不能使用重名的形式参数
D:函数的定义和调用可以嵌套
38.八位二进制数最大能表示的十进制整数是( )。
A:511
B:256
C:512
D:255
39.以下定义语句中, 错误的是( )。
A:char s[10]={"test"};
B:char a[]={"test"};
C:int n=5,a[n];
D:int a[]={1,2};
40.对于C语言,函数返回值的类型是由( )决定的。
A:定义该函数时所指定的函数类型
B:return语句中的表达式类型
C:调用该函数时系统临时决定
D:函数形式参数的数据类型
41.假设有如下定义,则以下说法正确的是( )。char *s[2]={"I love","china"};
A:s是一个指针变量,它指向含有两个数组元素的字符型一维数组
B:s数组元素的值分别是"I love"和"china"
C:s数组的两个元素分别存放的是两个字符串的首地址
D:s数组的两个元素分别存放了字符'I'和'c'
42.已经定义数组int array[3][4],假设array[0][0]位于数组第一个位置上,则此数组的第十个元素是( )。
A:array[2][2]
B:array[2][1]
C:array[1][3]
D:array[2][0]
43.下面程序片段执行后i的值应为( )。int i=3;if(i>3)if ( i<4 ) i=1;else i=2;printf("%d\n",i);
A:3.5
B:1
C:3
D:2
44.执行fopen函数打开文件,若执行不成功,则函数的返回值是( )。
A:不确定
B:-1
C:NULL
D:1
45.当接受用户输入的含有空格的字符串时,应使用( )函数。
A:scanf( )
B:gets()
C:getchar()
D:printf()
温馨提示支付 ¥3.00 元后可查看付费内容,请先翻页预览!