工程技术大学研究生c语言真题100道及答案_第1页
工程技术大学研究生c语言真题100道及答案_第2页
工程技术大学研究生c语言真题100道及答案_第3页
工程技术大学研究生c语言真题100道及答案_第4页
工程技术大学研究生c语言真题100道及答案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

工程技术大学研究生c语言真题100道及答案1.在C语言中,以下哪个是合法的标识符?A.2variableB.variable@2C._variable2D.variable-2答案:C解析:标识符只能由字母、数字和下划线组成,且不能以数字开头。A以数字开头,B含非法字符@,D含非法字符-。2.若有定义inta=5;,执行语句a+=a-=a*a;后,a的值是?A.25B.-40C.40D.-25答案:B解析:先算a*a为25,再算a-=25,此时a为-20,最后算a+=-20,结果a为-40。3.以下哪个是C语言中正确的字符常量?A.'abc'B."a"C.'\101'D.'\"'答案:C解析:字符常量是用单引号括起来的单个字符或转义字符。A包含多个字符,B是字符串常量,D单引号内的\"语法错误。4.若有定义intarr[3][4];,则对数组元素arr[1][2]的正确引用是?A.*(arr+1)+2B.*(*(arr+1)+2)C.(*(arr+1))[2]D.以上都不对答案:B解析:arr是二维数组名,arr+1指向第二行,*(arr+1)取第二行首地址,*(arr+1)+2指向第二行第三列元素地址,*(*(arr+1)+2)取该元素值。5.下面关于C语言函数的说法,错误的是?A.函数可以有返回值B.函数可以没有参数C.函数必须有函数体D.函数名可以与变量名相同答案:D解析:函数名不能与变量名相同,会造成命名冲突。A、B、C都是函数的基本特性。6.若有定义int*p;,要使p指向一个整型变量a,正确的赋值语句是?A.p=&a;B.*p=&a;C.p=a;D.*p=a;答案:A解析:指针p要指向变量a,需要将a的地址赋给p,即p=&a。7.以下哪个循环可以正确输出1到10的整数?A.for(inti=1;i<=10;i--)B.while(inti=1;i<=10;i++)C.for(inti=1;i<=10;i++)D.do{i++;}while(i<=10);答案:C解析:A的循环条件i--会使i越来越小,无法输出1到10;B中while语法错误;D中i未初始化。8.在C语言中,以下哪种数据类型所占内存最大?A.charB.intC.floatD.double答案:D解析:一般情况下,char占1字节,int通常占4字节,float占4字节,double占8字节。9.若有定义charstr[]="hello";,则str数组的长度是?A.5B.6C.4D.不确定答案:B解析:字符串"hello"包含5个字符,但字符串以'\0'结尾,所以数组长度为6。10.以下关于C语言中结构体的说法,正确的是?A.结构体成员只能是基本数据类型B.结构体不能嵌套定义C.结构体变量不能作为函数参数D.结构体可以定义自己的类型名答案:D解析:可以使用typedef为结构体定义自己的类型名。结构体成员可以是各种类型,能嵌套定义,结构体变量也能作为函数参数。11.若有定义inta=3,b=4;,则表达式a>b?a:b的值是?A.3B.4C.7D.0答案:B解析:条件a>b不成立,所以取冒号后面的值b,即4。12.以下哪个运算符的优先级最高?A.&&B.||C.!D.==答案:C解析:逻辑非运算符!优先级高于逻辑与&&、逻辑或||和等于==。13.若有定义inta[5]={1,2,3,4,5};,则a[3]的值是?A.1B.2C.3D.4答案:D解析:数组下标从0开始,a[3]是数组的第4个元素,值为4。14.以下关于C语言文件操作的说法,错误的是?A.fopen函数用于打开文件B.fclose函数用于关闭文件C.fread函数用于向文件写入数据D.fscanf函数可以从文件中读取格式化数据答案:C解析:fread函数用于从文件中读取数据,而不是写入。15.若有定义char*s="world";,则s指向的是?A.字符'w'B.字符串"world"的首地址C.字符数组D.以上都不对答案:B解析:s是一个字符指针,指向字符串"world"的首地址。16.以下哪个函数可以用于字符串比较?A.strcpyB.strlenC.strcatD.strcmp答案:D解析:strcmp函数用于比较两个字符串。strcpy是复制字符串,strlen是求字符串长度,strcat是连接字符串。17.若有定义inta=10;,则执行语句a<<=2;后,a的值是?A.20B.40C.12D.10答案:B解析:左移运算符<<,a<<=2相当于a=a*2*2,即10*4=40。18.以下关于C语言中函数递归的说法,正确的是?A.递归函数不能有返回值B.递归函数不需要终止条件C.递归函数调用自身D.递归函数效率一定比非递归函数高答案:C解析:递归函数的特点是调用自身。递归函数可以有返回值,需要终止条件,且效率不一定比非递归函数高。19.若有定义intarr[10];,则对数组元素的引用正确的是?A.arr[10]B.arr[-1]C.arr[0]D.arr[1.5]答案:C解析:数组下标从0开始,长度为10的数组有效下标是0-9。A越界,B下标为负,D下标不能为浮点数。20.以下哪个是C语言中正确的注释方式?A.//这是注释B./*这是注释*/C.#这是注释D.A和B都对答案:D解析:C语言中可以使用//进行单行注释,也可以使用/**/进行多行注释。21.若有定义inta=5,b=3;,则表达式a/b的值是?A.1.666667B.1C.2D.1.5答案:B解析:两个整数相除,结果取整,5/3结果为1。22.以下关于C语言中全局变量的说法,错误的是?A.全局变量在程序的整个生命周期内都存在B.全局变量可以在函数内部和外部定义C.全局变量可以被多个函数访问D.全局变量的作用域是整个文件答案:B解析:全局变量只能在函数外部定义。23.若有定义int*p,a=10;,要使p指向a,正确的操作是?A.p=a;B.*p=a;C.p=&a;D.*p=&a;答案:C解析:指针p要指向变量a,需将a的地址赋给p,即p=&a。24.以下哪个循环会陷入死循环?A.for(inti=1;i>0;i++)B.for(inti=1;i<10;i++)C.while(i<10){i++;}D.do{i++;}while(i<10);答案:A解析:A中循环条件i>0,i不断自增,永远满足条件,会陷入死循环。25.在C语言中,以下哪种类型转换是隐式类型转换?A.(float)aB.a+(float)bC.a+b(a为int,b为float)D.(int)a答案:C解析:当不同类型数据进行运算时,会自动进行隐式类型转换,如a+b(a为int,b为float),a会隐式转换为float类型。26.若有定义charstr[20]="hello";,则strlen(str)的值是?A.5B.6C.20D.不确定答案:A解析:strlen函数返回字符串的实际长度,不包括'\0',"hello"长度为5。27.以下关于C语言中指针数组的说法,正确的是?A.指针数组的元素都是指针B.指针数组不能存储字符串C.指针数组的大小不能改变D.指针数组只能存储整数指针答案:A解析:指针数组的元素都是指针。可以用指针数组存储字符串,其大小在定义时确定,但可以通过动态内存分配改变,也能存储其他类型指针。28.若有定义inta=2,b=3;,则表达式(a<b)?a++:b++的值是?A.2B.3C.4D.5答案:A解析:条件a<b成立,取a的值2,然后a自增。29.以下哪个运算符是位运算符?A.&&B.||C.&D.==答案:C解析:&是按位与运算符,属于位运算符。&&是逻辑与,||是逻辑或,==是等于运算符。30.若有定义intarr[2][3]={{1,2,3},{4,5,6}};,则arr[1][1]的值是?A.4B.5C.6D.2答案:B解析:二维数组arr[1][1]是第二行第二列元素,值为5。31.以下关于C语言中函数参数传递的说法,正确的是?A.只能进行值传递B.只能进行地址传递C.可以进行值传递和地址传递D.以上都不对答案:C解析:C语言中函数参数传递可以是值传递,也可以是地址传递。32.若有定义char*s1="abc",*s2="def";,要将s2连接到s1后面,正确的做法是?A.strcat(s1,s2);B.strcpy(s1,s2);C.s1=s2;D.以上都不对答案:D解析:s1指向的字符串常量存储在只读内存区,不能使用strcat连接。strcpy是复制字符串,s1=s2只是让s1指向s2,不是连接。33.以下哪个函数可以用于动态分配内存?A.freeB.mallocC.strcpyD.strlen答案:B解析:malloc函数用于动态分配内存。free用于释放内存,strcpy用于复制字符串,strlen用于求字符串长度。34.若有定义inta=10;,则执行语句a|=2;后,a的值是?A.10B.12C.2D.8答案:B解析:按位或运算符|=,a|=2相当于a=a|2,10的二进制是1010,2的二进制是0010,按位或结果为1010|0010=1100,即12。35.以下关于C语言中枚举类型的说法,错误的是?A.枚举类型的元素是常量B.枚举类型的元素默认从0开始编号C.枚举类型的元素可以指定值D.枚举类型的元素可以在运行时改变值答案:D解析:枚举类型的元素是常量,在编译时确定值,运行时不能改变。36.若有定义intarr[5]={1,2,3};,则arr[4]的值是?A.1B.2C.3D.0答案:D解析:部分初始化数组,未初始化的元素自动赋值为0,所以arr[4]为0。37.以下关于C语言中条件编译的说法,正确的是?A.条件编译只能根据宏定义进行B.条件编译可以提高程序的可移植性C.条件编译在运行时进行D.条件编译只能用于注释代码答案:B解析:条件编译可以根据宏定义等进行,在编译时进行,能提高程序可移植性,不只是用于注释代码。38.若有定义inta=5,b=2;,则表达式a%b的值是?A.2B.1C.0D.2.5答案:B解析:%是取余运算符,5%2结果为1。39.以下哪个是C语言中正确的输入函数?A.printfB.putsC.scanfD.gets答案:C解析:scanf函数用于格式化输入。printf用于输出,puts用于输出字符串,gets由于存在安全问题已不推荐使用。40.若有定义int*p,arr[5]={1,2,3,4,5};,要使p指向arr数组的首元素,正确的赋值是?A.p=arr;B.p=&arr;C.*p=arr[0];D.p=*arr;答案:A解析:数组名代表数组首地址,p=arr使p指向arr数组首元素。41.以下关于C语言中函数声明的说法,错误的是?A.函数声明可以省略参数名B.函数声明必须在函数调用之前C.函数声明可以多次进行D.函数声明和函数定义必须完全一致答案:D解析:函数声明和函数定义参数名可以不同,只需参数类型和返回值类型一致。42.若有定义charstr[]="abc\0def";,则strlen(str)的值是?A.3B.7C.6D.0答案:A解析:strlen遇到'\0'就结束,所以长度为3。43.以下关于C语言中多维数组的说法,正确的是?A.多维数组在内存中是按行存储的B.多维数组的元素必须是相同类型C.多维数组的第一维大小可以省略D.以上都对答案:D解析:多维数组元素类型相同,在内存按行存储,定义时第一维大小可省略。44.若有定义inta=3,b=4;,则表达式a<b?a++:b++执行后,b的值是?A.4B.5C.3D.6答案:A解析:条件a<b成立,执行a++,b的值不变仍为4。45.以下哪个运算符是三目运算符?A.&&B.||C.?:D.==答案:C解析:?:是三目运算符,格式为条件?表达式1:表达式2。46.若有定义intarr[3][4];,则对数组元素arr[2][3]的另一种引用方式是?A.*(arr+2)+3B.*(*(arr+2)+3)C.(*(arr+2))[3]D.B和C都对答案:D解析:*(arr+2)指向第三行,*(arr+2)+3指向第三行第四列元素地址,*(*(arr+2)+3)取该元素值;(*(arr+2))[3]也是引用该元素。47.以下关于C语言中文件指针的说法,正确的是?A.文件指针指向文件在内存中的缓冲区。B.文件指针可以直接操作文件内容C.文件指针只能用于文本文件D.文件指针在文件关闭后仍可使用答案:A解析:文件指针指向文件在内存中的缓冲区,通过它对文件进行操作。文件指针不能直接操作文件内容,要借助相关函数;它可用于文本文件和二进制文件;文件关闭后文件指针不再有效。48.若有定义char*s="12345";,执行语句s+=2;后,*s的值是?A.'1'B.'2'C.'3'D.'4'答案:C解析:s是指针,s+=2使指针向后移动2个位置,指向字符'3',所以*s为'3'。49.以下哪个函数可以用于字符串复制?A.strcatB.strcmpC.strcpyD.strlen答案:C解析:strcpy函数用于字符串复制。strcat是连接字符串,strcmp是比较字符串,strlen是求字符串长度。50.若有定义inta=8;,则执行语句a>>=2;后,a的值是?A.2B.4C.8D.16答案:A解析:右移运算符>>=,a>>=2相当于a=a/2/2,8/4=2。51.以下关于C语言中递归函数的终止条件,说法正确的是?A.终止条件可有可无B.终止条件可以是多个C.终止条件必须是固定值D.终止条件只能在函数开头判断答案:B解析:递归函数必须有终止条件,可以有多个,不一定要是固定值,也不只能在函数开头判断。52.若有定义intarr[5]={0};,则数组元素arr[3]的值是?A.0B.1C.3D.不确定答案:A解析:数组部分初始化时,未明确初始化的元素自动初始化为0,所以arr[3]为0。53.以下关于C语言中结构体变量初始化的说法,错误的是?A.可以在定义时初始化B.可以部分初始化C.初始化时顺序必须和结构体成员定义顺序一致D.不能用另一个结构体变量初始化答案:D解析:结构体变量可以在定义时初始化,可部分初始化,初始化顺序通常和成员定义顺序一致,也可以用另一个结构体变量初始化。54.若有定义inta=5,b=3;,则表达式a^b的值是?A.2B.6C.8D.15答案:B解析:按位异或运算符^,5的二进制是101,3的二进制是011,101^011=0110,即6。55.以下关于C语言中静态变量的说法,正确的是?A.静态变量在函数调用结束后就释放B.静态变量只能在函数内部定义C.静态变量会自动初始化为0D.静态变量不能用于全局变量答案:C解析:静态变量不会在函数调用结束后释放,可在函数内部和外部定义,可作为全局静态变量,未显式初始化时会自动初始化为0。56.若有定义charstr[10]="abc";,则str[3]的值是?A.'a'B.'b'C.'c'D.'\0'答案:D解析:字符串"abc"存入数组后,后面自动添加'\0',所以str[3]为'\0'。57.以下关于C语言中指针和数组的关系,说法错误的是?A.数组名可以看作是一个常量指针B.指针可以指向数组元素C.可以通过指针访问数组元素D.指针和数组完全相同答案:D解析:数组名可看作常量指针,指针能指向数组元素并通过指针访问数组元素,但指针和数组有区别,如指针可改变指向,数组名不能。58.若有定义inta=2,b=3;,则表达式!(a<b)的值是?A.0B.1C.2D.3答案:A解析:a<b为真,值为1,!1为0。59.以下哪个函数可以用于获取字符串长度?A.strcpyB.strcatC.strlenD.strcmp答案:C解析:strlen函数用于获取字符串长度。strcpy是复制字符串,strcat是连接字符串,strcmp是比较字符串。60.若有定义int*p,a=10;,执行语句p=&a;后,*p的值是?A.10B.a的地址C.p的地址D.不确定答案:A解析:p指向a,*p表示取p所指向地址的值,即a的值10。61.以下关于C语言中函数嵌套调用的说法,正确的是?A.函数不能嵌套调用B.函数只能嵌套调用一次C.函数可以嵌套调用多次D.嵌套调用会导致程序出错答案:C解析:C语言中函数可以嵌套调用多次,这是合法的编程方式。62.若有定义charstr[]="abcdef";,则sizeof(str)的值是?A.6B.7C.8D.不确定答案:B解析:sizeof计算数组所占内存大小,字符串"abcdef"有6个字符,加上'\0'共7个字符,所以大小为7。63.以下关于C语言中二维数组初始化的说法,正确的是?A.必须全部初始化B.可以部分初始化C.只能按行初始化D.不能省略第一维大小答案:B解析:二维数组可以部分初始化,不一定要全部初始化,也可省略第一维大小,初始化方式不局限于按行。64.若有定义inta=5,b=2;,则表达式a/(float)b的值是?A.2B.2.5C.3D.不确定答案:B解析:将b强制转换为float类型,a/(float)b为5/2.0,结果是2.5。65.以下关于C语言中预处理指令的说法,错误的是?A.预处理指令以#开头B.预处理指令在编译前执行C.预处理指令可以嵌套使用D.预处理指令必须放在文件开头答案:D解析:预处理指令以#开头,在编译前执行,可以嵌套使用,但不一定要放在文件开头。66.若有定义intarr[5];,以下哪个赋值语句是错误的?A.arr[0]=1;B.arr={1,2,3,4,5};C.for(inti=0;i<5;i++)arr[i]=i;D.*(arr+2)=3;答案:B解析:数组名是常量指针,不能用花括号直接赋值。A、C、D的赋值方式都是正确的。67.以下关于C语言中逻辑运算符的说法,正确的是?A.&&和||具有短路特性B.!运算符优先级最低C.逻辑运算符只能用于整数类型D.逻辑运算符结果只有0和1答案:A解析:&&和||具有短路特性。!运算符优先级较高,逻辑运算符可用于能转换为布尔值的类型,结果通常为0和1。68.若有定义char*s1="abc",*s2="abc";,则strcmp(s1,s2)的值是?A.0B.1C.-1D.不确定答案:A解析:strcmp函数比较两个字符串,若相等返回0,s1和s2内容相同,所以返回0。69.以下哪个函数可以用于释放动态分配的内存?A.mallocB.callocC.reallocD.free答案:D解析:free函数用于释放动态分配的内存。malloc、calloc、realloc用于分配内存。70.若有定义inta=7;,则执行语句a&=3;后,a的值是?A.0B.1C.2D.3答案:D解析:按位与运算符&=,a&=3相当于a=a&3,7的二进制是111,3的二进制是011,111&011=011,即3。71.以下关于C语言中枚举类型元素值的说法,正确的是?A.元素值只能是整数B.元素值可以是浮点数C.元素值可以是字符D.元素值可以是任意类型答案:A解析:枚举类型元素值只能是整数。72.若有定义intarr[3][2]={{1,2},{3,4},{5,6}};,则arr[1][0]的值是?A.1B.3C.5D.2答案:B解析:二维数组arr[1][0]是第二行第一列元素,值为3。73.以下关于C语言中函数返回值的说法,错误的是?A.函数可以没有返回值B.函数返回值类型必须和定义时一致C.函数返回值可以是指针类型D.函数返回值不能是结构体类型答案:D解析:函数可以没有返回值,返回值类型要和定义一致,也可以是指针和结构体类型。74.若有定义charstr[]="hello";,则对字符串中字符'l'的正确引用是?A.str[2]B.str[3]C.以上都是D.以上都不是答案:C解析:字符串"hello"中,str[2]和str[3]都是字符'l'。75.以下关于C语言中指针运算的说法,正确的是?A.指针可以进行加法和减法运算B.指针可以进行乘法和除法运算C.指针运算结果一定是指针类型D.指针运算和整数运算完全相同答案:A解析:指针可以进行加法和减法运算,不能进行乘法和除法运算,运算结果不一定是指针类型,和整数运算有区别。76.若有定义inta=4,b=5;,则表达式a<b?a++:b++执行后,a的值是?A.4B.5C.6D.不确定答案:B解析:条件a<b成立,执行a++,a的值变为5。77.以下哪个运算符是赋值运算符?A.+B.-C.=D.*答案:C解析:=是赋值运算符,+、-、*是算术运算符。78.若有定义intarr[5];,要将数组元素全部初始化为0,正确的做法是?A.arr={0};B.for(inti=0;i<5;i++)arr[i]=0;C.memset(arr,0,sizeof(arr));D.B和C都对答案:D解析:可以用for循环逐个赋值为0,也可以用memset函数将数组内存区域全部置为0。79.以下关于C语言中文件操作模式的说法,正确的是?A."r"模式打开文件只能读不能写B."w"模式打开文件只能写不能读C."a"模式打开文件在文件末尾追加内容D.以上都对答案:D解析:"r"模式只读,"w"模式只写且会清空文件,"a"模式在文件末尾追加内容。80.若有定义char*s="world";,则*(s+2)的值是?A.'w'B.'o'C.'r'D.'l'答案:C解析:s+2指向字符串"world"中字符'r'的地址,*(s+2)取该字符,即'r'。81.以下关于C语言中字符串处理函数的说法,错误的是?A.strchr函数用于查找字符在字符串中第一次出现的位置B.strstr函数用于查找子字符串在字符串中第一次出现的位置C.strlwr函数用于将字符串转换为大写D.strupr函数用于将字符串转换为大写答案:C解析:strlwr函数用于将字符串转换为小写,strupr函数用于将字符串转换为大写,A、B说法正确。82.若有定义inta=9;,则执行语句a%=2;后,a的值是?A.0B.1C.2D.4答案:B解析:%=是取余赋值运算符,a%=2相当于a=a%2,9%2=1。83.以下关于C语言中函数参数的默认值,说法正确的是?A.C语言支持函数参数有默认值B.函数参数默认值可以在定义和声明时设置C.C语言不支持函数参数有默认值D.函数参数默认值只能在定义时设置答案:C解析:C语言不支持函数参数有默认值。84.若有定义intarr[2][3];,则数组所占内存大小为?A.6字节B.12字节C.24字节D.不确定答案:C解析:假设int占4字节,二维数组arr[2][3]有6个元素,所占内存大小为6*4=24字节。85.以下关于C语言中位运算的说法,错误的是?A.位运算比算术运算速度快B.位运算只能用于整数类型C.位运算可以实现乘除2的幂的操作D.位运算结果一定是整数类型答案:D解析:位运算通常比算术运算速度快,只能用于整数类型,可实现乘除2的幂的操作,结果不一定是整数类型,如右移可能会丢失精度。86.若有定义charstr[]="abc\0def";,则sizeof(str)的值是?A.3B.7C.8D.不确定答案:C解析:sizeof计算数组所占内存大小,字符串"abc\0def"包含7个字符和一个'\0',共8个字节。87.以下关于C语言中指针和函数的关系,说法正确的是?A.函数不能返回指针类型B.指针不能作为函数参数C.可以通过指针调用函数D.指针和函数没有关系答案:C解析:函数可以返回指针类型,指针能作为函数参数,也可以通过指针调用函数。88.若有定义inta=3,b=4;,则表达式!(a||b)的值是?A.0B.1C.3D.4答案:A解析:a||b为真,值为1,!1为0。89.以下哪个函数可以用于将字符串转换为整数?A.atoiB.itoaC.ftoaD.strcpy答案:A解析:atoi函数用于将字符串转换为整数。itoa用于将整数转换为字符串,ftoa不存在标准库函数,strcpy用于复制字符串。90.若有定义int*p,arr[5]={1,2,3,4,5};,执行语句p=arr+2;后,*p的值是?A.1B.2C.3D.4答案:C解析:arr+2指向数组arr的第3个元素,*p取该元素值,即3。91.以下关于C语言中函数重载的说法,正确的是?A.C语言支持函数重载B.函数重载是指函数名相同但参数不同C.C语言不支持函数重载D.函数重载可以提高程序的可读性答案:C解析:C语言不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论