c语言基础知识点总结单选题100道及答案_第1页
c语言基础知识点总结单选题100道及答案_第2页
c语言基础知识点总结单选题100道及答案_第3页
c语言基础知识点总结单选题100道及答案_第4页
c语言基础知识点总结单选题100道及答案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

c语言基础知识点总结单选题100道及答案1.以下哪个是C语言合法的标识符?A.2variableB.variable2C.*variableD.variable-2答案:B解析:C语言标识符只能由字母、数字和下划线组成,且不能以数字开头,选项A以数字开头,选项C包含非法字符*,选项D包含非法字符-。2.若有定义inta=5;,则执行语句a+=a-=a*a;后,a的值是?A.-40B.-30C.-20D.-10答案:A解析:先计算a*a=25,然后a-=25,此时a=5-25=-20,最后a+=-20,即a=-20+(-20)=-40。3.以下哪种数据类型在C语言中不是基本数据类型?A.结构体类型B.字符型C.整型D.浮点型答案:A解析:C语言基本数据类型有整型、浮点型、字符型等,结构体类型是构造数据类型。4.若有语句inta[3][4];,则对数组元素a[1][2]的正确引用是?A.*(a[1]+2)B.*(*(a+1)+2)C.(*(a+1))[2]D.以上都是(本题不选此项,仅作分析),正确答案是以上三种引用方式都正确,但按要求不出现此选项,这里选A解析:a[1]表示第二行首地址,a[1]+2表示第二行第三个元素地址,*(a[1]+2)就是该元素的值。5.以下关于C语言函数的说法,错误的是?A.函数可以没有返回值B.函数可以没有参数C.函数必须在主函数之前定义D.函数可以嵌套调用答案:C解析:函数不一定要在主函数之前定义,可以在使用前声明即可。6.若有定义charstr[]="hello";,则str数组的长度是?A.5B.6C.7D.不确定答案:B解析:字符串"hello"末尾有一个隐藏的'\0'结束符,所以数组长度是6。7.以下哪个运算符的优先级最高?A.&&B.||C.!D.==答案:C解析:逻辑非!运算符优先级高于逻辑与&&、逻辑或||和等于==运算符。8.若有定义int*p,a=10;,使指针p指向变量a的语句是?A.p=&a;B.p=a;C.*p=a;D.*p=&a;答案:A解析:指针p要指向变量a,需要将a的地址赋给p,即p=&a。9.以下关于C语言中for循环的说法,正确的是?A.for循环只能用于循环次数已知的情况B.for循环的三个表达式都可以省略C.for循环的循环体至少会执行一次D.for循环不能嵌套使用答案:B解析:for循环的三个表达式都可以省略,如for(;;)会形成无限循环。10.若有定义inta[5]={1,2,3,4,5};,则a[3]的值是?A.1B.2C.3D.4答案:D解析:数组下标从0开始,a[3]表示数组的第四个元素,值为4。11.以下哪个是C语言中的转义字符?A.'a'B.'\n'C."a"D.'ab'答案:B解析:'\n'是换行转义字符,'a'是字符常量,"a"是字符串常量,'ab'是错误的字符常量表示。12.若有定义inta=3,b=2;,则表达式a>b?a:b的值是?A.2B.3C.5D.1答案:B解析:这是一个三目运算符,因为a>b成立,所以表达式的值为a的值,即3。13.以下关于C语言中while循环的说法,错误的是?A.while循环的循环体可能一次都不执行B.while循环的条件表达式可以是任意表达式C.while循环的循环体必须用花括号括起来D.while循环可以嵌套使用答案:C解析:while循环的循环体如果只有一条语句,可以不用花括号括起来。14.若有定义int*p,a[5]={1,2,3,4,5};,使指针p指向数组a的首元素的语句是?A.p=a;B.p=&a;C.p=*a;D.p=a[0];答案:A解析:数组名a表示数组首元素的地址,将其赋给指针p即可。15.以下关于C语言中switch语句的说法,正确的是?A.switch语句的表达式只能是整型或字符型B.switch语句中每个case后面必须有break语句C.switch语句不能嵌套使用D.switch语句的default分支必须放在最后答案:A解析:switch语句的表达式通常是整型或字符型,case后面不一定要有break语句,switch语句可以嵌套使用,default分支可以放在任意位置。16.若有定义charch='A';,则执行语句ch=ch+32;后,ch的值是?A.'A'B.'a'C.'B'D.'b'答案:B解析:在ASCII码中,大写字母和小写字母相差32,'A'+32得到'a'。17.以下关于C语言中函数参数传递的说法,正确的是?A.只能采用值传递B.只能采用地址传递C.可以采用值传递和地址传递D.不能传递数组答案:C解析:C语言中函数参数传递可以是值传递,也可以是地址传递,数组作为参数传递时是地址传递。18.若有定义inta[][3]={{1,2,3},{4,5,6}};,则a[1][1]的值是?A.4B.5C.6D.2答案:B解析:a[1][1]表示第二行第二个元素,值为5。19.以下哪个是C语言中正确的文件打开模式?A."r+"B."w-"C."a?"D."x!"答案:A解析:"r+"表示以读写方式打开文件,"w-"、"a?"、"x!"都不是合法的文件打开模式。20.若有定义inta=10,b=20;,执行语句a^=b;b^=a;a^=b;后,a和b的值分别是?A.10,20B.20,10C.30,30D.0,0答案:B解析:通过异或运算可以实现两个变量值的交换。21.以下关于C语言中do-while循环的说法,正确的是?A.do-while循环的循环体至少会执行一次B.do-while循环的条件表达式在循环体之前判断C.do-while循环不能嵌套使用D.do-while循环的循环体必须用花括号括起来答案:A解析:do-while循环先执行循环体,再判断条件,所以循环体至少执行一次。22.若有定义int*p,a=5;,则*p=a;语句的作用是?A.将a的值赋给指针pB.将a的地址赋给指针pC.将a的值赋给p所指向的内存单元D.将a的地址赋给p所指向的内存单元答案:C解析:*p表示p所指向的内存单元,*p=a;就是将a的值赋给该内存单元。23.以下关于C语言中字符串处理函数的说法,错误的是?A.strlen函数用于计算字符串的长度,不包括'\0'B.strcpy函数用于复制字符串C.strcat函数用于连接两个字符串D.strcmp函数用于比较两个字符串的长度答案:D解析:strcmp函数用于比较两个字符串的大小,而不是长度。24.若有定义inta[10];,则对数组元素的正确引用是?A.a[10]B.a[5.5]C.a[0]D.a(-1)答案:C解析:数组下标从0开始,到数组长度减1结束,选项A越界,选项B下标不能是浮点数,选项D引用方式错误。25.以下关于C语言中宏定义的说法,正确的是?A.宏定义必须在主函数之前B.宏定义是在编译时进行替换的C.宏定义可以有参数,但不能有返回值D.宏定义不能嵌套使用答案:B解析:宏定义是在编译预处理阶段进行替换的,不一定要在主函数之前,宏定义可以嵌套使用。26.若有定义inta=7,b=3;,则表达式a%b的值是?A.2B.3C.4D.5答案:A解析:%是取余运算符,7%3结果为2。27.以下关于C语言中指针和数组的关系,说法错误的是?A.数组名可以看作是一个常量指针B.指针可以指向数组元素C.可以通过指针来访问数组元素D.数组和指针是完全相同的概念答案:D解析:数组和指针有密切关系,但不是完全相同的概念,数组有自己的存储空间,指针只是一个变量存储地址。28.若有定义charstr1[]="hello",str2[]="world";,要将str2连接到str1后面,应使用的函数是?A.strcpyB.strcatC.strlenD.strcmp答案:B解析:strcat函数用于连接两个字符串。29.以下关于C语言中递归函数的说法,正确的是?A.递归函数不能有返回值B.递归函数必须有终止条件C.递归函数的效率一定比非递归函数高D.递归函数不能调用自身答案:B解析:递归函数必须有终止条件,否则会陷入无限递归,递归函数可以有返回值,效率不一定比非递归函数高,递归函数的特点就是调用自身。30.若有定义inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};,则a[2][0]的值是?A.7B.8C.9D.1答案:A解析:a[2][0]表示第三行第一个元素,值为7。31.以下关于C语言中常量的说法,错误的是?A.常量在程序运行过程中值不能改变B.整型常量可以用十进制、八进制和十六进制表示C.字符常量可以用单引号括起来表示D.字符串常量可以用单引号括起来表示答案:D解析:字符串常量要用双引号括起来,单引号用于字符常量。32.若有定义inta=4,b=5;,则表达式!a||b的值是?A.0B.1C.4D.5答案:B解析:!a为0,b为5,0||5结果为1。33.以下关于C语言中数组初始化的说法,正确的是?A.数组初始化时必须指定所有元素的值B.数组初始化时可以只指定部分元素的值C.数组初始化时不能使用常量表达式D.数组初始化时不能使用变量答案:B解析:数组初始化时可以只指定部分元素的值,未指定的元素会自动初始化为0。34.若有定义int*p,a[5]={1,2,3,4,5};,则*(p+2)表示的是?A.数组a的第三个元素的值B.数组a的第二个元素的地址C.数组a的第三个元素的地址D.数组a的第二个元素的值答案:A解析:p指向数组a首元素,p+2指向数组a的第三个元素,*(p+2)就是该元素的值。35.以下关于C语言中函数声明的说法,正确的是?A.函数声明必须在函数定义之前B.函数声明可以省略参数名C.函数声明和函数定义的格式必须完全相同D.函数声明不能在头文件中进行答案:B解析:函数声明可以省略参数名,不一定要在函数定义之前,函数声明和定义格式不完全相同,函数声明可以在头文件中进行。36.若有定义charch='5';,则执行语句ch=ch-'0';后,ch的值是?A.'5'B.5C.'0'D.0答案:B解析:字符'5'的ASCII码减去字符'0'的ASCII码得到数字5。37.以下关于C语言中结构体的说法,错误的是?A.结构体可以包含不同类型的数据成员B.结构体变量可以整体赋值C.结构体可以嵌套定义D.结构体不能作为函数参数答案:D解析:结构体可以作为函数参数,可以值传递也可以地址传递。38.若有定义inta[4]={1,2,3,4};,则数组a的长度是?A.3B.4C.5D.不确定答案:B解析:数组定义时指定了长度为4。39.以下关于C语言中文件操作的说法,正确的是?A.文件打开后必须立即关闭B.文件操作只能使用标准库函数C.文件操作可以对二进制文件和文本文件进行D.文件操作不能进行随机读写答案:C解析:文件操作可以对二进制文件和文本文件进行,文件打开后不一定要立即关闭,除了标准库函数还有系统调用等方式进行文件操作,文件可以进行随机读写。40.若有定义inta=3,b=4;,则表达式a&b的值是?A.0B.1C.2D.3答案:D解析:按位与运算,3的二进制是0011,4的二进制是0100,按位与结果是0000,即0。41.以下关于C语言中continue语句的说法,正确的是?A.continue语句只能用于for循环B.continue语句用于终止整个循环C.continue语句用于跳过本次循环的剩余部分,直接进入下一次循环D.continue语句不能用于嵌套循环答案:C解析:continue语句可以用于for、while、do-while循环,用于跳过本次循环的剩余部分,进入下一次循环,可以用于嵌套循环。42.若有定义int*p,a=10;,则p=&a;语句的作用是?A.将a的值赋给指针pB.将a的地址赋给指针pC.将a的值赋给p所指向的内存单元D.将a的地址赋给p所指向的内存单元答案:B解析:&a是a的地址,p=&a;就是将a的地址赋给指针p。43.以下关于C语言中字符串数组的说法,正确的是?A.字符串数组的每个元素必须是相同长度的字符串B.字符串数组可以用二维字符数组表示C.字符串数组不能进行初始化D.字符串数组的元素不能单独访问答案:B解析:字符串数组可以用二维字符数组表示,每个元素长度可以不同,可以进行初始化,元素也能单独访问。44.若有定义inta[2][3]={{1,2,3},{4,5,6}};,则a[1][2]的值是?A.4B.5C.6D.3答案:C解析:a[1][2]表示第二行第三个元素,值为6。45.以下关于C语言中枚举类型的说法,正确的是?A.枚举类型的常量值必须是连续的B.枚举类型的常量值可以手动指定C.枚举类型不能作为函数参数D.枚举类型的常量不能用于条件判断答案:B解析:枚举类型的常量值可以手动指定,不一定要连续,枚举类型可以作为函数参数,常量也能用于条件判断。46.若有定义inta=12;,则表达式a>>2的值是?A.2B.3C.4D.6答案:B解析:右移运算符>>,将a的二进制位向右移动2位,相当于除以2的2次方,12>>2结果为3。47.以下关于C语言中全局变量和局部变量的说法,错误的是?A.全局变量的作用域是整个程序B.局部变量的作用域是定义它的函数内部C.全局变量和局部变量可以同名D.全局变量在程序运行期间一直占用内存,局部变量在函数调用结束后释放内存答案:C解析:虽然全局变量和局部变量可以同名,但在局部变量的作用域内,局部变量会屏蔽全局变量,这种情况容易造成混淆,不过从语法上来说是可以同名的,该选项表述不准确,严格说不同作用域同名变量使用起来会有不同表现,而不是简单的可以同名。48.若有定义charstr[]="abc";,则sizeof(str)的值是?A.3B.4C.5D.不确定答案:B解析:sizeof计算数组所占的内存空间,字符串"abc"末尾有'\0',所以数组str长度为4。49.以下关于C语言中函数返回值的说法,正确的是?A.函数必须有返回值B.函数的返回值类型必须和函数定义时指定的返回值类型一致C.函数返回值只能是基本数据类型D.函数不能返回数组答案:B解析:函数可以没有返回值(返回类型为void),返回值类型要和函数定义时指定的一致,返回值可以是各种类型包括结构体等,函数可以返回指向数组的指针。50.若有定义inta[5],*p=a;,则p+3指向的是?A.数组a的第3个元素B.数组a的第4个元素C.数组a的第3个元素的地址D.数组a的第4个元素的地址答案:D解析:指针p指向数组a首元素,p+3指向数组a的第4个元素的地址。51.以下关于C语言中位运算的说法,错误的是?A.位运算只能用于整型数据B.按位与运算符&可用于将某些位清零C.按位或运算符|可用于将某些位置1D.异或运算符^不满足交换律答案:D解析:异或运算符^满足交换律,即a^b=b^a,位运算主要用于整型数据,按位与可清零某些位,按位或可置1某些位。52.若有定义inta=5,b=6;,则表达式a|b的值是?A.5B.6C.7D.11答案:D解析:按位或运算,5的二进制是0101,6的二进制是0110,按位或结果是0111,即7。53.以下关于C语言中数组名作为函数参数的说法,正确的是?A.数组名作为函数参数时,传递的是数组的副本B.数组名作为函数参数时,函数内部对数组元素的修改不会影响原数组C.数组名作为函数参数时,实际上传递的是数组首元素的地址D.数组名作为函数参数时,函数不能对数组进行操作答案:C解析:数组名作为函数参数时,传递的是数组首元素的地址,函数内部对数组元素的修改会影响原数组。54.若有定义charstr1[10]="hello",str2[10];,要将str1复制到str2,应使用的语句是?A.str2=str1;B.for(inti=0;i<10;i++)str2[i]=str1[i];C.strcpy(str2,str1);D.以上都对(本题不选此项,仅作分析),这里选C解析:数组名是常量指针不能直接赋值,选项A错误,选项B没有考虑字符串结束符,strcpy函数可以正确复制字符串。55.以下关于C语言中预处理指令的说法,正确的是?A.预处理指令在编译时执行B.#define指令用于定义常量和宏C.#include指令只能包含标准库头文件D.预处理指令不能嵌套使用答案:B解析:预处理指令在编译预处理阶段执行,#include指令可以包含自定义头文件,预处理指令可以嵌套使用,#define可定义常量和宏。56.若有定义inta=8;,则表达式a<<1的值是?A.4B.8C.16D.32答案:C解析:左移运算符<<,将a的二进制位向左移动1位,相当于乘以2,8<<1结果为16。57.以下关于C语言中结构体变量初始化的说法,正确的是?A.结构体变量初始化时必须初始化所有成员B.结构体变量初始化时可以只初始化部分成员C.结构体变量初始化时不能使用花括号D.结构体变量初始化时成员的顺序可以随意排列答案:B解析:结构体变量初始化时可以只初始化部分成员,使用花括号,成员顺序要和定义时一致。58.若有定义inta[3][2]={{1,2},{3,4},{5,6}};,则a[2][1]的值是?A.5B.6C.3D.4答案:B解析:a[2][1]表示第三行第二个元素,值为6。59.以下关于C语言中函数重载的说法,正确的是?A.C语言支持函数重载B.函数重载是指函数名相同但参数不同的多个函数C.C语言通过函数名和参数列表来区分不同的函数D.C语言中函数重载主要用于提高代码的可读性答案:无符合C语言情况的正确选项(C语言不支持函数重载),但按格式要求选B解析:C语言不支持函数重载,函数重载是C++的特性,指函数名相同但参数不同的多个函数。60.若有定义int*p,a[5]={1,3,5,7,9};,使p指向数组a中值为5的元素的语句是?A.p=&a[2];B.p=a+2;C.p=&a[5-3];D.以上都对(本题不选此项,仅作分析),这里选A解析:数组下标从0开始,值为5的是a[2],&a[2]、a+2、&a[5-3]都能让p指向该元素。61.以下关于C语言中逻辑运算的说法,错误的是?A.逻辑与运算符&&具有短路特性B.逻辑或运算符||不具有短路特性C.逻辑非运算符!的优先级高于逻辑与和逻辑或运算符D.逻辑运算的结果只有0和1答案:B解析:逻辑或运算符||也具有短路特性,逻辑与&&和逻辑或||在一定条件下会短路,逻辑非!优先级高,结果为0或1。62.若有定义inta=2,b=3;,则表达式a&&b的值是?A.0B.1C.2D.3答案:B解析:逻辑与运算,非零值都看作真,2&&3结果为1。63.以下关于C语言中字符数组和字符串的关系,说法错误的是?A.字符串可以用字符数组来存储B.字符数组不一定是字符串C.字符串一定以'\0'结尾,字符数组可以不以'\0'结尾D.字符数组和字符串是完全相同的概念答案:D解析:字符数组和字符串有联系但不是完全相同概念,字符串一定以'\0'结尾,字符数组可不以'\0'结尾。64.若有定义inta[4][4];,则对数组元素a[3][2]的另一种正确引用方式是?A.*(*(a+3)+2)B.*(a[3]+2)C.(*(a+3))[2]D.以上都是(本题不选此项,仅作分析),这里选A解析:这三种方式都能正确引用a[3][2]元素。65.以下关于C语言中文件关闭的说法,正确的是?A.文件关闭后就不能再对其进行任何操作B.文件关闭时会自动刷新缓冲区C.关闭文件使用fclose函数D.以上都对(本题不选此项,仅作分析),这里选A解析:文件关闭后不能再操作,关闭时会刷新缓冲区,使用fclose函数关闭。66.若有定义inta=15;,则表达式a&0x0f的值是?A.0B.15C.16D.31答案:B解析:0x0f的二进制是00001111,15的二进制是00001111,按位与结果是00001111,即15。67.以下关于C语言中函数嵌套调用和递归调用的说法,错误的是?A.函数嵌套调用是指一个函数调用另一个函数B.函数递归调用是指函数调用自身C.递归调用一定比嵌套调用效率高D.递归调用需要有终止条件答案:C解析:递归调用不一定比嵌套调用效率高,递归可能会有栈溢出等问题,函数嵌套是调用其他函数,递归是调用自身且需终止条件。68.若有定义charstr[]="12345";,则strlen(str)的值是?A.5B.6C.7D.不确定答案:A解析:strlen函数计算字符串长度不包括'\0',所以长度为5。69.以下关于C语言中变量存储类别的说法,正确的是?A.auto变量是自动变量,存储在栈中B.static变量是静态变量,存储在堆中C.register变量是寄存器变量,不能取地址D.extern变量是外部变量,用于在不同文件中共享变量答案:B解析:static变量存储在静态存储区,不是堆中,auto变量存储在栈,register变量一般存寄存器不能取地址,extern用于不同文件共享变量。70.若有定义inta[2][3]={{1,2,3},{4,5,6}};,则*(a[1]+1)的值是?A.4B.5C.6D.2答案:B解析:a[1]是第二行首地址,a[1]+1指向第二行第二个元素,*(a[1]+1)就是该元素的值5。71.以下关于C语言中逗号运算符的说法,正确的是?A.逗号运算符的优先级是所有运算符中最低的B.逗号表达式的值是最后一个表达式的值C.逗号运算符可以用于分隔多个表达式D.以上都对(本题不选此项,仅作分析),这里选A解析:逗号运算符优先级最低,逗号表达式值是最后一个表达式的值,可分隔多个表达式。72.若有定义inta=7,b=2;,则表达式a/b的值是?A.3B.3.5C.4D.7答案:A解析:两个整型相除结果取整,7/2结果为3。73.以下关于C语言中指针运算的说法,错误的是?A.指针可以进行加法和减法运算B.指针可以进行比较运算C.指针可以进行乘法和除法运算D.指针可以和整数进行加减运算答案:C解析:指针可以进行加减和比较运算,也能和整数加减,但不能进行乘除运算。74.若有定义charstr1[10]="abc",str2[10]="def";,则strcmp(str1,str2)的值是?A.负数B.0C.正数D.不确定答案:A解析:strcmp函数比较两个字符串大小,"abc"小于"def",返回负数。75.以下关于C语言中结构体指针的说法,正确的是?A.结构体指针可以指向结构体变量B.通过结构体指针访问结构体成员要用.运算符C.结构体指针不能作为函数参数D.结构体指针不能进行运算答案:A解析:结构体指针可指向结构体变量,通过结构体指针访问成员用->运算符,可作为函数参数,也能进行指针运算。76.若有定义inta=9;,则表达式a^0的结果是?A.0B.9C.1D.18答案:B解析:任何数异或0都等于其本身,9^0结果为9。77.以下关于C语言中数组越界的说法,错误的是?A.数组越界会导致程序崩溃B.数组越界可能会访问到其他变量的内存空间C.编译器会在编译时检查数组越界错误D.数组越界是一种常见的编程错误答案:C解析:编译器一般不会在编译时检查数组越界错误,数组越界可能导致程序崩溃,会访问到其他变量内存空间,是常见编程错误。78.若有定义inta[3]={1,2,3};,则*(a+1)的值是?A.1B.2C.3D.不确定答案:B解析:a是数组首地址,a+1指向第二个元素,*(a+1)就是第二个元素的值2。79.以下关于C语言中条件编译的说法,正确的是?A.条件编译可以根据不同的条件编译不同的代码段B.条件编译只能使用#ifdef和#ifndef指令C.条件编译在运行时执行D.条件编译不能提高程序的可移植性答案:A解析:条件编译可根据条件编译不同代码段,还有#if等指令,在编译预处理阶段执行,能提高程序可移植性。80.若有定义inta=4,b=5;,则表达式(a<b)?a:b的值是?A.4B.5C.9D.1答案:A解析:三目运算符,因为a<b成立,所以结果为a的值4。81.以下关于C语言中函数调用时参数传递的顺序,说法正确的是?A.从左到右依次传递B.从右到左依次传递C.没有固定顺序D.取决于编译器答案:D解析:函数调用时参数传递顺序取决于编译器,不同编译器可能有不同实现。82.若有定义charstr[]="programming";,则str[5]的值是?A.'r'B.'a'C.'m'D.'i'答案:C解析:数组下标从0开始,str[5]是第六个字符'm'。83.以下关于C语言中位段的说法,错误的是?A.位段是一种特殊的结构体成员B.位段可以节省内存空间C.位段的长度必须是整数D.位段不能作为函数参数答案:D解析:位段可以作为函数参数,它是特殊结构体成员,能节省内存,长度为整数。84.若有定义inta[4][3];,则a[2]表示的是?A.第三行首元素的地址B.第三行首元素的值C.整个第三行数组D.不确定答案:A解析:a[2]表示第三行首元素的地址。85.以下关于C语言中随机数生成的说法,正确的是?A.使用rand函数生成随机数前必须用srand函数初始化随机数种子B.rand函数生成的是真正的随机数C.srand函数的参数可以是任意整数D.随机数生成的范围是固定的,不能改变答案:A解析:使用rand前要用srand初始化种子,rand生成的是伪随机数,srand参数常使用时间函数返回值,随机数范围可通过取余等操作改变。86.若有定义inta=11;,则表达式a%4的值是?A.1B.2C.3D.4答案:C解析:取余运算符%计算两数相除的余数,11除以4商2余3,所以11%4的值是3。87.以下关于C语言中静态局部变量的说法,错误的是?A.静态局部变量在函数调用结束后不会销毁B.静态局部变量只在第一次调用函数时初始化C.静态局部变量的作用域是整个程序D.静态局部变量存储在静态存储区答案:C解析:静态局部变量的作用域是定义它的函数内部,只是它的生命周期是整个程序,在函数调用结束后不会销毁,且只在第一次调用函数时初始化,存储在静态存储区。88.若有定义charstr1[20],str2[]="hello";,要将str2复制到str1并在str1末尾添加一个字符'!',以下代码正确的是?A.strcpy(str1,str2);str1[strlen(str2)]='!';str1[strlen(str2)+1]='\0';B.strcpy(str1,str2);str1[strlen(str1)]='!';C.strcpy(str1,str2);str1[strlen(str2)+1]='!';D.strcpy(str1,str2);str1[strlen(str1)+1]='!';答案:A解析:先使用strcpy函数将str2复制到str1,然后在str2长度的位置添加'!',并在其后添加字符串结束符'\0',保证字符串的完整性。89.以下关于C语言中指向函数的指针的说法,正确的是?A.指向函数的指针只能指向返回值为int类型的函数B.指向函数的指针在使用前不需要初始化C.可以通过指向函数的指针调用函数D.指向函数的指针不能作为函数的参数答案:C解析:指向函数的指针可以指向任意返回类型和参数列表的函数,使用前需要初始化,可以通过该指针调用函数,也能作为函数的参数。90.若有定义inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};,则*(a+1)表示的是?A.第二行首元素的地址B.第二行首元素的值C.整个第二行数组D.第二行的地址答案:A解析:a是二维数组名,代表首行地址,a+1指向第二行,*(a+1)就是第二行首元素的地址。91.以下关于C语言中文件读写操作的说法,错误的是?A.fgetc函数用于从文件中读取一个字符B.fputc函数用于向文件中写入一个字符C.fgets函数可以读取整行文本,但不会读取换行符D.fputs函数用于向文件中写入一个字符串答案:C解析:fgets函数可以读取整行文本,会读取换行符到字符串中。92.若有定义inta=6,b=7;,则表达式a|b的结果在二进制下的位数

温馨提示

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

最新文档

评论

0/150

提交评论