国开C语言程序设计期末复习题_第1页
国开C语言程序设计期末复习题_第2页
国开C语言程序设计期末复习题_第3页
国开C语言程序设计期末复习题_第4页
国开C语言程序设计期末复习题_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

专业好文档PAGE10-《C++语言程序设计》期末复习模拟训练题一、选择题(共40分,每小题2分)1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()A.MainB.MAINC.NameD.function正确答案是:mainC语言源程序文件的缺省扩展名为()。A.cppB.exeC.objD.c正确答案是:c3.由C语言目标文件连接而成的可执行文件的缺省扩展名为()。A.cppB.exeC.objD.c正确答案是:exe4.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为()。A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车正确答案是:空格或回车5.每个C语言程序文件的编译错误被分为()。A.1类B.2类C.3类D.4类正确答案是:2类6.不符合C语言规定的复合语句是()。A.{}B.{;}C.{x=0;}D.{y=10}正确答案是:{y=10}7.C语言程序中的基本功能模块为()。A.表达式B.标识符C.语句D.函数正确答案是:函数8.在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和()。A.表达式B.语句C.参数表D.函数体正确答案是:参数表9.在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用的起止定界符为一对()。A.尖括号B.双引号C.单引号D.花括号正确答案是:双引号10.在C语言程序中,多行注释语句使用的开始标记符为()。A.//B./*C.*/D.**正确答案是:/*11.在printf()函数调用的格式字符串中,若使用格式符为“%c”,则对应输出的数据类型为()。A.charB.inC.floatD.double正确答案是:char12在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应输出的数据占用的字符位置个数为()。A.5B.4C.3D.6正确答案是:513.转义字符'\\'表示的字符是()。A.单引号B.双引号C.反斜线D.问号正确答案是:反斜线14.枚举类型中的每个枚举常量的值都是一个()。A.整数B.浮点数C.字符D.逻辑值正确答案是:整数15.

运算符优先级最高的是()。A.=B.*=C.&&D.!=正确答案是:!=16.设x和y均为逻辑值,则x&&y为真的条件是()。A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假正确答案是:它们均为真17.设有语句“inta=12;a+=a*a;”,则执行结束后,a的值为()。A.12B.14C.156D.288正确答案是:156题目18x>0&&x<=10的相反表达式为()。A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>10正确答案是:x<=0||x>10题目19字符串“a+b=12\n”的长度为()。A.6B.7C.8D.9正确答案是:7题目20在下列的符号常量定义中,错误的定义语句格式为()。A.constintM1=10;B.constintM2=20;C.constintM310;D.constcharmark='3';正确答案是:constintM310;二、判断题(共60分,每小题2分。叙述正确则回答“是”,否则回答“否”)题目21C语言中的每条简单语句以分号作为结束符。对错正确的答案是“对”。题目22C语言中的每条复合语句以花括号作为结束符。对错正确的答案是“错”。题目23在C语言程序中,在行尾使用注释的开始标记符为一对单斜线字符。对错正确的答案是“对”。题目24注释内容的开始所使用的标记符为/*,则注释内容的结束所使用的标记符为*/。对错正确的答案是“对”。题目25在一个C语言程序文件中,若要包含一个头文件,则使用以百分号开始的预处理命令。对错正确的答案是“错”。题目26用于输出表达式值的标准输出函数是printf()。对错正确的答案是“对”。题目27当不需要函数返回任何值时,则需要使用保留字void作为函数的返回值类型。对错正确的答案是“对”。题目28每个C程序文件在编译时可能出现有警告性错误,其对应的标识符为error。对错正确的答案是“错”。题目29十进制数25表示成符合C语言规则的八进制数为31。对错正确的答案是“错”。题目30十进制数25表示成符合C语言规则的十六进制数为0x19。对错正确的答案是“对”。题目31在C语言中,转义字符'\n'表示一个换行符。对错正确的答案是“对”。题目32执行“printf("%c",'F'-2);”语句后得到的输出结果为H。对错正确的答案是“错”。题目33已知字符'C'的ASCII码为67,当执行“intx='C'+5;”语句后x的值为72。对错正确的答案是“对”。题目34假定一个枚举类型的定义为“enumRB{ab,ac=3,ad,ae}x=ad;”,则x的值为2。对错正确的答案是“错”。题目35float的类型长度为8。对错正确的答案是“错”题目36在C语言中,常数28和3.26具有相同的数据类型。对错正确的答案是“错”。题目37若需要定义一个符号常量,并且使C语言能够进行类型检查,则应在定义语句的开始使用保留字const。对错正确的答案是“对”。题目38使用const语句定义一个符号常量时,不必对它进行初始化。对错正确的答案是“错”。题目39表达式45%13的值为3。对错正确的答案是“错”。题目40假定x=5,则表达式2*x++的值为12。对错正确的答案是“错”。题目41表达式(float)25/4的值为6。对错正确的答案是“错”。题目42表达式x=x+1表示成增量表达式为++x。对错正确的答案是“对”。题目43关系表达式(x!=0)的等价表达式为(x)。

对错正确的答案是“对”。题目44关系表达式x+y>5的相反表达式为x+y<=5。对错正确的答案是“对”。题目45逻辑表达式(a>b||b==5)的相反表达式为(a>b&&b==5)。对错正确的答案是“错”。题目46若x=5,y=10,则x>y逻辑值为真。对错正确的答案是“错”。题目47假定x=5,则执行“a=(x?10:20);”语句后a的值为10。

对错正确的答案是“对”。题目48带有随机函数的表达式rand()%20的值所在的区间范围是0~19。对错正确的答案是“对”。题目49假定x=5,则执行“y=x++;”语句后,x的值为5。对错正确的答案是“错”。题目50假定x=5,则执行“y=++x;”语句后,y的值为6。对错正确的答案是“对”一、选择题(共20分,每小题2分)题目1当处理特定问题时的循环次数已知时,通常采用的语句是(

)。a.for

b.whilec.do-whiled.switcht.正确答案是:for题目2在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写成的语句是(

)。a.for

b.ifc.dod.while正确答案是:if题目3for语句能够被改写成的语句是(

)。a.复合

b.ifc.switchd.while正确答案是:while题目4下面循环语句执行结束后输出的i值为(

)。for(inti=0;i<n;i++)if(i>n/2){cout<<i<<endl;break;}a.n/2

b.n/2+1c.n/2-1d.n-1正确答案是:n/2+1题目5在下面循环语句中,内层循环体S语句的执行总次数为(

)。for(inti=0;i<n;i++)for(intj=i;j<n;j++)S;a.n2

b.(n+1)/2c.n(n-1)/2d.n(n+1)/2正确答案是:n(n+1)/2题目6在下面的do循环语句中,其循环体被执行的次数为(

)。inti=0;doi++;while(i*i<10);a.4

b.3c.5d.2正确答案是:4题目7在下面的一维数组定义中,有语法错误的选项是(

)。a.inta[]={1,2,3};

b.inta[10]={0};c.inta[];d.inta[5];正确答案是:inta[];题目8在下面的二维数组定义中,语法正确的选项是(

)。a.inta[5][];

b.inta[][5];c.inta[][3]={{1,3,5},{2}};d.inta[](10);正确答案是:inta[][3]={{1,3,5},{2}};题目9假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][1]的值为(

)。a.2

b.4c.6d.8正确答案是:8题目10假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(

)。a.0b.4c.8

d.6正确答案是:0二、判断题(共20分,每小题1分。叙述正确则回答“是”,否则回答“否”)题目11在执行“typedefintDataType;”语句后,标识符DataType与保留字int具有完全相同的含义和作用。对

错正确的答案是“对”。题目12在switch语句中,每个case和冒号之间的表达式只能是常量。对

错正确的答案是“对”。题目13为了结束本层循环类语句或switch语句的执行过程,在语句体中需要使用break语句。对

错正确的答案是“对”。题目14在程序中执行到break语句时,将结束所在函数的执行过程,返回到调用该函数的位置。对

错正确的答案是“错”。题目15在程序执行完成任一个函数调用后,将结束整个程序的执行过程,返回到操作系统或C语言集成开发环境界面窗口。对

错正确的答案是“错”。题目16假定一维数组的定义为“char*a[8];”,则该数组所含元素的个数大于8。对

错正确的答案是“错”。题目17假定二维数组的定义为“inta[3][5];”,则该数组所占存储空间的字节数为60。对

错正确的答案是“对”。题目18假定二维数组的定义为“chara[M][N];”,则该数组所含元素的个数为M+N。对

错正确的答案是“错”。题目19假定二维数组的定义为“doublea[M][N];”,则每个数组元素的行下标取值范围在0~M-1之间。对

错正确的答案是“对”。题目20假定二维数组的定义为“doublea[M][N];”,则每个数组元素的列下标取值范围在0~N之间。对

错正确的答案是“错”。题目21存储一个空字符串需要占用0个字节的存储空间。对

错正确的答案是“错”。题目22使用“typedefcharBB[10][50];”语句定义标识符BB为含有10行50列的二维字符数组类型。对

错正确的答案是“对”。题目23存储字符'a'需要占用1个字节的存储空间。对

错正确的答案是“对”。题目24空字符串的长度为1。对

错正确的答案是“错”。题目25字符串"a:\\xxk\\数据"的长度为13。对

错正确的答案是“错”。题目26为了存储一个长度为n的字符串,所使用的字符数组的长度至少为n+1。对

错正确的答案是“对”。题目27strcmp函数用于进行两个字符串之间的比较。对

错正确的答案是“对”。题目28strcpy函数用于把一个字符串拷贝到另一个字符数组空间中。对

错正确的答案是“对”。题目29一个二维字符数组a[10][20]能够最多存储9个字符串。对

错正确的答案是“错”。题目30一个二维字符数组a[10][20]能够存储的每个字符串的长度不超过20。对

错正确的答案是“错”。三、填空题:写出下列每个程序运行后的输出结果(共40分,每小题4分)题目31

#include<stdio.h>

voidmain()

{

intx=5;

switch(2*x-3){

case4:printf("%d",x);

case7:printf("%d",2*x+1);

case10:printf("%d",3*x-1);break;

default:printf("%s","default\n");

}

}、题目32#include<stdio.h>

voidmain(){

inti,s=0;

for(i=1;i<=5;i++)s+=i*i;

printf("s=%d\n",s);

}答案:正确答案是:s=55题目33#include<stdio.h>

voidmain(){

inti,s1=0,s2=0;

for(i=0;i<10;i++)

if(i%2)s1+=i;elses2+=i;

printf("%d%d\n",s1,s2);

}答案:正确答案是:2520题目34#include<stdio.h>

voidmain(){

intn=6,y=1;

while(n)y*=n--;

printf("y=%d\n",y);

}答案:正确答案是:y=720题目35#include<stdio.h>

constintM=20;

voidmain()

{

inti,c2,c3,c5;

c2=c3=c5=0;

for(i=1;i<=M;i++){

if(i%2==0)c2++;

if(i%3==0)c3++;

if(i%5==0)c5++;

}

printf("%d%d%d\n",c2,c3,c5);

}答案:正确答案是:1064题目36#include<stdio.h>

voidmain()

{

inti,s;

for(i=1,s=0;i<10;i++){

if(i%3==0)continue;

s+=i;

}

printf("%d\n",s);

}答案:正确答案是:27题目37

#include<stdio.h>

voidmain(){

inta[8]={12,39,26,41,55,63,72,40};

inti,i1=0,i2=0;

for(i=0;i<8;i++)

if(a[i]%2==1)i1++;elsei2++;

printf("%d%d\n",i1,i2);

}答案:正确答案是:44题目38#include<stdio.h>

inta[10]={4,5,6,15,20,13,12,7,8,9};

voidmain()

{

inti,s[4]=0;

for(i=0;i<10;i++){

switch(a[i]%4){

case0:s[0]+=a[i];break;

case1:s[1]+=a[i];break;

case2:s[2]+=a[i];break;

default:s[3]+=a[i];break;

}

}

for(i=0;i<4;i++)printf("%d",s[i]);

}答案:正确答案是:4427622题目39#include<stdio.h>

voidmain(){

chara[]="abcdbfbgacd";

inti1=0,i2=0,i=0;

while(a[i]){

if(a[i]=='a')i1++;

if(a[i]=='b')i2++;

i++;

}

printf("%d%d%d\n",i1,i2,i);

}答案:正确答案是:2311题目40#include<stdio.h>

voidmain(){

inta[3][4]={{1,2,7,8},{5,6,10,6},{9,12,3,4}};

intm=a[0][0];

inti,j;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

if(a[i][j]>m)m=a[i][j];

printf("%d\n",m);

}答案:正确答案是:12四、简答题:根据下列每个题目要求编写程序(共20分,每小题4分)题目41编写一个函数,函数头格式为“doubleMean(doublea[M][N],intm,intn)”,要求返回二维数组a[m][n]中所有元素的平均值,假定在计算过程中采用变量v存放平均值。2doubleMean(doublea[M][N],intm,intn)

{

inti,j;

doublev=0.0;

for(i=0;i<m;i++)

for(j=0;j<n;j++)v+=a[i][j];

v/=m*n;

returnv;

}题目42编写一个递归函数“intFF(inta[],intn)”,求出数组a中所有n个元素之积并返回。5intFF(inta[],intn)

{

if(n==1)returna[n-1];

elsereturna[n-1]*FF(a,n-1);

}题目43编写一个主函数,利用while循环,求出并显示满足不等式的最小n值。5#include<stdio.h>

voidmain()

{

inti=0;doubles=0;

//或inti=1;doubles=1;

while(s<5)s+=(double)1/++i;

printf("n=%d\n",i);

}题目44编写一个主函数,求出满足不等式22+42+...+n2<1000的最大n值,假定分别用i和s作为取偶数值和累加值的变量,并限定使用do循环编程。5#include<stdio.h>

voidmain()

{

inti=0;

//用i作为依次取值偶数的变量

ints=0;

//用s作为累加变量

do{

i+=2;

s+=i*i;

}while(s<1000);

printf("n=%d\n",i-2);

}题目45编写一个主函数,计算并输出12+22+...+n2值,其中n值由键盘输入。5#include<stdio.h>

voidmain()

{

inti;

//用i作为计数(循环)变量

ints=0;

//用s作为累加变量

intn;

printf("输入一个自然数:");

scanf("%d",&n);

for(i=1;i<=n;i++)s+=i*i;

printf("s=%d\n",s);

}一、选择题(共30分,每小题2分)题目1在下面的函数声明语句中,存在着语法错误的是(

)。a.AA(inta,intb)b.AA(int,int)c.AA(inta;intb)

d.AA(inta,int)正确答案是:AA(inta;intb)题目2在下面的保留字中,不能作为函数的返回值类型的是(

)。a.voidb.intc.enum

d.long正确答案是:enum题目3假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址增加的字节数为(

)。a.1b.2c.4

d.8正确答案是:4题目4假定a为一个数组名,在下面的表达式中,存在语法错误的是(

)。a.a[i]b.*a++

c.*ad.*(a+1)正确答案是:*a++题目5用calloc函数创建具有10个整型元素的一维数组的正确语句是(

)。a.int*p=calloc(10,2);b.int*p=calloc(10);c.int*p=calloc(10,4);

d.int*p=malloc(10)正确答案是:int*p=calloc(10,4);题目6假定变量m定义为“intm=7;”,则下面正确的语句为(

)。a.intp=&m;b.int*p=&m;

c.int&p=*m;d.int*p=m;正确答案是:int*p=&m;题目7假定k是一个double类型的变量,则定义变量p的正确语句为(

)。a.doublep=&k;b.int*p=&k;c.double&p=*k;d.char*p="Thankyou!";

正确答案是:char*p="Thankyou!";题目8若有语句为“inta[10],x,*pa=a;”,要把数组a中下标为3的元素值赋给x,则不正确的语句为(

)。a.x=pa[3];b.x=*(a+3);c.x=a[3];d.x=*pa+3;

正确答案是:x=*pa+3;题目9假定有语句为“intb[10];int*pb;”,则下面不正确的赋值语句为(

)。a.pb=b;b.pb=&b[0];c.pb=b+2;d.pb=b[5];

正确答案是:pb=b[5];题目10已知“int*p=malloc(100);”,要释放p所指向的动态内存,正确的语句为(

)。a.free(p);

b.freep;c.free(*p);d.free[p];正确答案是:free(p);题目11在程序的一个文件中定义的函数,若要在另一个文件中调用,则必须在这另一个文件中给出该函数的(

)。a.原型语句

b.参数表c.函数名d.返回类型正确答案是:原型语句题目12假定一个函数定义为“staticintf1(intx,inty){returnx+y;}”,该函数名称为(

)。a.staticb.intc.f1

d.return正确答案是:f1题目13假定一个函数的原型语句为“intff(int*x);”,一个整型数组为a[10],则下面函数调用表达式不正确的是(

)。a.ff(a)b.ff(a[0])

c.ff(a+3)d.ff(&a[0])正确答案是:ff(a[0])题目14假定一个函数的数组参数说明为chara[],与之等价的指针参数说明为(

)。1Ba.charab.char*a

c.char&ad.char**a正确答案是:char*a题目15假定一个函数的二维数组参数说明为charw[][N],与之等价的指针参数说明为(

)。a.char(*w)[N]

b.char*w[N]c.char(*w)Nd.char**a正确答案是:char(*w)[N]二、判断题(共30分,每小题2分。叙述正确则回答“是”,否则回答“否”)题目16在C语言中,一个函数由函数头和函数体组成。对

错正确的答案是“对”。题目17在函数模块之外定义的变量称为全局变量,若没有被初始化则系统隐含对它赋初值0。对

错正确的答案是“对”。题目18如果一个函数只允许同一程序文件中的函数调用,则不应在该函数定义的开始前加上保留字static。对错

正确的答案是“错”。题目19如果在一个函数体中又出现对自身函数的调用,此种函数调用被称为递归调用。对

错正确的答案是“对”。题目20调用系统函数时,要先使用#include命令包含该系统函数的原型语句所在的系统头文件。对

错正确的答案是“对”。题目21函数形参变量不属于局部变量。对错

正确的答案是“错”。题目22假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为46。对错

正确的答案是“错”题目23假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为25。对错

正确的答案是“错”。题目24假定p所指对象的值为25,p+1所指对象的值为46,则执行*(p++)运算后,p所指对象的值为46。对

错正确的答案是“对”。题目25假定a是一个指针数组,则a+i所指对象的地址比a地址大4*i字节。对

错正确的答案是“对”。题目26若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为(char*)p。对

错正确的答案是“对”。题目27假定一个数据对象为int*类型,则指向该对象的指针类型仍为int*类型。对错

正确的答案是“错”。题目28假定x为一个简单变量,则&x表示x的地址。对

错正确的答案是“对”。题目29若p指向x,则*p与x的值不同。对错

正确的答案是“错”。题目30NULL是一个符号常量,通常作为空指针值,它代表的值为0。对

错正确的答案是“对”。三、写出下列每个程序运行后的输出结果(共20分,每小题4分)题目31#include<stdio.h>

intWF(intx,inty){

x=x+y;

y=x+y;

returnx+y;

}

voidmain(){

intx=5,y=7;

intz=WF(x,y);

printf("z=%d\n",z);

}z=31z=31题目32

#include<stdio.h>

#include<string.h>

voidfun(charss[]);

voidmain(){

chars[15]="0123456789";

fun(s);

printf("%s\n",s);

}

voidfun(charss[]){

inti,n=strlen(ss);

for(i=0;i<n/2;i++){

charc=ss[i];

ss[i]=ss[n-1-i];

ss[n-1-i]=c;

}

}98765432109876543210题目33

#include<stdio.h>

intCount(inta[],intn,intx)

{

inti,c=0;

for(i=0;i<n;i++)

if(a[i]>x)c++;

returnc;

}

voidmain(){

inta[8]={20,15,32,47,24,36,28,70};

intb=Count(a,8,30);

printf("b=%d\n",b);

}B=4B=4题目34#include<stdio.h>

voidmain(){

inta[8]={3,5,7,9,2,3,4,8};

ints=0,*p;

for(p=a;p<a+8;)s+=*p++;

printf("s=%d\n",s);

}s=41s=41题目35#include<stdio.h>

intLA(int*a,intn,intx){

inti,s=0;

for(i=0;i<n;i++)

if(a[i]<x)s+=a[i];

returns;

}

voidmain(){

inta[8]={5,10,15,8,12,3,9,20};

intb=LA(a,5,10);

intc=LA(a+2,6,10);

printf("%d%d\n",b,c);

}13201320四、写出下列每个函数的功能(共20分,每小题4分)题目36doubleSF(doublex,intn){

//n为正整数

doublep=1,s=1;

inti;

for(i=1;i<=n;i++){

p*=x;

s+=p;

}

returns;

}计算出1+x+x2+...+xn的值并返回计算出1+x+x2+...+xn的值并返回。题目37intSG(intx){

//x为大于等于2的整数

inti=2;

while(i*i<=x){

if(x%i==0)break;

i++;

}

if(i*i<=x)return0;elsereturn1;

}判断x是否为一个质数(素数),若是则返回1,否则返回0判断x是否为一个质数(素数),若是则返回1,否则返回0。题目38intWB(inta[],intn,intx){

for(inti=0;i<n;i++)

if(a[i]==x)return1;

return0;

}从数组a[n]中顺序查找值为x的元素,若查找成功则返回1,否则返回0从数组a[n]中顺序查找值为x的元素,若查找成功则返回1,否则返回0。题目39intfun(intm,intn){

intc=0;

staticintb=2;

if(m<b||n<b)returnm*n;

elseif(m%b==0&&n%b==0){c=b;returnc*fun(m/b,n/b);}

else{b++;returnfun(m,n);}

}一个递归函数过程,求出两个自然数m和n的最小公倍数一个递归函数过程,求出两个自然数m和n的最小公倍数。题目40intLK(doublea[],intn){

doubles=0;

inti,m=0;

for(i=0;i<n;i++)s+=a[i];

s/=n;

for(i=0;i<n;i++)

if(a[i]>=s)m++;

returnm;

}求出并返回数组a的n个元素中大于等于平均值的元素个数求出并返回数组a的n个元素中大于等于平均值的元素个数。一、选择题(共30分,每小题2分)题目1假定有“structBOOK{chartitle[40];floatprice;};structBOOKbook;”,则不正确的语句为(

)。a.structBOOK*x=malloc(book);

b.structBOOKx={"C++Programming",27.0};c.structBOOK*x=malloc(sizeof(structBOOK));d.structBOOK*x=&book;正确答案是:structBOOK*x=malloc(book);题目2假定有“structBOOK{chartitle[40];floatprice;}book;”,则正确的语句为(

)。a.structBOOKx=&book;b.structBOOK*x=&book;

c.structBOOKx=calloc(BOOK);d.structBOOK*x=BOOK;正确答案是:structBOOK*x=&book;题目3在结构类型的定义中,不同数据成员的定义项之间采用的分隔符是(

)。a.句点b.冒号c.分号

d.逗号正确答案是:分号题目4假定一个结构类型的定义为“structA{inta,b;doublec;};”,则该类型的长度为(

)。a.8b.10c.12d.16

正确答案是:16题目5假定一个结构类型的定义为“structD{inta;D*next;};”,则该类型的长度为(

)。a.4b.8

c.12d.16正确答案是:8题目6假定要访问一个结构指针变量x中的数据成员a,则表示方法为(

)。a.x.ab.x->a

c.x(a)d.x{a}正确答案是:x->a题目7与结构成员访问表达式等价的表达式为(

)。a.x->nameb.&x->namec.(&x)->name

d.(*x)->name正确答案是:(&x)->name题目8假定一个链表中结点的结构类型为“structAA{intdata,structAA*next;};”,则next数据成员的类型为(

)。a.structAAb.structAA*

c.AAd.int正确答案是:structAA*题目9假定一个链表的表头指针为f,结点中包含有data和next域,则向该链表的表头插入一个地址为p的结点时,应执行的操作为(

)。a.p->next=fb.p->next=f和f=p

c.f=p->nextd.f->next=p和f=p正确答案是:p->next=f和f=p题目10标准输入设备键盘的文件流标识符是(

)。a.stdin

b.stdoutc.stderrd.stdio正确答案是:stdin题目11表示文件结束符的符号常量为(

)。a.eofb.Eofc.EOF

d.feof正确答案是:EOF题目12C语言中打开一个数据文件的系统函数为(

)。a.fgetc()b.fputc()c.fclose()d.fopen()

正确答案是:fopen()题目13从一个数据文件中读入以换行符结束的一行字符串的系统函数为(

)。a.gets()b.fgets()

c.getc()d.fgetc()正确答案是:fgets()题目14向一个二进制文件中写入信息的函数fwrite()带有的参数个数为(

)。a.1b.2c.3d.4

正确答案是:4题目15在C语言中,为只写操作打开一个文本文件的方式为(

)。a."a"b."r+"c."r"d."w"

正确答案是:"w"二、判断题(共40分,每小题2分。叙述正确则回答“是”,否则回答“否”)题目16在结构类型的定义中,其中的数据成员可以是本身类型的直接对象。对错

正确的答案是“错”。题目17在结构类型的定义中,允许出现结构类型不完整的超前定义。对

错正确的答案是“对”。题目18定义结构类型的变量时,不能够同时进行初始化。对错

正确的答案是“错”。题目19使用一个结构类型时,必须一起使用关键字struct和类型标识符。对

错正确的答案是“对”。题目20假定一个结构类型的定义为“structA{inta,b;A*c;};”,则该类型的长度为12。对

错正确的答案是“对”。题目21假定一个结构类型的定义为“structB{inta[5];char*b;};”,则该类型的长度为20。对错

正确的答案是“错”。题目22执行calloc(n,8)函数调用时,将动态分配得到8*n个字节的存储空间。对

错正确的答案是“对”。题目23执行malloc(sizeof(structBB))函数调用时,得到的动态存储空间能够保存具有structBB结构类型的一个对象。对

错正确的答案是“对”。题目24假定要访问一个结构对象x中的由a指针成员所指向的对象,则表示方法为x.a。对错

正确的答案是“错”。题目25假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为p->b。对错

正确的答案是“错”。题目26与结构成员访问表达式(*fp).score等价的表达式是fp->score。对

错正确的答案是“对”。题目27在C语言中,对二进制文件的所有不同打开方式共有6种。对

错正确的答案是“对”。题目28C语言中的标准输入和输出设备文件都属于字符文件。对

错正确的答案是“对”。题目29在一个磁盘数据文件的文件名中,文件主名和扩展名都是必须的,不可省略。对错

正确的答案是“错”。题目30在数据文件打开方式字符串中,字符r、w和a具有确定的含义,分别代表读、写和追加方式。对

错正确的答案是“对”。题目31一个磁盘数据文件的文件名由文件主名和扩展名所组成,其中间用圆点分开。对

错正确的答案是“对”。题目32C语言系统中提供一个用来描述文件属性的类型标识符为FILE。对

错正确的答案是“对”。题目33每次只能向文本文件中写入一个字符,不能一次写入一个字符串。对错

正确的答案是“错”。题目34对二进制文件进行读和写操作将使用相同的系统函数。对错

正确的答案是“错”。题目35在C语言中,系统函数fseek()用来移动数据文件中的文件位置指针。对

错正确的答案是“对”。三、写出下列每个程序运行后的输出结果(共15分,每小题5分)题目36#include<stdio.h>

structWorker{

charname[15];

//姓名

intage;

//年龄

floatpay;

//工资

};

voidmain(){

structWorkerx={"wanghua",52,4300};

structWorkery,*p;

y=x;p=&x;

printf("%s

%d

%6.2f\n",,y.age,p->pay);

}wanghua524300wanghua

52

4300题目37#include<stdio.h>

#include<string.h>

structWorker{

charname[15];

//姓名

intage;

//年龄

floatpay;

//工资

};

voidmain(){

structWorkerx;

char*t="liouting";

intd=38;floatf=3493;

strcpy(,t);

x.age=d;x.pay=f;

printf("%s

%d

%6.0f\n",,x.age,x.pay);

}liouting392493liouting

39

2493题目38#include<stdio.h>

structWorker{charname[15];intage;floatpay;};

intLess(structWorkerr1,structWorkerr2){

if(r1.age<r2.age)return1;elsereturn0;

}

voidmain(){

structWorkera[4]={{"abc",25,2420},{"def",58,4638},

{"ghi",49,4260},{"jkl",36,3750}};

structWorkerx=a[0];

inti;

for(i=1;i<4;i++)

if(Less(x,a[i]))x=a[i];

printf("%s

%d

%6.0f\n",,x.age,x.pay);

}def584638def

58

4638四、写出下列每个函数的功能(共15分,每小题5分)题目39voidQA(structWorkera[],intn){

inti;

for(i=1;i<n;i++)

scanf("%s%d%f",&a[i].name,&a[i].age,&a[i].pay);

}

假定结构类型structWorker的定义如下:

structWorker{charname[15];intage;floatpay;};从键盘输入n个Worker类型的记录到一维数组a中从键盘输入n个Worker类型的记录到一维数组a中。题目40intCount(structIntNode*f)

{

//f为指向一个单链表的表头指针

intc=0;

while(f){

c++;

f=f->next;

}

returnc;

}

假定structIntNode的类型定义为:

structIntNode{intdata;IntNode*next;};统计出以表头指针为f的链表中结点的个数统计出以表头指针为f的链表中结点的个数。题目41voidxw1(char*fname){

FILE*fout=fopen(fname,"w");

chara[20];

printf("每个字符串长度小于20,字符串end作为结束标志\n");

while(1){

scanf("%s",a);

if(strcmp(a,"end")==0)break;

fputs(a,fout);

fputc('\n',fout);

}

fclose(fout);

}把从键盘上输入的若干个字符串保存到由fname参数所指定的文本文件中把从键盘上输入的若干个字符串保存到由fname参数所指定的文本文件中。自测练习11.在C语言字符集中,包含有全部26个英文大写字母和对应的小写字母。对

错正确的答案是“对”。题目2在C语言字符集中,一个大写英文字母和它的小写英文字母被视为不同的字符对

错正确的答案是“对”。题目3在C语言程序中,ABC和abc被作为同一标识符使用对错

正确的答案是“错”。自测练习2在C语言中,保留字是有专门含义和作用的,不能作为一般标识符使用对

错正确的答案是“对”。题目2在C语言中,作为标识符的第一个字符只能是英文字母或下划线,不能是数字字符。对

错正确的答案是“对”。题目3C语言中使用的字符常量,其起止标记符是()。a.中括号

b.

双引号c.

单引号d.尖括号正确答案是:单引号题目4C语言中使用的字符串常量,其起止标记符是()。a.尖括号

b.单引号c.中括号d.双引号正确答案是:双引号自测练习3在C语言中,一条简单语句的结束符是()。a.分号b.逗号

c.空格d.冒号正确答案是:分号题目2在C语言中,每条复合语句的开始标记字符为()。a.

(

b.

{c.

[d.

<正确答案是:(题目3不符合C语言规定的复合语句是()。a.

{}

b.

{y=10}

c.

{;}d.

{x=0;}

正确答案是:{y=10}

题目4C语言中的选择类语句有两条,它们是()。a.

else和case

b.

if和switchc.

if和elsed.

switch和case正确答案是:if和switch自测练习4在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。a.nameb.functionc.MAINd.main

正确答案是:main题目2C语言程序中的基本功能模块为()。a.函数

b.表达式c.标识符d.语句正确答案是:函数题目3一个函数定义所包含的两个部分是()。a.

函数原型和函数体b.

函数名和参数表c.

函数头和函数体

d.

函数头和函数尾正确答案是:函数头和函数体题目4

一个程序文件开始使用的每条预处理命令,其首字符必须是()。a.@b.#

c.%d.$正确答案是:#题目5在一个程序文件中,若要使用#include命令包含一个系统头文件,则此头文件所使用的起止定界符为一对()。a.尖括号

b.

花括号c.

单引号d.

双引号正确答案是:尖括号题目6在一个函数定义中,函数体的格式是一条复合语句。对

错正确的答案是“对”。题目7一个函数必须返回一个值,不允许定义不返回任何值的函数。对错

正确的答案是“错”。题目8若要在程序文件中使用数学函数,则需要引入的系统头文件为math.h。对

错正确的答案是“对”。题目9若要在程序文件中使用标准输入和输出函数,则需要引入的系统头文件为stdio.h。对

错正确的答案是“对”。自测练习5在C语言程序中,单行或行尾注释使用的标记符为()。a.**b.*/

c.//d./*正确答案是://题目2在C语言程序中,多行注释使用的结束标记符为().a.//

b.*/c.**d./*正确答案是:*/题目3在程序文件中添加注释内容是为了增强程序的可读性。对

错正确的答案是“对”。题目4在一行中出现多条语句时,注释语句只能为最后一条语句。对

错正确的答案是“对”。自测练习6用于输出表达式值的标准输出函数是()。a.

output()

b.

print()

c.

printf()d.

scanf()正确答案是:printf()题目2在printf()函数调用的格式字符串中,每个格式符的先导字符为()。a.$b.#

c.%d.@正确答案是:%题目3在printf()函数调用的格式字符串中,若使用格式符为“%d”,则对应输出的数据类型为()。a.

floatb.

int

c.

doubled.

char正确答案是:int题目4在printf()函数调用的格式字符串中,若使用格式符为“%f”,则对应输出的数据类型为()。a.

charb.

double

c.

intd.

float正确答案是:float题目5在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应输出的数据占用的字符位置个数为()。a.3b.6c.4

d.5正确答案是:5题目6在利用printf()函数向屏幕输出数据时,需要在参数表的开始位置使用相应的格式字符串。对错

正确的答案是“对”。题目7在“printf("%d-%d=%d",x,y,x-y);”语句所使用的格式字符串中,包含有3个格式符。对错正确的答案是“对”。题目8在执行“printf("s=%s\n","abc");”语句时,输出结果为s=abc。对错

正确的答案是“对”。题目9在“printf("s=%c\n","abc");”语句中,格式符的使用同后面的输出数据相适合。对错正确的答案是“错”。题目10在执行“printf("%d-%d=%d",x,y,x-y);”语句时,其输出的前两个数据值之间将采用逗号分开。对错正确的答案是“错”。自测练习7程序运行中需要从键盘上输入多于一个数据时,若不特别规定分隔符,则输入的各数据之间所使用的分隔符为()。a.

逗号或回车

b.

空格或回车c.

逗号或分号d.

空格或逗号正确答案是:空格或回车题目2用于从键盘上为变量输入值的标准输入函数是()。a.

scanf()b.

print()

c.

printf()正确答案是:scanf()题目3在scanf()函数调用的格式字符串中,每个格式符的先导字符为()。a.@b.$c.#

d.%正确答案是:%题目4在scanf()函数调用的格式字符串中,若使用格式字符串为“%d,%d”,则规定输入的两个数据之间的分隔符为()。a.%b.#c.$d.@

正确答案是:@题目5在利用scanf()函数从键盘输入数据时,需要在参数表的开始位置使用相应的格式字符串。对

错正确的答案是“对”。题目6在“scanf("%d%d",&x,&y);”语句所使用的格式字符串中,包含有2个格式符。对

错正确的答案是“对”。题目7在执行“scanf("%d%d",&x,&y);”语句时,需要从键盘上输入2个整数。对

错正确的答案是“对”。自测练习8C语言源程序文件的扩展名为()。a.

cpp

b.

objc.cd.

exe正确答案是:c题目2每个C语言程序文件的编译错误的类型有()。a.2种

b.1种c.4种d.3种正确答案是:2种题目3每个C程序文件在编译时可能出现有警告性错误,其对应的标识符号为()。a.

error

b.

warningc.

warnd.

err正确答案是:warning题目4一个C语言程序只能够包含一个程序源文件。对

错正确的答案是“错”。题目5一个C语言程序只能够包含一个用户头文件。对

错正确的答案是“错”。题目6在C语言程序上机操作的过程中,编译程序的操作步骤之后是连接操作。对

错正确的答案是“对”。单项选择题。把合适的选项编号填写在括号内。(每小题3分,共42分)答案:1.D2.C3.D4.C5.B6.B7.B8.C9.D10.A11.B12.B13.A14.D1.在C语言中,每条复合语句的结束标记字符为()。A.]B.)C.>D.}2.在C语言程序中,单行或行尾注释语句使用的标记符为()。A.*/B./*C.//D.**3.C语言源程序文件的扩展名为()。A.cppB.exeC.objD.c4.控制字符'\n'表示()。A.回车B.响铃C.换行D.换页5.运算符优先级最高的是()。A.==B.+C.&&D.||6.x<=10的相反表达式为()。A.x>=10B.x>10C.x!=10D.x>07.每次先进行循环条件的判断,然后再执行循环体的语句为()。A.for和doB.for和whileC.while和doD.switch和break8.假定对二维数组a[3][4]进行初始化的数据为{{3,5,6},{2,8},{7}},则a[1][1]被初始化为()。A.6B.2C.8D.79.对于一个二维字符数组a[M][N],存储每个字符串的长度至多为()。A.MB.NC.M-1D.N-110.假定p所指对象的值为25,p+1所指对象的值为42,则表达式*p++的值为()。A.25B.42C.26D.4311.已知“inta[6][5];”,则元素a[2][4]的地址比该数组的首地址大()。A.14个字节B.56个字节C.28个字节D.96个字节12.在C语言中,用户定义的标识符分为4种作用域,下列选项中不属于这4种作用域的是()。A.全局B.语句C.文件D.局部13.在一个链表中,每个结点必然存在着一个指向自身结点类型的指针域,用来保存下一个结点的()。A.地址B.值C.名称D.类型14.在C语言中,为只写操作打开一个文本文件的方式为()。A."a"B."r+"C."r"D."w"是非判断题。根据叙述正确与否在其后面的括号内打对号“√”或叉号“×”。(每小题2分,共30分)答案:1.√2.×3.×4.√5.×6.×7.√8.√9.√10.×11.√12.×13.√14.×15.×1.在C语言中,保留字是有专门含义和作用的,不能作为一般标识符使用。()2.在C语言程序上机操作的过程中,编译程序的操作步骤之后是运行操作。()3.在一条变量定义语句中,可以同时定义不同类型的变量。()4.表达式x=x+y表示成复合赋值表达式为x+=y。()5.若x=5,y=10,则x<=y的逻辑值为假。()6.do-while循环语句的循环体,只能是复合语句,不能是简单语句。()7.在一维数组的定义语句中,数组名前为元素类型关键字。()8.假定二维数组的定义语句为“doublea[M][N];”,则每个数组元素的列下标取值范围在0~N-1之间。()9.一个二维字符数组a[10][20]中存储每个字符串的最大长度为19。()10.假定a是一个一维数组,则表达式*(a+i)所对应的元素为a[i-1]。()11.进行动态存储分配的calloc()函数带有两个参数。()12.对于标识为static属性的变量,若没有对它进行初始化,则默认的初值为1。()13.在C语言中,一个结构类型的长度等于所含的所有数据成员类型的长度之和。()14.在结构成员访问运算符中,点运算符和箭头运算符的左边均为结构变量。()15.当向字符文件输出一个换行符时,实际将输出的是回车符或换行符。()三、程序填空题。分析程序后把合适的内容填写在括号内。(每小题5分,共30分)1.执行下面程序的输出结果为(w=8)。#include<stdio.h>voidmain(){intx=5,y=8,z=6,w=0;if(x>=y)w=x;elsew=y;if(w<z)w=z;printf("w=%d\n",w);}2.执行下面程序的输出结果为(y=55)。#include<stdio.h>voidmain(){intn=0,y=0;while(n<10){n++;y+=n;}printf("y=%d\n",y);}3.执行下面程序的输出结果为(36)。#include<stdio.h>voidmain(){inta[8]={12,15,20,8,5,9,16,10};inti,j,x=a[0]+a[1];for(i=0;i<8;i++)for(j=i+1;j<8;j++)if(a[i]+a[j]>x)x=a[i]+a[j];printf("%d",x);}4.执行下面程序的输出结果为(x=7)。#include<stdio.h>voidmain(){inta[8]={10,8,16,15,9,21,7,16};inti,x=a[0];for(i=1;i<8;i++)if(a[i]<x)x=a[i];printf("x=%d\n",x);}四、编程题。按题目要求编写程序或函数。(每小题4分,共8分)1.补充完整下面的函数定义,利用for循环计算1+21+22+…+2n的值,最后返回计算结果。假定计数变量用i表示,每次累乘2的变量用p表示,每次累加一个数据项值的变量用sum表示。intFF(intn){inti,p=1,sum=1;//在下面一行的后面补上for循环语句的语句体for(i=1;i<=n;i++)_____________________________returnsum;}答案1.{p*=2;sum+=p;}2.根据函数原型“intDD(inta[],intn,intMM)”编写函数定义,利用双重for循环统计出数组a[n]中任何两个不同元素的值等于MM值的配对个数,然后返回统计结果。如假定a[i]+a[j]等于MM,同时i≠j,则为一个配对。intDD(inta[],intn,intMM){inti,j,c=0;//用i和j作为循环变量,用c作为统计变量//在下面补充一个双重for循环语句returnc;}答案:2.for(i=0;i<n;i++)for(j=i+1;j<n;j++)if(a[i]+a[j]==MM)c++;一、单选题1.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为(A)。A.mainB.MAINC.nameD.function2.设x和y均为bool量,则x&&y为真的条件是(D)。A.其中一个为假B.其中一个为真C.它们均为假D.它们均为真3.逻辑表达式x>0||y==5的相反表达式为(B)。A.x<=0||y!=5B.x<=0&&y!=5C.x>0||y!=5D.x>0&&y==54.假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大(C)个字节。A.1B.2C.4D.85.枚举类型中的每个枚举常量的值都是一个(A)。A.整数B.浮点数C.字符D.逻辑值6.循环体至少被执行一次的语句为(C)语句。A.for循环B.while循环C.do循环D.任一种循环7.在下面的字符数组定义中,(D)语句有语法错误。A.chara[20]=”abcdefg”;B.chara[]=”x+y=55.”;C.chara[15]={’1’,’2’};D.chara[10]=’5’;8.若用数组名作为函数调用的实参,传递给形参的是(A)。A.数组的首地址B.数组中第一个元素的值C.数组全部元素的值D.数组元素的个数9.假定AB为一个类,则执行“ABa(4),b[5],*p[2];”语句时,自动调用该类构造函数的次数为(A)。A.6B.7C.9D.1110.当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为(D)。A.ios::inB.ios::outC.ios::in|ios::outD.没有11.枚举类型中的每个枚举常量的值都是一个(A)值。A.整数B.浮点数C.字符D.逻辑12.设x和y均为bool量,则逻辑表达式x||y为假的条件是(C)。A.它们均为真B.其中一个为真C.它们均为假

温馨提示

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

评论

0/150

提交评论