1.在C语言中表示z<y<x,错误的表达式为( )。
A:(x>y)||(y>z) B:zz) D:(x>y)and(y>z)
答案:AI参考:在C语言中,表示“z" 是比较运算符,用于比较两个值的大小。如果要表示多个条件之间的关系,需要使用逻辑运算符。对于表达式 "zy) && (y>z)\n* (yy)\n\n其中,A、C、D选项都是正确的组合多个条件的逻辑运算符的写法。因此,答案是B: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.

假设有二维数组的定义“int a[3][4];”,则以下叙述正确的是( )。




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,则表达式 (xA:1 B:3 C:0 D:2 25.假设arr是一个有10个元素的整型数组,则下列写法中正确的是( )。
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 #define M(x,y,z) x/y+zint main(){int a=1,b=2,c=3;printf("%d\n", M(a+b,b+c,c+a));return 0;}上面程序的输出为( )。
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 元后可查看付费内容,请先翻页预览!
点赞(7) dxwkbang
返回
顶部