版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
st计算机二级-C语言知识复习题库(附答案)单选题1.若要在程序中调用库函数sin,需要包含的头文件是?A、<math.h>B、<stdlib.h>C、<stdio.h>D、<time.h>参考答案:A2.语句while(!flag);中,!flag等价于?A、flag==0B、flag==1C、flag!=0D、flag!=1参考答案:A3.以下关于continue语句的用法,正确的是?A、可以用于switch语句B、只能用于循环语句C、可以用于循环语句和switchD、什么都不能用于参考答案:B4.若有定义inta[10];,则对数组元素a[3]的正确引用是?A、a[3]B、a[10]C、a(3)D、a[0][3]参考答案:A5.以下程序的输出结果是?#include<stdio.h>intmain(){inta=10,b=20;a=b++;printf("%d%d",a,b);return0;}A、1020B、2020C、2021D、1021参考答案:C6.以下程序的输出结果是?#include<stdio.h>intmain(){inta[3]={10,20,30};inti;for(i=0;i<3;i++){printf("%d",*(a+i));}return0;}A、102030B、302010C、101010D、编译错误参考答案:A7.以下关于函数形参和实参的描述,正确的是?A、形参和实参是同一内存单元B、形参和实参个数、类型必须相同C、实参向形参传递的是值D、函数调用结束后形参占用的内存不释放参考答案:C8.若有以下程序:#include<stdio.h>intmain(){inti;for(i=0;i<5;i++){if(i==2)continue;printf("%d",i);}return0;}程序的输出结果是?A、01234B、0134C、1234D、0123参考答案:B9.若有定义structnode{intdata;structnode*next;}*p;,则访问p指向的结构体中data成员,正确的写法是?A、node.dataB、p->dataC、p.dataD、*p->data参考答案:B10.若有定义inta[5],*p=a;,则表达式p++与a++的区别是?A、没有区别B、p++是非法的,a++是合法的C、p++是合法的,a++是非法的D、p++是合法的,但p++后p指向a的下一个元素;a++非法,a是数组名常量参考答案:D11.关于结构体,下列说法错误的是?A、结构体可以包含不同类型的成员B、结构体变量之间可以相互赋值C、结构体数组在定义时必须初始化D、结构体指针可以指向结构体变量参考答案:C12.以下关于break语句的用法,正确的是?A、可以用于switch语句,不能用于循环B、可以用于循环语句,不能用于switchC、可以用于switch和循环语句D、只能用于循环语句参考答案:C13.以下代码的输出结果是?#include<stdio.h>intmain(){inti;for(i=1;i<=5;i++){if(i%2==0)continue;printf("*");}return0;}A、*****B、****C、***D、**参考答案:C14.若有定义inta[2][3];,则表达式a[1]的值是?A、数组a的第1个元素B、地址值&a[0][0]C、地址值&a[1][0]D、数组a的第0个元素参考答案:C15.若要打开一个已存在的二进制文件用于读取,正确的fopen调用是?A、fopen("file.txt","r");B、fopen("file.txt","rb");C、fopen("file.txt","r+");D、fopen("file.txt","ab");参考答案:B16.设有定义语句inta[3][2]={{1},{2},{3}};,则数组元素a[1][1]的值为?A、0B、1C、2D、3参考答案:A17.定义函数时,下列形参声明中非法的是?A、intf(intx)B、intf(intx,y)C、intf(int*x)D、intf(intx[])参考答案:B18.下列关于函数的描述,错误的是?A、函数可以有返回值,也可以没有B、函数的定义可以放在任意位置C、主函数可以调用其他函数D、主函数必须定义在文件的最前面参考答案:D19.以下程序的输出结果是?#include<stdio.h>intmain(){charstr[]="Hello";printf("%d",strlen(str));return0;}A、5B、6C、4D、编译错误参考答案:A20.若有定义charstr[]="ABC";printf("%s",str+1);输出是?A、CB、BC、BCD、ABC参考答案:C21.下列运算符中,优先级最高的是?A、+B、-C、*D、<=参考答案:C22.表达式(a=3,a+2,a+4)的值是?A、3B、5C、7D、表达式错误参考答案:C23.语句printf("%d",12/5);的输出结果是?A、2.4B、2C、3D、2.00参考答案:B24.若有定义charstr[20];,用于输入字符串的正确函数是?A、scanf("%s",str);B、gets(str);C、cin>>str;D、printf("%s",str);参考答案:B25.若要定义一个指向整型数据的指针p,正确的定义语句是?A、int*p;B、*intp;C、intp;D、pint;参考答案:A26.若有以下程序:#include<stdio.h>intmain(){chars[]="ABCDEFG";s[3]='\0';printf("%d",sizeof(s));return0;}则程序的输出结果是?A、6B、7C、8D、11参考答案:C27.在文件操作中,fseek函数主要用于?A、读取文件内容B、关闭文件C、定位文件指针D、创建新文件参考答案:C28.以下用于将字符串s2复制到字符串s1的函数是?A、strcpy(s1,s2)B、strcat(s1,s2)C、strcmp(s1,s2)D、strlen(s2)参考答案:A29.若有定义inta[3];int*p=a;,则*p等价于?A、aB、&a[0]C、a[0]D、a[1]参考答案:C30.设有语句inta=10,b=20;a^=b;b^=a;a^=b;,执行后a和b的值为?A、a=10,b=20B、a=20,b=10C、a=0,b=30D、a=30,b=0参考答案:B31.下列程序的输出结果是?#include<stdio.h>intmain(){inti;for(i=0;i<5;i++){if(i==2)continue;printf("%d",i);}return0;}A、01234B、0134C、01234D、1234参考答案:B32.文件指针FILE的主要作用是?A、指向文件的内容B、指向文件的存储位置C、定义文件变量D、读取文件内容参考答案:B33.下列关于指针的描述,正确的是?A、指针变量只能指向整型变量B、指针变量的值可以是任意类型地址C、空指针的值是NULLD、*p和p是完全相同的含义参考答案:C34.下列关于字符串处理的说法,正确的是?A、C语言中没有字符串类型,使用字符数组存储B、字符串可以直接用==比较内容C、'A'和"A"是完全相同的D、scanf()可以自动处理包含空格的字符串输入参考答案:A35.以下结构体定义中,关键字struct的作用是?A、定义变量B、定义结构体类型C、定义函数D、定义指针参考答案:B36.以下关于自增运算符++的说法,正确的是?A、只能用于整型变量B、不能用于表达式中C、既能用于变量也能用于常量D、既能前缀++也能后缀++参考答案:D37.下列关于C语言指针运算的说法,错误的是?A、两个指针变量可以进行相减运算B、指针变量可以与0进行比较C、指针变量可以与整数进行加减运算D、两个指针变量可以进行相加运算参考答案:D38.下列关于typedef的描述,正确的是?A、typedef可以定义新数据类型B、typedef仅是类型别名C、typedef不能用于结构体D、typedef定义后必须包含分号参考答案:B39.下列代码段输出结果是?#include<stdio.h>intmain(){inta=5;switch(a){case1:printf("One");case2:printf("Two");default:printf("Other");}return0;}A、OtherB、OneTwoOtherC、OneTwoD、无输出参考答案:A40.若有定义inta=5;,则表达式(a>0)?10:20的值是?A、1B、10C、20D、1,10参考答案:B41.语句while(!feof(fp));的功能是?A、判断文件是否结束B、循环读取文件直到结束C、判断文件指针位置D、关闭文件参考答案:B42.语句fwrite(buf,4,5,fp);的功能是?A、从fp读取5个长度为4的字符串B、向fp写入5个长度为4的字符串C、向fp写入5个长度为4的整型数据D、从fp读取5个长度为4的整型数据参考答案:C43.以下关于关系运算符的描述,错误的是?A、关系运算符的优先级低于算术运算符B、>和>=是不同的运算符C、关系运算符的结果只能是0或1D、a==b和a==b含义相同参考答案:D44.宏定义#definePI3.14在程序编译阶段的处理方式是?A、与源代码一起编译B、不做任何处理C、字符串替换D、链接处理参考答案:C45.若有以下函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));则在该函数调用中,实参的个数是?A、3B、4C、5D、6参考答案:A46.若有定义inta[5]={1,2,3,4,5};,则表达式*(a+2)的值是?A、2B、3C、4D、5参考答案:B47.以下程序的输出结果是?#include<stdio.h>intmain(){intx=3,y=0;while(x<=3){y+=x;x++;}printf("%d",y);return0;}A、3B、6C、9D、0参考答案:A48.若有定义int*p;*p=100;将会发生什么?A、产生错误B、分配内存并赋值C、野指针操作D、p的值被设为100参考答案:C49.关于宏定义#define,下列说法正确的是?A、宏定义可以用来定义函数B、宏定义在编译时进行文本替换C、宏定义不能带参数D、宏定义定义的变量占用内存参考答案:B50.若要使指针p指向数组a的首元素,则赋值语句p=a;等价于?A、p=&a[0];B、p=&a;C、p=a[0];D、p=*a;参考答案:A51.若inta=1,b=2,c=3,d=4;,则表达式a>b&&c<=d的值是?A、1B、2C、3D、0参考答案:D52.若有定义inta[]={10,20,30,40,50};int*p=a;p++;,则此时*p的值是?A、10B、20C、30D、40参考答案:B53.设有以下程序:#include<stdio.h>intmain(){inta=10,b=20;a^=b;b^=a;a^=b;printf("%d%d",a,b);return0;}程序的输出结果是?A、2010B、1020C、2020D、1010参考答案:A54.以下程序的输出结果是?#include<stdio.h>intmain(){inti,a[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d",*(a+i)[2]);return0;}A、369B、357C、123D、345参考答案:A55.设有定义intx=10,*p=&x;,则表达式p-&x的值是?A、0B、1C、2D、10参考答案:A56.若有定义voidswap(intx,inty);想要通过函数交换两个整数的值,以下说法正确的是?A、可以直接交换B、需要传递指针C、需要传递数组D、无法交换参考答案:B57.以下break语句的作用是?A、结束当前循环B、跳出本次循环C、跳出所有循环D、结束整个程序参考答案:A58.若有定义charstr[]="Hello";,则数组str的长度是?A、4B、5C、6D、7参考答案:C59.若有定义intx=1;,则执行语句x+=x-=x*x;后,x的值为?A、0B、1C、2D、-1参考答案:A60.下列程序的输出结果是?#include<stdio.h>intmain(){inti;for(i=0;i<3;i++){staticintj=0;j+=i;printf("%d",j);}return0;}A、013B、012C、123D、026参考答案:A61.若有定义chars[]="ABCDEF";,则s[3]的值是?A、'A'B、'B'C、'C'D、'D'参考答案:D62.若inta=2,b=3,c;c=a&&b;,则c的值是?A、1B、2C、3D、0参考答案:A63.若定义int*p[4];,则下列说法正确的是?A、p是一个指向含4个元素的数组的指针B、p是一个指针变量,指向一个整型数组C、p是数组名,存放的是4个指针D、p是一个指针数组,其中每个元素都是一个整型指针参考答案:D64.若inta=2,b=0;,则表达式a||b的值是?A、1B、2C、0D、False参考答案:A65.以下关于枚举类型的说法,正确的是?A、枚举元素必须是整数B、枚举元素必须递增C、枚举变量不能进行算术运算D、枚举定义后程序运行时自动初始化为0参考答案:A66.若有定义inta=5,b=2,c;语句c=a%b;,则c的值是?A、2B、1C、0D、-3参考答案:B67.若有定义struct{intnum;charname[10];}s;,则访问成员num的方式是?A、s.numB、.numC、->numD、s->num参考答案:A68.若有语句intarr[]={10,20,30};int*p=arr;printf("%d",*(p+1));输出结果是?A、10B、20C、30D、0参考答案:B69.若有语句charstr[]="Hello";,则该字符串在内存中占用的字节数是?A、4B、5C、6D、7参考答案:C70.若有定义inta=5;,switch(a)中case后可以跟什么数据类型?A、StringB、booleanC、doubleD、float参考答案:A71.若有以下程序:#include<stdio.h>intmain(){intx=0;do{x++;printf("%d",x);}while(x<4);return0;}程序的输出结果是?A、1234B、123C、12345D、0123参考答案:A72.若有定义int*p;,则p可以指向的数据类型是?A、任意类型B、整型C、字符型D、浮点型参考答案:B73.C语言中,用于表示逻辑“真”的常量是?A、trueB、falseC、TRUED、1参考答案:D74.若有定义inta[4]={1,3,5,7};int*p=a;p+=2;,则*p的值是?A、1B、3C、5D、7参考答案:C75.函数调用语句func((exp1,exp2),exp3);中,函数func有两个参数,第二个参数是?A、exp1B、exp2C、exp3D、(exp2,exp3)参考答案:C76.若有语句inta[2][3]={{1,2,3},{4,5,6}};,则a[0][1]和a[1][2]的值分别是?A、1,4B、2,5C、2,6D、3,6参考答案:C77.语句p=(structstudent*)malloc(sizeof(structstudent));的作用是?A、定义结构体指针B、释放结构体内存C、分配结构体大小的内存并转换为指针D、复制结构体内容参考答案:C78.若有定义int*p,a=5;语句p=&a;正确的是?A、将a的值赋给pB、将a的地址赋给pC、将p的值赋给aD、将a的地址赋给a参考答案:B79.下列关于文件指针的描述,正确的是?A、文件指针只能指向文件的开头B、文件指针固定不变C、文件指针指向文件中当前读写的位置D、文件指针关闭后仍然有效参考答案:C80.以下程序的输出结果是?#include<stdio.h>intmain(){inti=2;intj=2;if(i++&&j++)printf("true");elseprintf("false");return0;}A、trueB、falseC、truetrueD、falsetrue参考答案:A81.若有定义intx=1;,则表达式(x>0)?10:20的值是?A、1B、10C、20D、1,10参考答案:B82.下列关于指针数组的描述,正确的是?A、指针数组的每个元素都是一个指针B、指针数组只能指向整型数据C、指针数组本身是一个数组D、指针数组的大小是固定的参考答案:A83.在C语言中,用于定义一维数组的长度时,必须是?A、整型变量B、字符常量C、整型常量D、浮点型常量参考答案:C84.设a为int类型,以下语句a=(a>0)?a+1:a-1;的功能是?A、若a>0则a+1B、若a<0则a-1C、若a>0则a加1,否则a减1D、无论a是多少,都a-1参考答案:C85.下列关于C语言函数的叙述中,正确的是?A、函数定义不能嵌套,但函数调用可以嵌套B、函数定义可以嵌套,但函数调用不能嵌套C、函数定义和函数调用都不能嵌套D、函数定义和函数调用都可以嵌套参考答案:A86.在C语言中,打开一个文本文件用于读取,使用的模式字符串是?A、"r"B、"w"C、"a"D、"r+"参考答案:A87.字符串"Hello\0World"的长度是?A、12B、5C、10D、20参考答案:B88.若有定义int*p=malloc(sizeof(int));,则此代码正确且执行后p指向?A、空地址NULLB、随机内存地址C、已分配的整型内存区域D、程序代码区参考答案:C89.若有定义structNode{intdata;structNode*next;}*p;,则p指向的链表节点中,next指针的数据类型是?A、structNodeB、structNode*C、intD、structNode**参考答案:B90.若有定义inta[5];,则表达式&a[2]的类型是?A、int*B、int**C、int(*)[5]D、int(*p)[5]参考答案:A91.以下程序的输出结果是?#include<stdio.h>intadd(inta,intb){returna+b;}intmain(){inta=10,b=20;intc=add(a,b);printf("%d",c);return0;}A、10B、20C、30D、40参考答案:C92.逻辑表达式!(a>b)&&a==b中,当a=3,b=5时,其值为?A、1B、0C、2D、true参考答案:B93.以下while循环的执行次数是?intk=0;while(k<10){k++;}A、0B、9C、10D、无限参考答案:C94.若有定义inta[3][3]={{1,2},{3,4},{5,6}};,则a[2][1]的值是?A、3B、4C、5D、6参考答案:D95.若定义inta[5]={1,2,3,4,5};int*p=a;,则表达式*(p+2)的值是?A、1B、2C、3D、5参考答案:C96.下列代码段输出结果是?#include<stdio.h>intmain(){inta=5;if(a>0)printf("True");elseprintf("False");return0;}A、TrueB、FalseC、TrueD、无输出参考答案:A97.以下关于结构体数组的说法正确的是?A、结构体数组不能直接赋值B、结构体数组元素可以直接通过下标访问C、结构体数组元素的成员访问必须通过指针D、结构体数组的元素必须初始化才能使用参考答案:B多选题1.关于宏定义,下列说法正确的是?A、#defineMAX100是宏定义B、带参数的宏在编译时进行替换C、宏定义没有类型检查D、宏定义的结尾需要加分号参考答案:ABC2.以下关于位运算符的描述,正确的是?A、按位与运算符&可以用于将某些位清零B、按位或运算符|可以用于将某些位置一C、异或运算符^的特点是:相同为0,不同为1D、左移运算符<<可以将操作数乘以2的n次方参考答案:ABCD3.关于位运算,下列说法正确的是?A、按位与&可以用来清零某一位B、按位或|可以用来置位某一位C、异或运算^可以用来交换两个数(不用临时变量)D、取反运算~的优先级比算术运算符高参考答案:ABCD4.下列关于二维数组在内存中存放顺序的描述正确的有?A、按行优先存储B、按列优先存储C、先存第0行的所有元素D、先存第0列的所有元素参考答案:AC5.下列关于格式化输入输出函数的描述正确的有?A、%d用来输出intB、%f用来输出floatC、%c用来输出字符D、%s用来输出字符串参考答案:ABCD6.下列运算符中,优先级从高到低排序正确的有?A、*和->(指针访问和结构体成员)B、+和-(加减)C、<<=>>=(关系)D、&&(逻辑与)参考答案:ABCD7.若有inta[]={1,2,3,4,5};int*p=a;sizeof(p)的结果有可能是?A、4B、8C、2D、16参考答案:AB8.若有以下定义,则p++的含义是?inta[3][4];int(*p)[4];p=a;A、p指向下一行B、p指向a[0]的下一个元素C、p的值加1D、p的值加4参考答案:ACD9.下列关于动态内存分配malloc的描述正确的有?A、分配成功返回void指针B、分配失败返回NULLC、分配的空间不初始化D、分配的空间可以像数组一样用下标访问参考答案:ABC10.关于FILE*指针,下列说法正确的是?A、文件指针定义在stdio.h中B、fopen返回的是文件指针C、fclose用于关闭文件D、fprintf和fscanf可以处理文件参考答案:ABCD11.若有定义inta[5]={1,2,3};,则下列说法正确的是?A、a[0]=1B、a[4]=0C、a[2]=3D、a[3]=0参考答案:ABCD12.下面关于结构体与共用体的说法,正确的是?A、结构体变量在内存中各成员地址是连续的B、共用体变量在内存中各成员占用同一块存储空间C、结构体变量所占内存大小是其所有成员大小的总和D、共用体变量所占内存大小是其最大成员的大小参考答案:ABD13.若有定义int*p[3];,则下列能正确进行内存分配的有?A、p=(int*)malloc(sizeof(int)*3);B、*p=(int*)malloc(sizeof(int)*3);C、p[0]=(int*)malloc(sizeof(int)*3);D、p=(int**)malloc(sizeof(int*)*3);参考答案:BCD14.若有以下程序,关于输出结果的描述正确的有?structNode{intdata;structNode*next;};structNode*p,*q,*r;p=q=(structNode*)malloc(sizeof(structNode));q->next=r=(structNode*)malloc(sizeof(structNode));r->next=NULL;p->data=10;q->data=20;r->data=30;free(p);A、程序运行正常,p指向的节点被释放B、程序运行正常,q和r指向的节点未被释放C、程序运行正常,q->next为NULLD、程序可能崩溃,p和q指向同一内存块参考答案:BC15.若有以下定义,则能够正确表示数组a中“第一个元素”的地址的表达式有?inta[10],*p;p=a;A、&a[0]B、aC、pD、&a参考答案:ABC16.若有以下程序,以下说法正确的有?int*p,*q,m=5,n=10;p=&m;q=&n;m=*p;*p=*q;q=p;A、变量m的值为10B、变量n的值为5C、变量m的值为5D、指针p和q都指向变量m参考答案:AD17.若有以下定义,则能通过sizeof获取数组元素个数的有?intarr[]={1,2,3,4,5};A、sizeof(arr)/sizeof(arr[0])B、sizeof(arr)/sizeof(int)C、sizeof(arr)/4D、sizeof(arr)/sizeof(*arr)参考答案:ABCD18.以下关于C语言中指针的描述,正确的是?A、指针变量可以存放任意类型变量的地址B、未初始化的指针指向随机内存地址,使用可能导致程序崩溃C、两个指针相减结果为两个指针之间相差的字节数D、指针变量的值可以被修改,但指向的目标地址不变参考答案:ABC19.下列函数声明中,合法的是?A、int*f(intx,inty);B、intf(int,int);C、int*f(int,int);D、intf(intx,inty){参考答案:ABC20.若有定义inta[3][4];,则下列哪些表示合法(假设下标有效)?A、a[1][2]B、*(a[0]+2)C、*(*(a+1)+2)D、a+1参考答案:ABC21.关于C语言指针,下列说法正确的是?A、指针变量只能存储变量的地址B、空指针NULL指针不指向任何有效地址C、对空指针解引用是非法的D、两个指针可以相加参考答案:ABC22.若有定义unsignedinta=65535;,则sizeof(a)的结果有可能是?A、2B、4C、8D、1参考答案:AB23.关于switch语句,下列说法正确的是?A、case后的值必须是常量或常量表达式B、switch语句可以没有default分支C、default分支可以在switch语句的任意位置D、case和default语句的顺序可以任意参考答案:ABCD24.下列属于C语言关键字的是?A、charB、size_tC、typedefD、friend参考答案:AC25.关于函数递归调用,下列描述正确的有?A、递归调用必须有终止条件B、递归调用每次调用都会创建新的局部变量C、递归调用在栈空间中执行D、递归一定能转化为非递归函数参考答案:ABCD26.关于C语言的变量声明与定义,下列说法正确的是?A、变量定义一定会分配内存B、变量声明不一定会分配内存C、extern声明可以用于引用外部变量D、变量定义可以被多次参考答案:ABC27.若有定义inta[5][3];,则以下能表示数组元素a[1][2]的地址的有?A、a[1]+2B、&a[1][2]C、*(*(a+1)+2)D、a+3参考答案:ABC28.下列哪些是C语言中合法的标识符?A、2varB、var_nameC、_countD、int参考答案:BC29.下列关于预处理指令的描述正确的有?A、#include包含头文件B、#define可以用来定义宏C、#ifdef用于条件编译D、#undef取消宏定义参考答案:ABCD30.关于C语言的预处理指令,以下说法正确的是?A、#include<stdio.h>是包含标准输入输出头文件B、#definePI3.14是宏定义指令,编译时预处理器会进行文本替换C、#ifdef指令用于测试宏是否已经被定义D、#undef用于取消一个已经定义的宏参考答案:ABCD31.关于函数参数传递,下列描述正确的有?A、基本类型按值传递B、数组名作为参数传递首地址C、结构体变量按值传递D、指针变量按值传递(传递地址值)参考答案:ABCD32.关于指针数组,下列描述正确的有?A、指针数组的每个元素都是一个指针B、指针数组常用于实现多级指针C、指针数组的数组名是一个常量指针D、int*p[4];定义了一个包含4个整数的数组参考答案:AC33.若有以下程序,输出结果正确的有?intx=1,y=2;if(x>y)x=3;elsex=4;printf("%d",x);A、输出3B、输出4C、x=3,y=2D、x=4,y=2参考答案:BD34.若有以下程序,下列关于a的描述正确的有?inta=5;int*p=&a;p++;p++;A、a的值变为7B、a的值变为9C、p的值指向变量aD、p的值指向变量a之后的内存参考答案:AD35.下列关于关键字const的描述正确的有?A、constinta;a是常量B、intconsta;a是常量C、int*constp;p指针不可变D、constint*p;p指向的内容不可变参考答案:ABCD36.关于字符串在C语言中的存储与处理,以下描述正确的是?A、字符串常量在内存中以'\0'结尾B、字符串数组chars[]="hello"的长度为5C、使用strlen(s)计算字符串长度时,不包含结束符'\0'D、可以使用==直接比较两个字符串的内容是否相等参考答案:AC37.下列关于位运算的描述正确的有?A、&按位与B、|按位或C、^按位异或D、~按位取反参考答案:ABCD38.以下关于函数的描述,正确的是?A、C语言程序执行总是从main函数开始B、函数可以递归调用自身C、形参变量在函数被调用时才被分配内存D、函数的返回值类型如果不指定,默认为int参考答案:ABCD39.若有定义inta[3][4]={{1,2},{3,4},{5,6}};,则下列能正确引用元素a[1][3]的有?A、a[0]+3B、*(a[1]+3)C、*(*(a+1)+3)D、&a[0][0]+7参考答案:BC40.下列哪些函数用于操作字符串?A、strcpyB、strcatC、strcmpD、scanf参考答案:ABC41.若有定义inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};,则值为5的表达式有?A、*(*(a+1)+1)B、a[1][1]C、*(&a[0][0]+5)D、*(*(a)+5)参考答案:ABC42.若有定义int*p;,则下列哪些操作是合法的?A、p=NULL;B、p=(int*)malloc(sizeof(int));C、*p=10;D、p=10;参考答案:AB43.下面关于break语句和continue语句的描述,正确的是?A、break语句只能用于循环语句中,终止当前循环B、continue语句用于结束本次循环,继续下一次循环C、break语句也可以用于switch多分支选择结构D、在多层循环中,break语句只会跳出包含它的那一层循环参考答案:ABC44.关于结构体,下列说法正确的是?A、结构体变量可以相互赋值B、结构体数组可以初始化C、结构体指针可以访问成员D、结构体的大小等于其所有成员大小之和参考答案:ABC45.若有以下程序段,则说法正确的有?inta[3]={0,1,2},i;int*p=a;p++;for(i=0;i<3;i++)printf("%d",*p++);A、p指向数组元素a[1]B、循环结束时p指向数组元素a[3]C、输出结果为123D、输出结果为012参考答案:AC46.关于结构体与共用体,下列描述正确的有?A、结构体变量所占内存是各成员内存的总和B、共用体变量所占内存等于最长成员的内存长度C、结构体变量的地址是其第一个成员的地址D、共用体变量不能作为结构体的成员参考答案:ABC47.下列描述中,属于C语言特点的有?A、高级语言B、类型检查严格C、高效的执行D、可移植性强参考答案:ACD48.若有定义inta[3][3];int(*p)[3];p=a;,则以下描述正确的有?A、p指向包含3个整数的数组B、p指向第0行C、*(p+1)等价于a[1]D、p[1][2]等价于a[1][2]参考答案:ABCD49.若有以下程序,输出结果正确的有?#include<stdio.h>voidfunc(int*p1,int*p2){inttemp=*p1;*p1=*p2;*p2=temp;}main(){inta=2,b=3;func(&a,&b);printf("%d%d",a,b);}A、输出23B、输出32C、交换了a和b的值D、没有交换a和b的值参考答案:BC50.下列关于结构体指针成员的访问,描述正确的有?structStudent{intnum;charname[20];}*p;A、p->numB、(*p).numC、p.numD、p->name参考答案:ABD51.下列哪些是C语言的预处理指令?A、#includeB、#defineC、#ifD、void参考答案:ABC52.下列有关字符串处理的函数,说法正确的有?A、strlen("ABC")返回3B、strcpy(a,b)将b的'\0'也复制C、strcmp(a,b)当a<b时返回负数D、strcat(a,b)将a和b连接后存入a参考答案:ABCD53.下列函数定义中,函数体内使用了局部变量x,没有发生名字遮蔽现象的有?A、voidf1(){intx;...}B、voidf2(intx){...}C、voidf3(intx){intx;...}D、voidf4(intx){inty=x;...}参考答案:BD54.关于文件操作,以下说法正确的是?A、文件操作通常包含“打开”和“关闭”两个步骤B、使用fopen函数打开文件失败时会返回NULL指针C、rewind函数的作用是将文件位置指针移回文件开头D、fgetc函数可以从指定的流中读取一个字符参考答案:ABCD55.下列关于goto语句的描述正确的有?A、goto语句可以跳出多层循环B、过度使用goto会使程序难以维护C、goto可以从循环内部跳转到循环外部D、goto只能在函数内部使用参考答案:ABCD56.下列关于循环结构的说法,正确的是?A、while循环在循环体执行前先判断条件B、do-while循环在循环体执行后判断条件C、for循环通常用于已知循环次数的情况D、break语句可以跳出当前循环参考答案:ABCD57.下列关于文件操作的描述正确的有?A、fopen返回FILE指针B、fclose关闭文件指针C、feof用于判断文件是否结束D、rewind用于重置文件指针参考答案:ABCD58.下列关于枚举类型的描述正确的有?A、枚举常量默认从0开始B、枚举变量只能取定义时的值C、枚举值可以参与算术运算D、枚举变量可以赋值为-1参考答案:ABC判断题1.宏定义命令#definePI3.1415926出现在程序代码中时,编译器会将其替换为具体的数值。A、正确B、错误参考答案:B2.递归函数必须有结束递归的条件。A、正确B、错误参考答案:A3.C语言中,sizeof是一个运算符,用于计算类型或变量在内存中占用的字节数。A、正确B、错误参考答案:A4.表达式3.14%2是合法的C语言表达式。A、正确B、错误参考答案:B5.指针变量可以存储整数,但通常不建议这样做,因为会导致类型不匹配。A、正确B、错误参考答案:B6.float类型的有效数字通常是6到7位。A、正确B、错误参考答案:A7.在字符串操作函数中,strlen计算字符串的长度。A、正确B、错误参考答案:A8.在结构体定义中,最后不需要分号。A、正确B、错误参考答案:B9.两个指针相加是没有意义的。A、正确B、错误参考答案:A10.指针变量定义后未赋初值时,可以直接使用。A、正确B、错误参考答案:B11.int(*p)[5];声明中,p是一个指针变量,指向一个包含5个整数的数组。A、正确B、错误参考答案:A12.getchar()函数可以从标准输入读取一个字符并返回该字符的ASCII码值。A、正确B、错误参考答案:A13.在C语言中,break语句不仅可以用于switch语句,也可以用于for、while和do-while循环语句中。A、正确B、错误参考答案:A14.使用static修饰的局部变量,其生命周期是整个程序运行期间。A、正确B、错误参考答案:A15.C语言中,指针与整数进行算术运算(如+1,-1)时,该整数表示的是指针指向的内存地址增量,该增量大小与指针所指向的数据类型占用字节数有关。A、正确B、错误参考答案:A16.自增运算符++和自减运算符--可以作用于表达式。A、正确B、错误参考答案:B17.若有定义inta,b;则表达式a%b的结果类型与变量a的类型相同。A、正确B、错误参考答案:A18.strcpy函数可以将一个字符串复制到另一个字符串中。A、正确B、错误参考答案:A19.以下代码的输出结果是0。inta=10;printf("%d",a%2);A、正确B、错误参考答案:A20.C语言程序从主函数main开始执行,并在主函数结束。A、正确B、错误参考答案:A21.变量在使用之前必须进行定义。A、正确B、错误参考答案:A22.关键字const用于声明一个变量,其值在程序运行过程中不可改变。A、正确B、错误参考答案:A23.数组作为函数参数传递时,函数内部修改数组元素会影响实参数组。A、正确B、错误参考答案:A24.FILE*fp;定义了一个文件指针变量fp。A、正确B、错误参考答案:A25.在C语言中,int类型变量占用4个字节的内存空间。A、正确B、错误参考答案:B26.函数定义时不能对形参进行初始化。A、正确B、错误参考答案:A27.structStu{charname[10];};这种定义方式是合法的,Stu是一个新类型名。A、正确B、错误参考答案:A28.&运算符可以用于数组名。A、正确B、错误参考答案:A29.定义函数voidfun(int*p),在调用时可以使用数组名作为实参,传递的是数组的地址。A、正确B、错误参考答案:A30.struct关键字用于定义结构体类型,结构体变量的定义必须在结构体类型定义之后。A、正确B、错误参考答案:A31.若有定义inta[5]={1,2,3};,则数组a的所有元素都被初始化为0。A、正确B、错误参考答案:B32.一个C程序的执行总是从程序中第一个定义的函数开始。A、正确B、错误参考答案:B33.rewind函数用于将文件指针移动到文件的开头。A、正确B、错误参考答案:A34.内存泄漏是指程序占用的内存不断增加。A、正确B、错误参考答案:A35.初始化一个指针数组时,可以同时使用数组和指针定义。A、正确B、错误参考答案:A36.struct类型的变量占用内存的大小是其所有成员占用内存大小的总和。A、正确B、错误参考答案:A37.fopen函数打开文件失败时,返回值为NULL。A、正确B、错误参考答案:A38.在循环中,continue语句的作用是跳出当前循环。A、正确B、错误参考答案:B39.在C语言中,结构体类型变量可以作为函数的参数进行传递,传递方式为值传递。A、正确B、错误参考答案:A40.两个指针变量可以进行比较运算,如if(p1>p2)。A、正确B、错误参考答案:A41.文件指针file_ptr指向一个文件,执行语句rewind(file_ptr);后,文件指针的位置被重置为文件的开头。A、正确B、错误参考答案:A42.在C语言中,语句必须以分号结尾。A、正确B、错误参考答案:A43.#include<stdio.h>和#include"stdio.h"的区别仅在于头文件搜索路径不同。A、正确B、错误参考答案:A44.sizeof运算符用于计算变量或数据类型在内存中占用的字节数,它是一个编译时运算符。A、正确B、错误参考答案:A45.在C语言中,指针变量可以进行加减整数运算,且结果代表内存地址偏移量。A、正确B、错误参考答案:A46.sizeof(int)和sizeof(int*)在32位系统下结果相同,在64位系统下结果不同。A、正确B、错误参考答案:A47.char类型在内存中占用1个字节,因此char类型变量的取值范围是-128到127。A、正确B、错误参考答案:A48.宏定义#definePI3.14在编译时会被直接替换为3.14。A、正确B、错误参考答案:A49.字符串常
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广场硬质铺张施工方案(3篇)
- 凉山防火地坪施工方案(3篇)
- 海外工程用工应急预案(3篇)
- 打造高效衣橱活动策划方案(3篇)
- 2026年丹东市公益性岗位招聘笔试备考题库及答案解析
- 2026年黄山高速公路管理中心下半年收费岗见习人员招聘12名笔试模拟试题及答案解析
- 2026年水利管理行业发展研究报告及未来五至十年资本热度与投融资趋势
- 2027吉林省面向中国农业大学定向招录选调生笔试模拟试题及答案解析
- 2026年油气仓储行业洞察报告及未来五至十年发展趋势报告
- 理赔应急预案内容(3篇)
- 长期照护师技能操作考核试卷及答案
- 2026年成考专升本《政治》基础练习模拟题及答案
- 孤独症谱系障碍儿童干预康复指南(2026年版)
- 自考 14653 证券投资理论与实务重点精简版
- 热力管道腐蚀检测评估报告
- 2026秋改版人教版三年级上册道德与法治全册教案
- 腹腔镜胆囊切除术中胆管及血管损伤防范中国专家共识2024版解读
- 列代数式专项练习60题(有答案)
- 合同法与商事合同的实务案例解析与讨论
- 坐标纸(A4纸直接打印就可用)
- 物理化学第九章-胶体化学
评论
0/150
提交评论