版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE209C语言程序设计基础考试题库(含答案)一、单选题1.在一个以h为头的单循环链表中,p指针指向链尾的条件是()A、p.next=hB、p.next=NULLC、p.next.next=hD、p.data=-1答案:A解析:循环链表的末尾结点指针指向头结点2.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf(“%d,%d\n”,k,m);}程序运行的结果是()。A、00B、01C、10D、11答案:C解析:判断k时只要两个表达式有一个为真其就为1,n=b>a结果为1,所以k值为1,m=a<b结果为0,所以k和m的值为1和0。3.若有定义inta=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的结果为()。A、4B、3C、2D、1答案:A解析:a<b?a:c<d?a:d是一个嵌套的三目运算a<b?a:(c<d?a:d),c<d为真右边括号里返回值为1,则表达式变为a<b?a:1,此表达式返回值为a,值为1。4.int类型变量在内存中占用四个字节,其有定义:intx[10]={0,2,4};那么数组x在内存中所占字节数是()。A、3B、10C、12D、40答案:D解析:int型变量占四个字节,长度为10的int型数组占用内存为10*4=40。5.关于文件,下列描述中错误的是()A、二进制文件打开后可以先读文件的末尾,而顺序文件不可以B、在程序结束时,应当用fclose()函数关闭已打开的文件C、在利用fread()函数从二进制文件中读取数据时,可以用数组名给数组中的所有元素读入数据D、不可以用FILE定义指向二进制文件指针答案:D解析:文本文件和二进制文件的文件指针都是用FILE定义的6.关于C语言中的栈,下列描述中正确的是()A、顺序存储的线性结构B、链式存储的非线性结构C、限制存取点的线性结构D、限制存储点的非线性结构答案:D解析:栈是线性结构,它可以有不同的实现结构,且是限制存储点的。7.下列语言中不属于计算机语言的三大类的是()。A、机器语言B、汇编语言C、脚本语言D、高级语言答案:C解析:计算机语言有很多种类,根据功能和实现方式的不同大致可分为三大类,即机器语言、汇编语言和高级语言。8.在执行intarr[][3]={1,2,3,4,5,6}:语句后,arr[1][0]的值为()A、4B、1C、2D、5答案:D解析:该二维数组表示的是2行3列的一个二维数组,arr[1][0]表示的是第2行第1列上的元素,即4。9.C语言可执行程序的开始执行点是A、程序中第一条可执行语句B、程序中第一个函数C、程序中的main函数D、包含文件的第一个函数答案:C解析:程序总是从main函数开始执行10.C语言中决定函数返回值的类型的是()。A、return语句中的表达式类型B、调用函数的主调函数类型C、调用函数时临时D、定义函数时所指定的函数类型答案:D解析:函数的返回值取决于定义函数时指定的返回值类型11.在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量()A、只在该复合语句中有效,在该复合语句外无效B、在该函数中任何位置都有效C、在本程序的原文件范围内均有效D、此定义方法错误,其变量为非法变量答案:D解析:1、2与3错:函数复合语句中定义的变量在该复合语句中引用;但如果函数含有该变量,则在函数中可以引用该变量4、对:在C++中在复合语句中定义变量为合法,但在C语言中是非法的12.下面程序的输出结果是()。voidmain(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}A、3B、4C、1D、2答案:A解析:首先p指向数组a的首地址,也就是a[0]的地址;然后p+2指向a[2]的地址,那么*(p+2)获取的是a[2]的值。13.以下选项中,与k=n++;完全等价的语句是A、k=n;n=n+1;B、n=n+1;k=n;C、k=++n;D、k+=n+1;答案:A解析:如果运算符放在操作符的后面则是先进行赋值运算,再进行自增或自减。14.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。A、缩排位置相同的ifB、在其之前未配对的ifC、在其之前尚未配对的最近的ifD、同一行上的if答案:C解析:C语言规定else总是与在其之前尚未配对的最近的if组成配对关系。15.已知整型变量a=13和b=6,则a&b和a^b的值分别是()。A、413B、411C、111D、113答案:B解析:a的值转换成二进制数是1101,b的值转换成二进制数是110,a&b的值是100,转换成十进制数是4;a^b的值是1011,转换成十进制数是11。16.在宏定义A、单精度数B、双精度数C、常量D、字符串答案:D解析:宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个字符串。这样,在源程序被编译器处理之前,预处理器会将标识符替换成所定义的字符串。17.设整型变量m,n,a,b,c,d均为1,执行(m=a>b)&&(n=c>d)后,m,n的值是。A、0,0B、0,1C、1,0D、1,1答案:B解析:m=a>b结果为假,则m的值为0,n=c>d结果为假,n的值为0。18.运行以下程序后,如果从键盘上输入china#,那么输出结果为()。#include<stdio.h>voidmain(){intv1=0,v2=0;charch;while((ch=getchar())!='#')switch(ch){case'a':case'h':default:v1++;case'0':v2++;}printf("%d,%d\n",v1,v2);}A、2,0B、5,0C、5,5D、2,5答案:C解析:输入“c”时,运行default和case'0'的代码;输入“h”时,运行case'h'、default和case'0'的代码;输入“i”时,运行default和case'0'的代码;输入“n”时,运行default和case'0'的代码;输入“a”时,运行case'a'、case'h'、default和case'0'的代码。19.以下叙述不正确的是A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个main函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面答案:D20.若有以下定义,则正确的语句是()。uniondata{inti;charc;floatf;}a;intn;A、c=5;B、a={2,'a',1.2};C、printf("%d\n",a);D、n=a;答案:C21.关于字符型变量的定义,下列选项正确的是()。A、charch=a;B、charch='a';C、charch="a";D、charch=\a;答案:B解析:字符型变量的值要用一对英文半角格式的单引号('')把字符括起来。22.下列标识符,不合法的是()。A、abcB、_dC、123D、e1答案:C解析:123不是合法的标识符,标识符不能以数字开头。23.下列关于指针说法的选项中,正确的是()A、指针是用来存储变量值的类型B、指针一旦定义就不能再指向别的变量C、指针当中存储的是变量的内存地址D、指针一旦定义必须要指向某一个变量答案:C解析:指针中存储的不是变量本身的值,而是变量的内存地址24.当全局变量与局部变量重名时,那么在调用时()A、局部变量会被屏蔽B、全局变量会被屏蔽C、都不会调用,系统会报错D、会调用两次,先调用局部变量,再调用全局变量答案:B解析:当局部变量与全局变量重名时,全局变量会被屏蔽。25.C语言提供的合法的数据类型关键字是______?A、DoubleB、floatC、integerD、Char答案:B解析:A和D中第一个字母大写,不正确,选项C是PASCAL中的整型关键字,不是C的关键字。26.关于二维数组,下列选项能正确定义并赋初值的是()A、intn=5,b[n][n];B、inta[1][2]={{1},{3}};C、intc[2][]={{1,2},{3,4}};D、inta[3][2]={{1,2},{3,4}};答案:D解析:1错:数组下标中必须含有常量;2错:初始项值太多;3错:列下标不可以省略;27.若有定义:charstr1[10]="aaaaaaa";charstr2[10]="bbbbb";将字符串str2连接到str1,则下列描述中正确的是()A、strcat(str1,str2)可以将字符串str2连接到str1中B、strncat(str1,str2,strlen(str2))可以将字符串str2连接到str1中C、strncat(str1,str2,2)可以将字符串str2的前两个字符连接到str1中D、strncat(str1,str2,4)可以将字符串str2的前四个字符连接到str1中答案:C解析:连接字符串要考虑内存溢出问题28.若有定义和语句:chars[10];s="abcd";printf("%s\n",s);那么结果是(以下u代表空格)()。A、输出abcdB、输出aC、输出abcduuuuuD、编译不通过答案:D解析:字符数组不能直接赋入字符串,只能在初始化时赋入字符串。29.下述共同体变量x所占用内存字节数为()。unionexp{inti;floatj;doublek;}x;A、16个B、12个C、8个D、随机而定答案:C解析:共用体占内存大小是根据其成员最大占内存大小来决定的。30.C语言中,运算对象必须是整型数的运算符是()。A、%B、/C、+和-D、*答案:A解析:取模运算的操作对象必须是整数。31.若有定义:structperson{charname[9];intage;};structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Andam",16};则下列选项中能输出M的语句是()A、printf("%c\n",class[3].name);B、printf("%c\n",class[3].name[1]);C、printf("%c\n",class[2].name[1]);D、printf("%c\n",class[2].name[0]);答案:D解析:class[2]找到{"Mary",18}这个结构体元素;.name访问结构体中的成员;name[0]是name数组中的第一个元素,即M字符。32.在C程序中,可把整型数以二进制形式存放到文件中的函数是()A、fprintf()函数B、fread()函数C、fwrite()函数D、fputc()函数答案:A解析:fprintf()函数可以格式化字符串并打印到文件里。33.关于数组的定义与初始化,下列哪一项是错误的()A、intarr[5]={1,2,3,4,5};B、intarr[]={1,2,3,4,5};C、intarr[5]={1,2,3};D、intarr[5]={1,2,3,4,5,6};答案:D解析:选项4初始化值大于数组的大小。34.C语言规定,程序中各函数之间()。A、既允许直接递归调用也允许间接递归调用B、不允许直接递归调用也不允许间接递归调用C、允许直接递归调用不允许间接递归调用D、不允许直接递归调用允许间接递归调用答案:A解析:各程序间既可以直接调用也可以间接调用。35.const可以修饰指针与变量,下列描述中错误的是()A、常量指针的作用是使当前指针所指向变量的值在程序运行时不能被修改;B、指针常量其实就是一个常量,该指针存放的地址不能被改变;C、指向常量的常指针就是指针所指向的地址不能被改变,且所指向地址中的值也不能被改变;D、const限定符不能同时修饰指针与变量答案:D解析:指向常量的常指针就是const限定符同时修饰指针与变量36.关于二进制的说法中,正确的是()A、所有的信息只能用二进制代码来表示B、计算机一般都使用二进制代码,用它的某种信息编码方式来表示信息C、ASCII是计算机用来表示文字符号的唯一一种二进制代码D、汉字在计算机内使用汉字国标码来表示,不使用二进制编码答案:B解析:计算机不只是能用二进制,还有八进制、十进制、十六进制。37.请选出合法的C语言赋值语句。()A、a=b=58B、i++;C、a=58,b=58D、k=int(a+b);答案:B解析:选项1和3缺少符号“;”,选项4中int的调用方式错误。38.请阅读下面的程序,选择正确的输出结果。()voidmain(){printf("%d",null);}A、0B、变量无定义C、-1D、1答案:B解析:表示空的常量是NULL,而不是null。39.若有定义,int*f();则下列描述中正确的是()A、一个用于指向整型数据的指针变量B、一个用于指向一维数组的指针C、一个用于指向函数的指针变量D、一个返回值为指针型的函数名答案:D解析:nt(*f)()是一个指向函数的指针,int*f()是一个返回值类型为指针的函数。40.设有如下定义:structsk{inta;floatb;}data,*p;若有p=&data;则对data中成员a的引用正确的是()A、(*p).data.aB、(*p).aC、p->data.aD、p.data.a答案:B解析:p是指向结构体的指针,用指针引用结构体成员有两种格式:p->成员、(*p).成员41.C语言中可处理的文件类型是()A、文本文件和数据文件B、文本文件和二进制文件C、数据文件和二进制文件D、数据代码文件答案:B42.以下程序的输出结果是()。A、abcdegB、bcdeC、ABCDD、EE、BCDF、E答案:D解析:space()函数的作用是将字符串str中的空格和字符“a”去除,并将剩余的字符转换成大写字母。43.假设x、y、z和k都是int型变量,那么执行表达式:x=(y=4,z=16,k=32)后,x的值为()。A、4B、16C、32D、52答案:C解析:这是一个逗号表达式,返回最后一个表达式的值,即k的值。44.下面程序中,运行结果为“1,2”的是()A、#include<stdio.h>intmain(){inta=1;intb=2;printf("%d%d\n",a,b);return0;}B、#include<stdio.h>intmain(){inta=1;intb=2;printf("%d,"a);printf("%d\n",b);return0;}C、#include<stdio.h>intmain(){inta=1,b=2;printf("%d,,%d\n",a,b);return0;}D、#include<stdio.h>intmain(){inta=1,a=b=2;printf("%d,%d\n",a,b);return0;}答案:B解析:A选项ab中间没有逗号只有空格。C选项有两个逗号。D选项a=b=2之后a的值也是2了,所以输出2,2。45.在C语言中,关于变量的作用域,下列描述中错误的是()A、局部变量只在整个函数的运行周期中有效B、全局变量的作用域为整个程序的运行周期C、当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量D、全局变量会覆盖掉所有与它重名的局部变量答案:D解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉46.关于C语言中print()函数与scanf()函数,下列描述中正确的是()A、printf()函数可以向任何地方输出数据B、printf()只向控制台输出数据C、scanf()只能输入英文字母和数字D、scanf()函数可以识别输入的空格答案:B解析:printf()是向控制台输出的函数47.要定义一个字符串,下列选项中错误的是()A、chars[5]="hello";B、chars[]="hello";C、char*s="hello";D、chars[]={"h","e","l","l","o"};答案:D解析:定义字符数组,字符元素要用单引号括起来。48.下列关于八进制与十六进制的描述中,错误的是()。A、八进制是一种逢八进一的机制B、八进制由0-8这此符号来描述C、十六进制是一种逢十六进一的机制D、十六进制由0-9、A-F这些符号来描述答案:B解析:八进制是由0-7这八个符号来描述的。49.请读程序:voidmain(){union{intk;chari[2];}*s,a;s=&a;s->i[0]=0x39;s->i[1]=0x38;printf("%x\n",s->k);}则上面程序的输出结果是()。A、3839B、3938C、380039D、390038答案:A解析:由于s->i[0]和s->i[1]都是char类型,各占1个字节,所以选项3和4首先排除。因为一般计算机是小端模式,低位在低字节,高位在高字节,所以s->i[0]的值在低位,s->i[1]的值在高位。50.C语言中,fclose()函数在表示关闭不成功时返回()A、0B、-1C、EOD、FE、非零值答案:D51.定义一个字符型变量,下列选项中正确的是()。A、charc='97'B、charc="97"C、charc=97D、charc=c答案:C解析:定义字符型变量,其值要用一对英文半角格式的单引号('')引起来,或者直接赋入字符的ASCII码。52.下列选项中,哪个函数可以将数据以二进制形式存放到文件中()A、fprintf()B、fread()C、fwrite()D、fputc()答案:C解析:fwrite()函数是以二进制形式写入文件53.若有以下说明和定义:voidfun(int*c){}voidmain(){int(*a)()=fun,*b(),w[10],c;}在必要的赋值之后,对fun函数的正确调用语句是()。A、a=a(w);B、(*a)(&c);C、b=*b(w);D、fun(b);答案:B解析:指针函数的调用;54.下列选项中,关于main()函数叙述不正确的是()A、一个完整的C语言程序中,有且只能有一个main()函数B、main()函数是程序的主入口,程序总是从main()函数开始执行C、如果没有声明main()函数,程序将从第1行开始执行D、main()函数可以有返回值,也可以没有返回值答案:C解析:一个完整的C语言程序必须有且只有1个main()函数,且程序总是从main()函数开始执行,否则就会报错。55.structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};voidmain(){p=aa;printf("%d",++p->x);printf("%d",(++p)->x);printf("%d",++(*p->y));}A、102020B、506021C、516021D、607031答案:C解析:初始化后,aa[0].x赋值为50,aa[0].y指向dt[0];aa[1].x赋值为60,aa[1].y指向dt[1];aa[2].x赋值为70,aa[2].y指向dt[2];aa[3].x赋值为80,aa[3].y指向dt[3]。++p->x是将aa[0].x自增1,返回51;(++p)->x返回aa[1].x的值,即60;++(*p->y)将aa[1].y指向的dt[1]的值自增1,返回21。56.在c语言程序中,注释部分从哪开始,到哪结束?()A、从"("开始到")"结束B、从REM开始无结束标志C、无起始标志D、从"/*"开始,"*/"结束答案:D解析:c语言中的多行注释从从“/*”开始,“*/”结束57.C语言中下面哪个不是条件语句?A、ifB、ifelseC、NSLogD、switch答案:C58.设a为整型变量,下列选项中不能正确表达数学关系:10<a<15()。A、10<a<15B、a==11||a==12C、a>10&&a<15D、!(a<=10)&&!(a>=15)答案:B解析:B选项中得到的a值不能使10<a<15成立。59.C语言中下面哪个不是循环语句?A、dowhileB、ifC、whileD、for答案:B60.如果要求在if后的判断条件是a不等于0,则下列选项中能正确表达这一关系的是()。A、a<>0B、!aC、a=0D、a答案:D解析:if判断条件的值只能是0或非0,if(a)就是if(!0)的意思。61.当输入数据:2763时,下面程序的运行结果是()。#include<stdio.h>intgbs(inta,intb){intc;a=a>0?a:-a;b=b>0?b:-b;c=a*b;if(c==0)return0;while(a!=b)if(a>b)a-=b;elseb-=a;returnc/a;}intgys(inta,intb){if(a*b==0)return0;a=a>0?a:-a;b=b>0?b:-b;while(a!=b)if(a>b)a-=b;elseb-=a;returna;}voidmain(){inta,b,c,d;scanf("%d%d",&a,&b);c=gbs(a,b);d=gys(a,b);printf("a=%db=%dgbs=%dgys=%d\n",a,b,c,d);}A、a=30b=63gbs=189gys=9B、a=27b=63gbs=190gys=10C、a=27b=63gbs=189gys=9D、a=27b=63gbs=188gys=10答案:C解析:两个函数中,while语句结束后,a和b的值都为9。62.以下各语句或语句组中,正确的操作是。A、chars[3]="abcde";B、char*s;gets(s);C、char*s;s="abcde";D、chars[5];scanf("%s",&s);答案:C解析:字符数组可以使用字符串进行初始化,但数组长度应足够容纳该字符串,选项A不满足要求。gets()函数用于读取字符串,并将字符串保存到参数代表的空间中,选项B中,只定义了字符指针,没有空间存放字符串信息。选项D定义了长度为5的字符数组,数组名称代表数组的首地址,使用scanf()读取字符串时,参数为数组名即可。63.当执行下面程序且输入:ABC时,输出的结果是()。#include<stdio.h>#include<string.h>voidmain(){charss[10]="12345";gets(ss);printf("%s\n",ss);}A、ABCB、ABC45C、12345ABCD、ABC456789答案:A解析:gets()函数的作用是将输入的字符串覆盖进字符数组ss中。64.假设有程序段:intk=0;while(k=1)k++;while语句的循环次数是()。A、无限次B、有语法错,不能执行C、一次也不执行D、执行1次答案:A解析:语句k=1将k赋值为1并返回k的值,所以while语句将一直循环。65.假设有如下定义:structsk{inta;floatb;}data,*p;若有p=&data;则对data中的a域的正确引用是()。A、(*p).data.aB、(*p).aC、p->data.aD、p.data.a答案:B66.下列运算符中优先级最高的是()。A、||B、&&C、+D、=答案:C解析:在选项中的几个运算符中,+运算符的优先级最高。67.C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为()。A、该数组的长度B、该数组的元素个数C、该数组中各元素的值D、该数组的首地址答案:D解析:数组作为函数参数时,传入的是该数组的首地址。68.关于标识符,下列选项中描述错误的是()。A、标识符只能由字母、数字和下划线组成B、标识符不能以下划线作为第一个字符C、标识符不能以数字作为第一个字符D、标识符不区分大小写字母答案:D解析:标识符区分大小写字母。69.若已定义x和y为double类型,则表达式x=1;y=(x+3)/2的值是()。A、1B、2C、2.00000D、2.50000答案:C解析:()的优先级较高,先计算x+3,结果为4.0,再4.0/2结果为2.0。70.下面程序的输出是()。voidmain(){structcmplx{intx;inty;}cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}A、0B、1C、3D、6答案:D解析:初始化后,cnum[0].x赋值为1,cnum[0].y赋值为3;cnum[1].x赋值为2,cnum[1].y赋值为7。71.以下程序的输出结果是()。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}voidmain(){printf("%ld\n",fun(3));}A、1B、2C、3D、4答案:A解析:fun()函数传入3时,返回3-fun(2);fun()函数传入2时,返回2。所以fun(3)返回3-2=1。72.若给定条件表达式(M)?(a++):(a--)则下列选项中和表达式M等价的是()。A、(M==0)B、(M==1)C、(M!=0)D、(M!=1)答案:C解析:三目运算符的判断条件要求返回值是逻辑值。该题中M的返回值是逻辑值真,而在C语言中非0值都能表示逻辑值真。73.下列是多行注释的符号是()A、//B、/C、/*D、/**/答案:D解析:单行注释的符号为//,多行注释的符号为/**/。74.下列程序段的输出结果为()。inty=1;while(y--);printf("y=%d\n",y);A、y=-1B、y=0C、死循环D、y=9答案:A解析:当y—返回0时,while语句停止循环,此时y=-1。75.以下程序的输出结果是()。voidmain(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0];}A、0650B、1470C、5430D、输出值不定答案:A解析:为数组中的部分元素进行赋值时,对于没有赋值的元素,系统会自动赋值为0。76.下面程序的输出是()。typedefunion{longx[2];inty[4];charz[8];}MYTYPE;MYTYPEthem;voidmain(){printf("%d\n",sizeof(them));}A、32B、16C、8D、24答案:B解析:共用体占内存大小是根据其成员最大占内存大小来决定的,共用体MYTYPE占内存大小是sizeof(int)*4=16。77.下面程序中,合法的选项是()A、#include<stdio.h>intmain(){printf("helloworld\n");return0;}B、#include<stdio.h>intman(){printf("helloworld\n");return0;}C、#include<stdio.h>intmain(){printf("helloworld\n")return0;}D、#include<stdio.h>intmain(){print("helloworld\n");return0;}答案:A解析:B选项不是main()函数,不能运行。C选项C语言中的语句以;结尾。D选项print函数不存在,所以不能正确调用。78.关于预处理,下列描述中正确的是()A、每个C程序必须在开头使用预处理命令B、预处理命令必须位于C程序的开头C、在C语言中,预处理命令都以<开头D、C语言的预处理命令只能实现宏定义和条件编译的功能答案:C解析:C语言的预处理命令都以<开头79.有如下说明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;那么数值为9的表达式是()。A、*p+9B、*(p+8)C、*p+=9D、p+8答案:B解析:选项1中,*p+9首先计算*p的值,返回1,其次计算1+9的值,返回10;选项3中,*p+=9是对a[0]进行自增运算,然后返回运算后的a[0]的值;选项4中,p+8返回返回a[8]的地址。80.下列选项中,哪一项不是C语言中的位运算符()。A、&B、||C、~D、^答案:B解析:“||”是逻辑运算符,“|”是位运算符。81.程序片段:shorti=65536;printf("%d\n",i);的输出结果是()。A、65536B、0C、有语法错误,无输出结果D、-1答案:B解析:short类型的取值范围是-32768~32767,再加1时发生溢出,变为0。82.下列关于strstr()函数的描述,错误的是()A、用于在指定的字符串中查找指定的字符B、用于在指定的字符串中查找指定的子字符串C、该函数接收两个字符指针类型的参数D、该函数若查找到子字符串则返回子字符串的指针,否则返回空指针答案:A解析:用于在指定的字符串中查找指定的子字符串83.下列选项中,哪一项不是C语言的关键字()。A、autoB、intC、addD、goto答案:C解析:add不是C语言的关键字,所以答案为选项3。84.静态链表中的指针表示的是()A、内存地址B、数组下标C、下一元素地址D、左、右结点地址答案:C解析:链表中的指针域存储的是下一个元素的地址85.以下循环体的执行次数是()。voidmain(){inti,j;for(i=0,j=1;i<=j+1;i+=2,j--)printf("%d\n",i);}A、3B、2C、1D、0答案:C解析:首先初始化语句i=0,j=1;判断循环条件i<=j+1返回true,执行一次循环体;执行语句i+=2,j--后,i=2,j=0;i<=j+1返回false。86.关于fgets()函数,下列描述中正确的是()A、从文件fp中读取长度为n的字符串存入str指向的内存B、从文件fp中读取长度不超过n-1的字符串存入str指向的内存C、从文件fp中读取n个字符存入str指向的内存D、从str读取至多n个字符到文件fp中答案:B解析:fgets()是从文件fp中读取长度不超过n-1的字符串存入str指向的内存87.在C语言中,系统为一个结构体变量分配的内存是()A、各成员所需内存量的总和B、结构体第一个成员所需的内存量C、成员中占内存量最大者所需的容量D、结构体中最后一个成员所需的内存量答案:A解析:系统为一个结构体变量分配的内存是各成员所需内存量的总和。88.以下程序运行后,输出结果是()。voidmain(){char*s="abcde";s+=2;printf("%ld\n",s);}A、cdeB、字符c的ASCLL码值C、字符c的地址D、出错答案:C解析:首先指针s指向字符串"abcde"的首地址,也就是字符"a"的地址;然后s+=2后,s指向字符串"cde"的首地址,也就是字符"c"的地址。89.C语言程序的基本单位是()。A、程序行B、语句C、函数D、字符答案:C解析:函数是C语言程序的基本单位90.以下程序的输出结果是()。#include<stdio.h>voidmain(){printf("%d\n",NULL);}A、不确定的B、0C、-1D、1答案:B解析:NULL在C语言中定义为(void*)0。91.设有以下说明语句:structstu{inta;floatb;}suttype;则下面叙述不正确的是()A、struct是结构体类型的关键字B、structstu是用户定义的结构体类型C、suttype是用户定义的结构体类型名D、a和b都是结构体成员答案:B解析:stu是结构体类型,suttype是该类型的变量名92.已知字符'0'的ASCII码值为十六进制的30,下面程序的输出是()。voidmain(){union{unsignedcharc;unsignedinti[4];}z;z.i[0]=0x39;z.i[1]=0x36;printf("%c\n",z.c);}A、6B、9C、0D、3答案:B解析:目前大部分计算机是小端模式,即低位字节存低位数据,高位字节存高位数据。所以z.i[0]在共用体z的最前端,并且值0x39被存储在第一个字节中。z.c读取的是共用体z第一个字节的值,即0x39,对应的字符是'9'。93.若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是()A、EOFB、-1C、非零值D、NULL答案:C94.定义一个函数:exce((v1,v2),(v3,v4,v5),v6);在该函数调用时,实参的个数为()个A、3B、4C、5D、6答案:A解析:(v1,v2),(v3,v4,v5)和v6一共三个实参95.有如下程序:longfib(intn){if(n>2)returnfib(n-1)+fib(n-2);elsereturn2;}voidmain(){printf("%d\n",fib(3));}该程序的输出结果是()。A、2B、4C、6D、8答案:B解析:向fib()函数传入3时,返回fib(1)+fib(2)的值;向fib()函数传入1和2时,都返回2,所以fib(3)返回2+2=4。96.若程序中有下面的说明和定义:structabc{intx;chary;}structabcs1,s2;则会发生的情况是()。A、编译出错B、程序将顺利编译、连接、执行C、能顺利通过编译、连接,但不能执行D、能顺利通过编译,但连接出错答案:A解析:结构体定义应如下所示:structabc{intx;chary;};97.sizeof(float)是()。A、一种函数调用B、一个不合法的表示形式C、一个整型表达式D、一个浮点表达式答案:C解析:sizeof是运算符,返回int类型的数据。98.关于fscanf()函数,下列描述中错误的是()A、fscanf()函数是从流中格式化输入B、fscanf()函数格式化输入数据后,文件指针自动向下移到一个数据单位C、返回值为参数个数D、读取失败返回0答案:D解析:fscanf()读取失败返回-199.关于C语言中的全局变量,下列描述中正确的是()A、全局变量的作用域一定比局部变量的作用域范围大B、静态类别变量的生存周期贯穿于整个程序的运行期间C、函数的形参都属于全局变量D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值答案:B解析:选项1不对:如果程序中只有一个主函数,则在整个程序运行中,局部变量都在起作用;选项3不对:除了C++的引用类型参数,所有函数的形参都是局部变量;选项4不对:static变量定义时就存储地全局区,初始化为0;100.关于strcmp()函数,下列描述中错误的是()A、strcmp()函数用于比较两个字符串的内容是否相等B、如果两个字符串的内容相同,strcmp()函数返回0C、strcmp()函数是可变参数的函数D、strcmp()函数只能接收字符指针作为参数,并不接收单个字符答案:C解析:strcmp()函数的参数是两个字符串101.下列程序执行后的输出结果是()。#defineMA(x)x*(x-1)voidmain(){inta=1,b=2;printf("%d\n",MA(1+a+b));}A、6B、8C、10D、12答案:B解析:替换宏定义后,该程序为:#defineMA(x)x*(x-1)voidmain(){inta=1,b=2;printf("%d\n",1+a+b*(1+a+b-1));}最终输出8。102.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是()。A、1B、2C、2.0D、2.5答案:C解析:因为运算符“/”的优先级比运算符“+”的优先级高,所以先计算3/2,返回int型结果1。将double型数据1与int型数据1相加,返回double型结果2.0。103.为了计算s=15!(15的阶乘),则s变量应定义为()。A、charB、shortC、intD、long答案:D解析:计算结果为整型数据,char是字符型,不符合,而short与int类型的取值不够大,所以用long类型来存储。104.若定义a=3,b=4,执行printf(“%d,%d”,(a,b),(b,a));的输出结果为()。A、3,4B、4,3C、3,3D、4,4答案:B解析:在调用格式输出函数的语句中,其中每个格式符对应一个输出项,格式符d要求输出项内容以十进制整数形式输出,第一个输出项(a,b)是一个逗号表达式,该表达式的是b的值,输出4;第二个输出项(b,a)的值是a的值,输出3。105.以数据块为单位对数据进行整体读写时如果ptr是指向内存中数据块的首地址,fp是文件指针,那么数据块中每个数据项的大小为()A、sizeof(*ptr)B、*ptrC、sizeof(ptr)D、sizeof(*fp)答案:A解析:ptr是指向数据块的指针,*ptr才能表示整个数据块。106.71、阅读下面程序:inti;intx[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};for(i=0;i<4;i++)printf("%3d",x[i][3-i]);下列选项中哪一项是正确的输出结果()A、15913B、161116C、471013D、481216答案:C解析:i=0时输出x[0][3],4i=1时输出x[1][2],7i=2时输出x[2][1],10i=3时输出x[3][0],13107.关于链表的叙述中,下列描述中错误的是()A、链表采用顺序存储,必须占用一片连续的内存空间B、链表采用顺序存储,便于进行插入和删除操作C、链表采用链接存储,不必占用一片连续的内存空间D、链表采用链式存储,便于插入和删除操作答案:B解析:顺序链表进行插入和删除操作后需要移动元素108.下列选项中,不属于开发一个C语言应用程序的具体实现步骤的是()A、启动开发工具B、添加源文件C、编写代码D、运行程序答案:A解析:在VisualStudio工具中开发一个C语言应用程序,具体实现步骤是新建项目、添加源文件、编写代码和运行程序。109.下述对C语言字符数组的描述中错误的是()。A、字符数组可以存放字符串B、字符数组中的字符串可以整体输入、输出C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值D、不可以用关系运算符对字符数组中的字符串进行比较答案:C解析:字符数组只能在初始化时才能进行整体赋值,字符数组赋值必须对数组元素依次进行赋值。110.关于栈和队列,下列描述中正确的是()A、限制存取位置的线性结构B、顺序存储的线性结构C、链式存储的线性结构D、限制存取位置的非线性结构答案:A解析:栈和队列都是线性表,都限制存取位置111.以下选项中,不能正确赋值的是()。A、chars1[10];s1="Ctest";B、chars2[]={'C','t','e','s','t'};C、chars3[20]="Ctest";D、char*s4="Ctest\n"答案:A解析:字符数组只能在初始化时才能用等号赋入字符串。112.以下选项中合法的字符常量是()。A、"B"B、'\010'C、68D、D答案:B解析:'\010'表示ASCII码为八进制数10的字符。113.若有函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是()。A、3B、4C、5D、6答案:A解析:a+b返回一个值,(x,y)返回一个值,fun(n+k,d,(a,b))返回一个值。114.在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是()。A、externB、registerC、autoD、static答案:D解析:static修饰全局变量时,表示该变量仅在本文件中可使用。115.若有下面的说明和定义:structtest{intm1;charm2;floatm3;unionuu{charu1[5];intu2[2];}ua;}myaa;则sizeof(structtest)的值是()。A、20B、16C、14D、9答案:A解析:共用体uu占8个字节;因为结构体在内存中占位符的存在,所以结构体test中成员m2占4个字节;结构体test占用内存的大小是sizeof(int)+sizeof(char)+3+sizeof(float)+sizeof(ua)=20。116.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()。A、1B、2C、2.0D、2.5答案:C解析:y为double类型,3/2值为1,转换成double类型与x相加。117.以下程序的输出结果是()。inta,b;voidfun(){a=100;b=200;}voidmain(){inta=5,b=7;fun();printf("%d%d\n",a,b);}A、100200B、57C、200100D、75答案:B解析:fun()函数改变的是全局变量的值,printf()函数输出的是局部变量的值,fun()函数不会改变局部变量a、b的值。118.设变量a是整型,f是单精度型,i是双精度型,则表达式10+a+i的值的数据类型是()。A、intB、floatC、doubleD、不确定答案:C解析:不同数据类型进行运算时,取值范围小的会自动向取值范围大的数据类型转换。119.下列描述中不正确的是()。A、字符型数组中可以存放字符串B、可以对字符型数组进行整体输入、输出C、可以对整型数组进行整体输入、输出D、不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值答案:C解析:整型数组只能对单个元素进行输入输出。120.以下程序运行后,输出结果是()。A、49.5B、9.5C、22.0D、45.0答案:B解析:替换宏定义后该程序为:121.关于二进制,下列描述错误的是()。A、二进制数由数字0和1表示B、一个二进制数字0和1表示一位,八位为一个字节C、由于二进制由数值较小的0和1表示,所以只能表示一部分数据D、二进制与十进制相互转换,不改变值的大小答案:C解析:所有的数据都可以由二进制形式表示出来。122.下列说法中正确的是()。A、在switch语句中一定要使用break语句B、在switch语句中不一定要使用break语句C、break语句是switch语句的一部分D、break只能用于switch语句中答案:B解析:break语句可以与switch语句搭配使用,但也可以不用。123.在宏定义#defineMAX30中,用宏名代替一个()A、常量B、字符串C、整数D、长整数答案:B解析:宏定义用于将一个标识符定义为一个字符串124.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()。A、a<>0B、!aC、a=0D、a答案:D解析:a!=0返回逻辑值真,相当于a。125.下列选项中,表示字符串末尾的结束标志是()A、'\n'B、'\r'C、'\0'D、NULL答案:C解析:字符串末尾结束标志为'\0'126.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。A、-3B、9C、-12D、6答案:C解析:a-=a*a运算后a的值是-6,a+=-6运算后a的值是-12。127.以下程序的输出结果是()。#defineSQR(X)X*Xvoidmain(){inta=16,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}A、16B、2C、9D、1答案:B解析:替换宏定义后,该程序为:#defineSQR(X)X*Xvoidmain(){inta=16,k=2,m=1;a/=k+m*k+m/k+m*k+mprintf("d\n",a);}最终程序输出2。128.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为()。A、算术运算、赋值运算、关系运算B、算术运算、关系运算、赋值运算C、关系运算、赋值运算、算术运算D、关系运算、算术运算、赋值运算答案:B解析:在C语言中,三种运算符的算术运算符优先级最高,赋值运算符优先级最低。129.若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式是()。A、102233B、10.0,22.0,33.0C、10.022.033.0D、10;22;33答案:B解析:用scanf()读取从键盘输入的数据时,中间不能加逗号,要用空格隔开130.若有定义:structKeyWord{charKey[20];intID;}kw[]={"void",1,"char",2,"int",3,"float",4,"double",5};则printf("%c,%d\n",kw[3].Key[0],kw[3].ID);语句的输出结果为()A、i3B、n3C、f4D、l4答案:C解析:kw[3].Key[0]是第4个元素中key数组的第1个字符即f;kw[3].ID是第4个元素中成员ID值;131.以下叙述正确的是A、在C程序中,main函数必须位于程序的最前面B、C程序的每行中只能写一条语句C、C语言本身没有输入输出语句D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误答案:C132.设整型变量m,n,a,b,c,d均为1,执行(m=a>b)&&(n=c>d)后,m,n的值是。A、0,0B、0,1C、1,0D、1,1答案:B解析:m=a>b结果为假,则m的值为0,n=c>d结果为假,n的值为0。133.在16位编译器环境下,double类型占多少字节?A、2B、4C、1D、8答案:D解析:在16位编译器环境下,double类型占8个字节。134.根据下面的定义,能打印出字母M的语句是()。structperson{charname[9];intage;};structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16};A、printf("%c\n",class[3].name);B、printf("%c\n",class[3].name[1]);C、printf("%c\n",class[2].name[1]);D、printf("%c\n",class[2].name[0]);答案:D解析:初始化后,class[0].name赋值字符串"John",class[0].age赋值17;class[1].name赋值字符串"Paul",class[1].age赋值19;class[2].name赋值字符串"Mary",class[2].age赋值18;class[3].name赋值字符串"Adam",class.age赋值16。所以class[2].name[0]的值是“M”。135.下列关于表达式的描述中,错误的是()。A、常量和变量都是表达式B、运算符类型对应表达式的类型C、每一个表达式都有自己的值D、表达式必须以分号结尾答案:D解析:语句必须以分号结尾,表达式不是必须以分号结尾,表达可以嵌套。136.假定有以下变量定义:intk=7,x=12;那么能使值为3的表达式是()。A、x%=(k%=5)B、x%=(k-k%5)C、x%=k-k%5D、(x%=k)-(k%=5)答案:D解析:选项1中返回0;选项2中返回2;选项3的效果跟选项2的一样。137.表示关系X<=Y<=Z的C语言表达式为()。A、(X<=Y)&&(Y<=Z)B、(X<=Y)AND(Y<=Z)C、(X<=Y<=Z)D、(X<=Y)&(Y<=Z)答案:A解析:(X<=Y)表示X<=Y;(Y<=Z)表示Y<=Z;如果两者都要成立,则使用&&运算符。138.下列关于指针变量的描述,不正确的是()A、在没有对指针变量赋值时,指针变量的值是不确定的B、同类指针类型可以进行相减操作C、在使用没有赋值的指针变量时,不会出现任何问题D、可以通过指针变量来取得它指向的变量值答案:C解析:没有赋值的指针变量,可能指向任何地方,如果指向系统,那么使用该指针可能导致系统崩溃。139.阅读下列程序段:chars[18]="abook!";printf("%.4s\n",s);其输出结果为()A、abook!B、abookC、aboD、a答案:C解析:"abook!"在字符数组中是按单个字符存储的,包括空格,%.4s是输出前四个字符。140.有以下程序:#include<stdio.h>structstu{intnum;charname[10];intage;};voidfun(structstu*p){printf("%s\n",(*p).name);}voidmain(){structstustudents[3]={{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}};fun(students+2);}输出结果是()。A、ZhangB、ZhaoC、WangD、18答案:B解析:该程序打印的是students[2].name的值。141.C语言中函数能否嵌套调用和递归调用?()A、二者均不可B、前者可,后者不可C、前者不可,后者可D、二者均可答案:D解析:两者调用都可以142.若t已经定义为double类型,则表达式:t=1,t++,t+5的值为()。A、7B、7.0C、2.0D、1.0答案:B解析:t为double类型变量,经过一系列运算后其结果仍为double类型,该题中t先进行自增再进行t+5运算,结果为7.0d。143.若有定义:intx,y;chara,b,c;并有以下输入数据(此处\u代表空格):1\u2\uA\uB\uC,那么能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是()。A、scanf("x=%dy=%d",&x,&y);a=getchar();b=getchar();c=getchar();B、scanf("%d%d",&x,&y);a=getchar();b=getchar();c=getchar();C、scanf("%d%d%c%c%c,&x,&y,&a,&b,&c);D、scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);答案:D解析:空格也会作为一个字符赋给字符变量。144.C语言中,合法的长整型常数是()。A、'\t'B、"A"C、65D、A答案:A解析:选项2中,是一个字符串;选项3中,是一个整型常数;选项4中,是一个变量。145.下列选项中,合法的数组定义是()。A、inta[]="string";B、inta[5]={0,1,2,3,4,5};C、chars="string";D、chara[]={0,1,2,3,4,5};答案:D解析:选项1中,不能对整型数组赋入字符串;选项2中,数组a长度为5,不能赋入6个元素;选项3中,不能对字符赋入字符串。146.下面程序的输出是()。voidmain(){char*a="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}A、v1=4,v2=2,v3=1,v4=1B、v1=4,v2=9,v3=3,v4=1C、v1=5,v2=8,v3=6,v4=1D、v1=8,v2=8,v3=8,v4=8答案:C解析:k=0时,s[k]='1',switch语句运行case'1'、case'3'、case'2',此时v1=1,v2=1,v3=1,v4=0。k=1时,s[k]='2',switch语句运行case'2',此时v1=1,v2=2,v3=1,v4=0。k=2时,s[k]='1',switch语句运行case'1'、case'3'、case'2',此时v1=2,v2=3,v3=2,v4=0。k=3时,s[k]='3',switch语句运行case'3'、case'2',此时v1=2,v2=4,v3=3,v4=0。k=4时,s[k]='4',switch语句运行default、case'1'、case'3'、case'2',此时v1=3,v2=5,v3=4,v4=1。k=5时,s[k]='2',switch语句运行case'2',此时v1=3,v2=6,v3=4,v4=1。k=6时,s[k]='1',switch语句运行case'1'、case'3'、case'2',此时v1=4,v2=7,v3=5,v4=1。k=7时,s[k]='1',switch语句运行case'1'、case'3'、case'2',此时v1=5,v2=8,v3=6,v4=1。147.在C语言中,函数的隐含存储类别是()。A、autoB、staticC、externD、无存储类别答案:C解析:为简化编程,C语言中允许在定义外部函数时省略关键字extern。148.对于基类型相同的两个指针变量之间,不能进行的运算是()。A、<B、=C、+D、-答案:A149.以下说法正确的是()A、c语言程序总是从第一个函数开始执行B、在c语言程序中,要调用的函数必须在main()函数中定义C、c语言程序总是从main()函数开始执行D、c语言程序中的main()函数必须放在程序的开始部分答案:C解析:c语言总是从main()函数开始执行判断题1.sizeof运算符的功能是获取某一数据或数据类型在内存中所占的字节数。A、正确B、错误答案:A解析:为了获取某一数据或数据类型在内存中所占的字节数,C语言提供了sizeof运算符,使用sizeof运算符获取数据字节数。2.指针变量实际上存储的并不是变量的值,而是变量的内存地址。A、正确B、错误答案:A解析:指针里面存储的是变量的地址3.标识符命名可以由字母,数字,横线,下划线组成,可以由数字开头。A、正确B、错误答案:B解析:标识符命名只能有字母,数字和下划线组成,且数字不能开头。4.调用fclose()函数后原有的文件指针仍然可以进行文件操作。A、正确B、错误答案:B解析:调用fclose()后,文件关闭,需重新打开文件才能操作。5.若有定义chars[]={"hello"};则sizeof(s)的大小为5。A、正确B、错误答案:B解析:sizeof(s)求数组arr大小,数组中是一个含有5个字符的字符串,但在C语言中,字符串末尾默认有\0,所以sizeof()求出其大小为6。6.若有定义intx=1,y=2;则表达式x==y是将y的值赋值给x。A、正确B、错误答案:B解析:比较运算符==是判定两个值是否相等,而不是赋值运算。7.八进制是一种“逢八进一”的进制,它由0~8这九个符号来描述。A、正确B、错误答案:B解析:八进制是一种“逢八进一”的进制,它由0~7八个符号来描述。8.字符型指针用char*来定义,它不仅可以指向一个字符型常量,还可以指向一个字符串。A、正确B、错误答案:A解析:字符型指针用char*来定义,它不仅可以指向一个字符型常量,还可以指向一个字符串。9.因为链表是动态生成的,所以节点之间是断开的。A、正确B、错误答案:B解析:链表如同一条铁链一样,一环扣一环,中间是不能断开的。10.break语句只能在循环语句中使用。A、正确B、错误答案:B解析:在switch条件语句和循环语句中都可以使用break语句。当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。当它出现在循环语句中,作用是跳出当前循环语句,执行后面的代码。11.VisualStudio系列的IDE是跨平台的A、正确B、错误答案:B解析:VisualStudio内置了windows操作系统的一些特性,而且微软也没有跨平台的意愿。12.结构体数组有两种方式进行初始化:先定义结构体数组类型再初始化结构体数组、在定义结构体数组的同时对结构体数组初始化。A、正确B、错误答案:A解析:可以采用下列两种方式对结构体数组初始化:先定义结构体数组类型,然后初始化结构体数组;在定义结构体数组的同时,对结构体数组初始化。13.数组名的命名较为特别,它不符合标识符的命名规范。A、正确B、错误答案:B解析:数组名的命名同变量名相同,符合标识符的命名规范。14.关键字是指在编程语言里事先定义好并赋予了特殊含义的单词,也称作保留字。A、正确B、错误答案:A解析:所谓关键字是指在编程语言里事先定义好并赋予了特殊含义的单词,也称作保留字。关键字在程序中用于表示特殊含义,不能被随便用作变量名、函数名等。15.操作字符串的函数strcat()与strncat()用法是相同的。A、正确B、错误答案:B解析:strcat()函数是将一个字符串连接到另一个字符串的后面;而strncat()函数是将一个字符串的前n个字符连接到另一个字符串的后面。16.多行注释之间不能嵌套调用。A、正确B、错误答案:A解析:多行注释之间不能相互嵌套使用,因为第一个“/*”会和第一个“*/”进行配对,而第二个“*/”则找不到匹配。17.十进制数10转换为二进制为1010。A、正确B、错误答案:A解析:十进制的10转换为二进制后是1010。18.break是跳出当前循环,接着执行循环后面的代码。A、正确B、错误答案:A解析:break是跳出当前循环,接着执行循环后面的代码。19.根据功能和实现方式的不同,C语言属于高级语言()。A、正确B、错误答案:A解析:C语言是目前最流行、应用最广泛的高级语言之一,也是计算机编程语言的元老。20.隐式类型转换是指将取值范围大的数据类型转换为数据取值范围小的数据类型。A、正确B、错误答案:B解析:不同类型的数据运算,将取值范围小的数据类型转换为取值范围大的数据类型。21.若已知指向结构体变量stu的指针p,在引用结构体成员时,有三种等价的形式,即stu.成员名、*p.成员名、p->成员名。A、正确B、错误答案:B解析:由于优先级的关系,*p.成员名应该改为(*p).成员名22.在C语言中,跳转语句有break语句、goto语句和continue语句。A、正确B、错误答案:B解析:跳转语句用于实现循环执行过程中程序流程的跳转,在C语言中,跳转语句有break语句、goto语句和continue语句。23.标识符只能由字母和数字组成。A、正确B、错误答案:B解析:标识符只能由字母、数字和下划线组成。标识符不能以数字作为第一个字符。标识符不能使用关键字。标识符区分大小写字母,如add、Add和ADD是不同的标识符。尽量做到“见名知意”,以增加程序的可读性,如用age表示年龄,用length表示长度等。虽然ANSIC中没有规定标识符的长度,但建议标识符的长度不超过8个字符。24.链表和数组一样都是内存上一段连续的内存空间。A、正确B、错误答案:B解析:链表的内存空间是不连续的。25.结构体指针作为函数参数,是将结构体的首地址传递给函数。A、正确B、错误答案:A解析:指针作为函数参数,传递是地址,结构体指针也是一样。26.栈是一种限定只能在一端进行插入和删除操作的线性表,其中允许插入和删除操作的一端称为栈底,不允许插入和删除操作的一端称为栈顶。A、正确B、错误答案:B解析:栈是一种限定只能在一端进行插入和删除操作的线性表,其中允许插入和删除操作的一端称为栈顶,不允许插入和删除操作的一端是封闭的,称为栈底。27.不能直接使用一个字符串常量来为一个字符数组赋值。A、正确B、错误答案:B解析:为了便于对字符数组进行初始化操作,可以直接使用一个字符串常量来为一个字符数组赋值。28.对文件进行单字符读取操作的函数是fgets()。A、正确B、错误答案:B解析:fgets()是单行读取操作的函数。29.continue只能用于循环语句。A、正确B、错误答案:B解析:continue还可以用于选择语句。30.线性表的特点是每个元素都有一个前驱和一个后继。A、正确B、错误答案:B解析:线性表如果是链表实现则对,如果是数组来实现的顺序存储则没有前驱和后继。31.在程序设计中,一组具有相同数据类型的变量集合称为数组。A、正确B、错误答案:A解析:在程序设计中,使用x[0]、x[1]、x[2]……x[n]表示的一组具有相同数据类型的变量集合称为数组x。32.链表中节点的下标是从1开始的。A、正确B、错误答案:A解析:链表结点也是从0开始,0下标是头结点。33.在C语言中,逻辑表达式可以包含多个逻辑运算符。A、正确B、错误答案:A解析:逻辑表达式可以包含多个逻辑运算符。34.定义一个指针变量,它可以指向任何数据类型的变量。A、正确B、错误答案:B解析:指针变量的类型必须与它所指向的变量的数据类型保持一致。35.C语言只适用于系统软件的开发()。A、正确B、错误答案:B解析:C语言是一种通用的、过程式的编程语言,它具有高效、灵活、可移植等优点。在最近二十多年里,它是使用最广泛的编程语言之一,被大量的运用在系统软件与应用软件的开发中。36.定义结构体变量有三种方式:先定义结构体类型再定义结构体变量、在定义结构体类型的同时定义结构体变量、直接定义结构体变量。A、正确B、错误答案:A解析:下列是定义结构体变量的三种方式:先定义结构体类型,再定义结构体变量;在定义结构体类型的同时定义结构体变量;直接定义结构体变量;37.编写C语言程序的流程是:新建项目、添加源文件、编写代码、运行程序。A、正确B、错误答案:A解析:用VisulaStudio工具开发一个C语言应用程序的具体实现步骤如下:38.链表的常用操作有:获取表元、插入元素、查找元素、删除元素、释放链表。A、正确B、错误答案:A解析:链表的常用操作有:获取表元、插入元素、查找元素、删除元素、释放链表。39.一个十进制数转换成二进制后,其值发生的改变。A、正确B、错误答案:B解析:十进制和二进制只是针对数字的不同表示方式,无论采用哪种方式表示一个数,它的值都是一样的。40.文件包含命令中,只能包含扩展名为.h的文件。A、正确B、错误答案:B解析:文件包含中文件扩展名可以是.h也可以是.cpp。41.C语言中的基本数据类型包括:整型变量、实型变量、字符型变量、枚举类型变量。A、正确B、错误答案:A解析:C语言中的基本数据类型包括:整型变量、实型变量、字符型变量、枚举类型变量。42.C语言中的注释有两种类型:单行注释和多行注释。A、正确B、错误答案:A解析:C语言中的注释有两种类型,单行注释多行注释43.一维数组指的是只有一个下标的数组,用来表示一组具有相同类型的数据。A、正确B、错误答案:A解析:一维数组指的是只有一个下标的数组,它用来表示一组具有相同类型的数据。44.数组初始化的常见方式有三种:直接对数组中的所有元素赋值、只对数组中的一部分元素赋值、对数组全部元素赋值但不指定长度。A、正确B、错误答案:A解析:数组初始化的常见的方式有三种,具体如下:直接对数组中的所有元素赋值只对数组中的一部分元素赋值对数组全部元素赋值,但不指定长度45.由于二维数组名也是一个数组指针,所以可以通过数组名以数组指针的形式来访问数组中的元素。A、正确B、错误答案:A解析:由于二维数组名也是一个数组指针,所以可以通过数组名以数组指针的形式来访问数组中的元素。46.由二进制编码构成的语言是机器语言。A、正确B、错误答案:A解析:能被计算机直接识别的并执行的二进制代码语言称为机器语言。47.不同数据类型的数据不能进行相互运算。A、正确B、错误答案:B解析:不同数据类型进行运算,可以先转换成相同数据类型再进行运算。48.运算符“&&”表示与操作,如果左边为假,那么右边表达式将进行运算。A、正确B、错误答案:B解析:运算符“&&”表示与操作,当且仅当运算符两边的表达式结果都为真时,其结果才为真,否则结果为假。如果左边为假,那么右边表达式是不会进行运算的。49.注释在编译时也会被编译到程序中A、正确B、错误答案:B解析:注释是对程序的某个功能或者某行代码的解释说明,它只在C语言源文件中有效,在编译时会被编译器忽略。50.C语言属于机器语言。A、正确B、错误答案:B解析:C语言属于高级语言。51.C语言中的数据类型可分为:基本类型、构造类型、指针类型、空类型。A、正确B、错误答案:A解析:C语言中的数据类型可分为4种,分别是基本类型、构造类型、指针类型、空类型。52.对于一维数组,例如intarr[3];则arr[2]表示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学生心理健康状况调查问卷
- 学籍信息化管理实施细则
- 小餐饮小食杂备案管理实施细则
- 教师卫生清理不彻底个人整改措施
- 教师德育活动组织不足问题清单及整改措施
- 《消防队火灾应急力量调派管理手册》
- 《山地地形景观营造设计手册》
- 药品零售质量管理与规范手册
- 直播合规话术考核评估执行手册
- 非标零件加工工装夹具设计手册
- 2026年全民健康生活方式宣传月专题讲座课件
- 企业声誉危机处理协议2026
- 2026年行政能力测试真题(附答案)
- 山东省淄博市2025-2026学年高二下学期7月期末考试英语试卷
- 2026内蒙古呼伦贝尔市人民医院合同制专业技术人员招聘97人笔试题库含完整答案详解(必刷)
- 机务安保考试题及答案
- 外墙真石漆工程施工方法及工程项目重点难点分析
- 2025-2026学年北师大版八年级数学下册期末考试模拟卷(二)
- 工业级混合油生产线项目节能评估报告
- 防火门施工质量通病及防治措施
- 2026年湖南省事业单位面试真题附答案
评论
0/150
提交评论