国家开放大学C语言程序设计期末复习资料_第1页
国家开放大学C语言程序设计期末复习资料_第2页
国家开放大学C语言程序设计期末复习资料_第3页
国家开放大学C语言程序设计期末复习资料_第4页
国家开放大学C语言程序设计期末复习资料_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计课程模拟试卷一、单项选择题。把合适的选项编号填写在括号内。(每小题3分,共42分)1.在C语言中,每条复合语句的结束标记字符为(D)。A.]B.)C.>D.}2.在C语言程序中,单行或行尾注释语句使用的标记符为(C)。A.*/B./*C.//D.**3.C语言源程序文件的扩展名为(D)。A.cppB.exeC.objD.c4.控制字符'\n'表示(C)。A.回车B.响铃C.换行D.换页5.运算符优先级最高的是(B)。A.==B.+C.&&D.||6.x<=10的相反表达式为(B)。A.x>=10B.x>10C.x!=10D.x>07.每次先进行循环条件的判断,然后再执行循环体的语句为(B)。A.for和doB.for和whileC.while和doD.switch和break8.假定对二维数组a[3][4]进行初始化的数据为{{3,5,6},{2,8},{7}},则a[1][1]被初始化为(C)。A.6B.2C.8D.79.对于一个二维字符数组a[M][N],存储每个字符串的长度至多为(D)。A.MB.NC.M-1D.N-110.假定p所指对象的值为25,p+1所指对象的值为42,则表达式*p++的值为(A)。A.25B.42C.26D.4311.已知“inta[6][5];”,则元素a[2][4]的地址比该数组的首地址大(B)。A.14个字节B.56个字节C.28个字节D.96个字节12.在C语言中,用户定义的标识符分为4种作用域,下列选项中不属于这4种作用域的是(B)。A.全局B.语句C.文件D.局部13.在一个链表中,每个结点必然存在着一个指向自身结点类型的指针域,用来保存下一个结点的(A)。A.地址B.值C.名称D.类型在C语言中,为只写操作打开一个文本文件的方式为(D)。"a"B."r+"C."r"D."w"二、是非判断题。根据叙述正确与否在其后面的括号内打对号“√”或叉号“×”。(每小题2分,共30分)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分,共20分)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++)____{p*=2;sum+=p;}_____returnsum;}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循环语句for(i=0;i<n;i++)for(j=i+1;j<n;j++)if(a[i]+a[j]==MM)c++;returnc;}一、单选题(每小题2分,共20分)1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为(

A.main)。2.每个C语言程序文件的编译错误分为(

B.2

)类。3.字符串"a+b=12\n"的长度为(B.7

)。4.

在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为(B.if

)语句。5.在下面的do-while循环语句中,其循环体语句被执行的次数为(

D.10

)。

inti=0;doi++;while(i<10);6.将两个字符串连接起来组成一个字符串时,选用的函数为(

C.strcat()

)。

7.若用数组名作为函数调用的实参,传递给形参的是(A.数组的首地址

)。8.假定a为一个整数类型的数组名,整数类型的长度为4,则元素a[4]的地址比a数组的首地址大(

C.16

)个字节。9.假定s被定义为指针类型char*的变量,初始指向的字符串为"Helloworld!",若要使变量p指向s所指向的字符串,则p应定义为(

A.char*p=s;

)。10.从一个数据文件中读入以换行符结束的一行字符串的函数为(

D.fgetc()

)。

二、填空题(每小题2分,共26分)11.C语言中的每条简单语句以分号作为结束符。12.C程序中的所有预处理命令均以#字符开头。13.当不需要函数返回任何值时,则应使用void标识符来定义函数类型。14.十进制数25表示成符合C语言规则的十六进制数为0x19。15.假定不允许使用逻辑非操作符,则逻辑表达式a>b||b==5的相反表达式为a<=b&&b!=516.执行“typedefintDataType;”语句后,在使用int定义整型变量的地方也可以使用DataType来定义整型变量。17.假定一维数组的定义语句为“char*a[8];”,则该数组a所占存储空间的字节数为32。18.假定二维数组的定义语句为“doublea[M][N];”,则该数组a的列下标的取值范围在0到N-1之间。19.存储一个空字符串需要占用1个字节。20.strcpy函数用于把一个字符串拷贝复制到另一个字符数组空间中。程序的编译单位是一个程序文件。假定a是一个一维数组,则a[i]的指针访问方式为*(a+i)。

23.执行int*p=malloc(sizeof(int))操作得到的一个动态分配的整型对象为*p。三、写出下列每个程序运行后的输出结果(每小题6分,共30分)24.#include<stdio.h>

voidmain()

{

intx=5;

switch(2*x){

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

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

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

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

}

printf("%d\n",4*x);

}答案解释:152025.#include<stdio.h>

voidmain(){

intf1,f2,i;

f1=1;

printf("%d",f1);

for(i=2;i<5;i++){

f2=3*f1+i;

printf("%d",f2);

f1=f2;

}

printf("\n");

}答案解释:151858#include<stdio.h>

#defineN8

voidmain(){

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

inti,i1=0,i2=0;

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

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

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

}答案解释:4427.#include<stdio.h>

#include<string.h>

voidmain(){

chars[15]="5678912340";

inti,n=strlen(s);

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

charc=s[i];

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

s[n-1-i]=c;

}

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

}答案解释:043219876528.#include<stdio.h>

intLB(int*a,intn){

inti,s=1;

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

returns;

}

voidmain(){

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

intb=LB(a,4)+LB(a+3,4);

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

}答案解释:b=104

四、根据下列每个函数回答相应问题(每小题6分,共12分)29.voidSF(intx){

//n为大于等于0的整数

inti=2;

while(x>i){

if(x%i==0)printf("%d",i);

i++;

}

printf("\n");

}

假定使用SF(70)调用该函数,则输出的所有整数依次为__________________。答案解释:257101435

30.voidQC(structIntNode*f){

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

while(f){

printf("%d",f->data);

f=f->next;

}

}

假定结构类型IntNode的定义为:

structIntNode{intdata;structIntNode*next;};

该函数的功能为:答案解释:遍历并输出由表头指针f所指向的单链表中每个结点的data域的值。五、按题目要求编写程序(每小题6分,共12分)31.编写一个程序,首先从键盘上输入10个整数到一维数组a[10]中,然后按照下标从大到小的次序输出数组a[10]中的所有元素值。假定数组a[10]和循环变量i均在主函数中定义。答案解释:#include<stdio.h>

//1分

voidmain()

{

inta[10],i;

//2分

printf("从键盘输入10个整数:\n");

for(i=0;i<10;i++)scanf("%d",&a[i]);

//4分

for(i=9;i>=0;i--)printf("%d",a[i]);

//6分

printf("\n");

}

注:&a[i]也可改写为a+i

编写一个程序,已知6≤a≤50,10≤b≤30,求出满足不定方程3a+2b=120的全部整数组解。如(20,30)就是其中的一组解。答案解释:#include<stdio.h>

//1分

voidmain()

{

inta,b;

//2分

for(a=6;a<=50;a++)

//3分

for(b=10;b<=30;b++)

//4分

if(3*a+2*b==120)printf("(%d,%d)\n",a,b);//6分

}C语言程序中的基本功能模块为(

函数)。逻辑表达式(x>0||y==5)的相反表达式为(

x<=0&&y!=5)。循环体至少被执行一次的循环语句为(

do-while

)。假定n的值为5,则表达式n++的值为(

5)。假定一个二维数组a的定义为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][0]的值为(

0)。假定一个函数原型为“char*func(intn)”,则该函数的返回值类型为(

char*

)。假定a为一个数组名,则元素a[i]的指针访问方式为(

*(a+i)

)。

假定有语句为“int*p=calloc(n+1,sizeof(int));”,则p所指向的动态数组中所包含的元素个数为(

n+1

)。十进制数65表示成符合C语言规定的八进制数为

(

0101

)。若要以读和写两种操作方式打开一个二进制文件,当文件不存在时返回打开失败信息,则选用的打开方式字符串为(

"rb+"

)。

在一个C语言程序文件中,若要包含另外一个头文件或程序文件,则应使用的预处理命令为#include。用于从键盘上为变量输入值的标准输入函数的函数名为(scanf)假定一个枚举类型的定义为“enumRA{ab,ac,ad,ae};”,则ac的值为(1).double类型的长度为(8).执行“intx=45,y=16;printf("%d",x/y);”语句序列后得到的输出结果为:(2).把表达式x=x+y转换成复合赋值表达式为(x+=y)假定x的值为5,则执行“a=(!x?10:20);”语句后a的值为(20).假定一维字符指针数组a的定义为“char*a[8];”,则该数组占用的存储空间的字节数为(32).假定二维数组的定义为“doublea[M][N];”,则数组元素的行下标取值范围在(

0~M-1)之间。空字符串的长度为(0).若p指向x,则(*p)与x的表示是等价的。直接访问表达式(*fp).score所对应的间接访问表达式为(fp->score)写出下列每个程序运行后的输出结果(每小题6分,共30分)24.#include<stdio.h>

voidmain(){

inti,j,k=0;

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

for(j=i;j<5;j++)k++;;

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

}答案解释:15#include<stdio.h>

voidmain(){

intx=28;

inti=2;

while(i<x){

if(x%i==0){printf("%d",i);x/=i;}

i++;

}

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

}答案解释:272#include<stdio.h>

voidmain(){

inta[8]={76,63,54,95,40,75,90,82};

inti,s=0;

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

if(a[i]>=70&&a[i]<=85)s+=a[i];

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

}答案解释:s=233#include<stdio.h>

intWF(intx,inty){

x=x+y;

y+=x;

returnx+y;

}

voidmain(){

intx=5,y=8;

printf("%d\n",WF(x,y));

}答案解释:34#include<stdio.h>

intLA(int*a,intn){

inti,s=0;

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

returns;

}

voidmain(){

inta[5]={4,2,3,6,5};

intb=LA(a,5)+LA(a+2,3);

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

}答案解释:b=34intWC(inta[],intn,intk){

inti,c=0;

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

if(a[i]>=k)c++;

returnc;

}

函数功能:答案解释:统计并返回一维整型数组a[n]中大于等于k的值的个数。voidQA(structWorkera[],intn)

{

inti;

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

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

}

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

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

函数功能:答案解释:从键盘上为具有structWorker结构类型的数组a[n]输入n个记录。按题目要求编写函数(每小题6分,共12分)根据函数原型“doubleMean(doublea[M][N],intm,intn)”,编写函数定义,要求返回二维数组a[m][n]中所有元素的平均值。假定在计算过程中采用变量v存放累加值和最后的平均值。答案解释:doubleMean(doublea[M][N],intm,intn)

{

inti,j;

doublev=0.0;

//1分

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

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

//4分

v/=m*n;

returnv;

//6分

}

//注:函数体的最后两行可以合并为一条返回语句:returnv/=m*n32.根据函数原型“intMM(inta[],intm)”,编写函数定义,计算并返回数组a[m]中元素最大值和最小值之差。答案解释:intMM(inta[],intm)

{

inti,x1,x2;

x1=x2=a[0];

//1分

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

//2分

if(a[i]>x1)x1=a[i];

//3分

if(a[i]<x2)x2=a[i];

//4分

}

//5分

returnx1-x2;

//6分

}C语言程序设计课程期末练习题一、单项选择题。把合适的选项编号填写在括号内。1.不符合C语言规定的复合语句是()。DA.{}B.{;}C.{x=0;}D.{y=10}2.C语言中的选择类语句有两条,它们是()。AA.if和switchB.if和elseC.switch和caseD.else和case3.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。AA.mainB.MAINC.nameD.function4.在C语言程序中,多行注释语句使用的开始标记符为()。BA.//B./*C.*/D.**5.用于输出表达式值的标准输出函数是()。CA.scanf()B.print()C.printf()D.output()6.在printf()函数调用的格式字符串中,每个格式符的先导字符为()。BA.#B.%C.$D.@7.由C语言源程序文件编译而成的目标文件的扩展名为()。CA.cppB.exeC.objD.C8.由C语言目标文件连接而成的可执行文件的扩展名为()。BA.cppB.exeC.objD.c9.每个C程序文件在编译时可能出现有警告性错误,其对应的标识符号为()。AA.warningB.errorC.warnD.err10.在C语言中,表示换行符的转义字符为()。CA.\fB.\rC.\nD.\m11.字符串“a+b=12\n”的长度为()。BA.6B.7C.8D.912.要定义a和b为两个整型变量,则使用的定义语句为()。BA.inta;b;B.inta,b;C.intab;D.inta:b;13.下列数值中最大值是()。CA.28/8B.35/13C.28%8D.35%514.下列数值中最小值是()。DA.28/8B.35/3C.28%8D.35%315.已知x的初值为5,则下列各表达式中的最大值为()。DA.x%=3B.x+=10C.x/=2D.x*=416.x>5的相反表达式为()。DA.x<5B.x!=5C.x>=5D.x<=517.当处理问题时的循环次数是确定的,则采用的最合适的循环方式为()。AA.forB.whileC.do-whileD.switch18.循环体至少被执行一次的循环语句为()。CA.forB.whileC.do-whileD.任一种19.流程控制类语句包括的3类语句为()。AA.选择、循环、跳转B.选择、循环、输入C.选择、输入、输出D.循环、选择、函数20.在下列的语句中,必须以分号作为结束的语句是()。CA.forB.whileC.doD.switch21.在一个数组中,数组元素a[i]前面的元素个数为()。AA.iB.i+1C.i-1D.2*i22.假定二维数组的定义语句为“inta[3][5];”,则该数组所含元素的个数为(B)。A.8B.15C.10D.1223.假定二维数组的定义语句为“chara[M][N];”,则该数组所含元素的个数为(C)。A.(M-1)*(N-1)B.M*N-1C.M*ND.M*N+124.假定二维数组的定义语句为“int*a[3][5];”,则该数组所占用的存储空间的字节数为()。DA.120B.15C.30D.6025.若需要求出一个字符串的长度,则选用的函数是()。AA.strlenB.strcmpC.strcatD.strcpy26.将两个字符串连接起来组成一个字符串时,选用的函数是()。CA.strlenB.strcapC.strcatD.strcmp27.若需要把一个字符串赋给字符数组,则选用的函数是()。DA.strlenB.strcmpC.strcatD.strcpy28.假定p所指对象的值为25,p+1所指对象的值为42,则表达式*++p的值为(B)。A.25B.42C.26D.4329.若p指向x,则与x的等价表示为()。BA.pB.*pC.*xD.&x30.假定a为一个字符数组名,则元素a[8]的地址比该数组的首地址大()。BA.4个字节B.8个字节C.16个字节D.32个字节31.下面的保留字不能作为函数返回类型的是()。CA.voidB.intC.sizeofD.long32.若一个函数声明为“double*function();”,则该函数的返回值类型为(B)。A.实数型B.实数指针型C.函数指针型D.数组型33.在下面的函数声明语句中存在着语法错误的是()。CA.AA(inta,intb)B.AA(int,int)C.AA(inta;intb)D.AA(inta,int)34.函数定义参数表中的每个形参变量,其作用域范围为所在的整个()。CA.程序B.文件C.函数D.参数表35.在函数体中定义的变量具有()。BA.全局作用域B.局部作用域C.文件作用域D.函数作用域36.在结构类型的定义中,使用的关键字是()。AA.structB.unionC.staticD.enum37.假定一个链表中结点的结构类型为“structAA{intdata,structAA*next;};”,则next数据成员的类型为()。BA.structAAB.structAA*C.AAD.int38.标准输入设备键盘的文件流标识符是()。AA.stdinB.stdoutC.stderrD.stdio39.标准输出设备显示器的文件流标识符是()。BA.stdinB.stdoutC.stderrD.stdio40.从一个文本文件中读取一个字符的系统函数为()。DA.fputc()B.fgets()C.fputs()D.fgetc()41.向一个文本文件中写入一个字符的系统函数为()。AA.fputc()B.fgets()C.fputs()D.fgetc()42.从一个二进制文件中读取数据的系统函数为()。AA.fread()B.fgets()C.fwrite()D.fgetc()43.C语言中使用的字符常量,其起止标记符是()。AA.单引号B.双引号C.中括号D.尖括号44.一个程序文件开始使用的每条预处理命令,其首字符必须是()。BA.@B.#C.$D.%45.在scanf()函数调用的格式字符串中,每个格式符的先导字符为()。BA.#B.%C.$D.@46.控制字符'\n'表示()。DA.回车B.响铃C.换页D.换行47.运算符优先级最高的是()。AA.()B.=C.+D.<48.设x和y均为逻辑值,则x&&y为真的条件是()。AA.它们均为真B.其中一个为真C.它们均为假D.其中一个为假49.若n的值为10,则执行“for(i=1;i<n;i++)S;”语句的过程中,表达式i=1共被执行的次数为()。AA.1B.n-1C.nD.n+150.假定对二维数组a[3][4]进行初始化的数据为{{3,5,6},{2,8},{7}},则a[1][1]被初始化为()。DA.6B.2C.7D.851.对于一个长度为n的字符串,保存它至少需要占用的存储字节数为()。CA.nB.n-1C.n+1D.n+252.一个指针类型的简单变量占用内存中的字节数为()。BA.2B.4C.8D.1653.已知“chara[3][5];”,则元素a[2][3]的地址比该数组的首地址大()。AA.13个字节B.26个字节C.52个字节D.48个字节54.在C语言中,用户定义的标识符分为4种作用域,下列选项中不属于这4种作用域的是()。BA.全局B.语句C.文件D.局部55.假定要访问一个结构指针变量x中的数据成员a,则表示方法为()。BA.x.aB.x->aC.x(a)D.x{a}56.在C语言中,关闭一个数据文件的系统函数为()。BA.fopen()B.fclose()C.fread()D.fwrite()57.int类型的长度为()。CA.1B.2C.4D.858.一个程序文件开始使用的每条预处理命令,其首字符必须是()。BA.@B.#C.$D.%假定p是一个指向数据对象的指针,则通过p表示该数据对象为()。Dp*B.p&C.&pD.*p已知“inta[3][5];”,则元素a[2][3]的地址比该数组的首地址大()。BA.13个字节B.52个字节C.26个字节D.48个字节61.假定一个函数的数组参数说明为chara[],与之等价的指针参数说明为(B)。A.charaB.char*aC.char&aD.char**a62.要访问一个结构变量x中的由指针成员a所指向的对象,则表示方法为()。DA.x->aB.x.aC.*(a.x)D.*(x.a)63.p所指对象的值为25,p+1所指对象的值为42,则表达式*p++的值为()。AA.25B.42C.26D.43假定a为一个数组名,则下面表达式中错误的是()。BA.a[i]B.*a++C.*aD.*(a+1)65.假定一个函数的原型语句为“intff(int*x);”,一个整型数组为a[20],则下面函数调用表达式不正确的是()。BA.ff(a)B.ff(a[0])C.ff(a+3)D.ff(&a[0])66.假定要访问一个结构变量x中的数据成员a,则表示方法为()。AA.x.aB.x->aC.x:aD.x(a)二、是非判断题。根据叙述正确与否在其后面的括号内打对号“√”或叉号“×”。1.若要在程序文件中使用标准输入和输出函数,则需要引入的系统头文件为stdio.h。是2.当需要在程序文件中引入系统头文件时,不需要使用#include命令。()否3.在C语言程序中,只有一种使用注释语句的方法。()否4.常数3.26是双精度定点数。()是5.常数3.26是双精度浮点数。()否6.常数3.26f是单精度定点数。()是7.在一条变量定义语句中,只能定义同一类型的变量。()是8.在一条变量定义语句中,当同时定义多个变量时,各变量之间只能使用逗号分开。(是)9.使用const语句定义一个符号常量时,则必须对它同时进行初始化。()是10.表达式x=x+y表示成复合赋值表达式为x=+y。()否11.表达式x=x+1表示成增量表达式为x++。()12.在C语言中,求一个整数的绝对值的数学函数为abs(x)。()是13.在for循环语句的头部,for后面括号内的各表达式之间使用逗号分开。(否)14.在for循环语句的头部,for后面括号内的各表达式之间使用空格隔开。(否)15.在for循环语句的头部,for后面括号内共有2个表达式位置。()否16.do-while循环语句是以分号结束的语句。()是17.break语句带有语句体。()否18.return语句只有保留字,没有其他成分。()否19.在一维数组的定义语句中,可以给数组中每个元素赋初值。()是20.在一维数组的定义语句中,给数组赋初值的部分是用一对花括号括起来的数据表。(是)21.在一维数组的定义语句中,给数组赋初值的部分是用一对圆括号括起来的数据表。(否)22.假定二维数组的定义语句为“doublea[M][N];”,则每个数组元素的行下标取值范围在1~M之间。()否23.字符串允许为空,并且其长度为0。()是24.存储一个长度为0的空字符串至少需要占用1个字节的存储空间。()是25.一个二维字符数组a[10][20]中存储每个字符串的最大长度为20。()否26.在定义指针变量的语句中,对指针变量可以赋初值。()是27.在定义指针变量的语句中,最前面的类型关键字仍然允许是指针类型。()是28.假定a是一个一维数组,则数组名a的值和&a[0]的值相等。()是29.假定a是一个一维数组,则进行a++运算是不允许的。()是30.已知“inta[10],*p=a;”,则进行p++运算是不允许的。()否31.用于释放动态存储空间的函数为free,使用它需要带有一个参数。()是32.在一个函数定义中,参数表可以为空。()是33.在一个函数定义中,参数表中的参数类型可以为void类型。()否34.对于不加static标识的局部变量,若没有对它进行初始化,则它的初值是不确定的。(是)35.在函数定义中,若存在着调用自身函数的函数调用表达式,则称此函数为非递归函数。(否)36.在C语言程序中,主函数也可以成为递归函数。()否37.在C语言中,一个结构类型的长度等于所含的所有数据成员类型长度的最大值。()否38.在结构类型的定义中,其中的数据成员可以是本身类型的直接对象。()否39.定义结构类型的同时能够定义它的变量。()是40.在结构成员访问运算符中,点运算符和箭头运算符的左边均为结构指针变量。()否41.在一个链表的结点结构中,存在着一个指针域,但不一定指向自身结点类型。()否42.在一个链表中,表头结点和表尾结点均无前驱结点。()否43.在C语言中,打开一个数据文件的系统函数为fopen(),它带有两个字符串参数,用来给定文件名和打开方式。()是44.在C语言中,打开一个数据文件的系统函数为fopen(),它带有一个字符串参数,用来给定文件的打开方式。()否45.每次只能向文本文件中写入一个字符,不能一次写入一个字符串。()否46.在C语言字符集中,包含有全部26个英文大写字母和对应的小写字母。()是47.一个C语言程序能够包含多个用户头文件。()是48.在定义一个变量时,不能给它赋初值。()否49.表达式x=x+y表示成复合赋值表达式为x+=y。()是50.关系表达式(x!=0)的等价表达式为(!x)。()否51.当循环次数确定时,while循环语句能够转换为for循环语句。()是52.在一维数组的定义语句中,数组名后带有一对圆括号。()否53.假定二维数组的定义语句为“doublea[M][N];”,则每个数组元素的列下标取值范围在0~N-1之间。()是54.在C语言中,在定义一个字符数组时,不能利用一个字符串进行初始化。()否55.假定一个数据对象为int*类型,则指向该对象的指针类型为int**。()是56.进行动态存储分配的calloc()函数带有一个参数。()否57.对于标识为static属性的变量,若没有对它进行初始化,则默认的初值为1。()否58.在结构类型的定义中,结构类型名在关键字struct和定义体之间。()是59.在结构成员访问运算符中,点运算符(.)为双目运算符。()是60.当向字符文件输出一个换行符时,实际将输出的是回车和换行这两个字符。()是61.在二维数组的定义语句中,不能给数组中每个元素赋初值。()否62.在定义指针变量的语句“int*p,pp;”中,p和pp具有相同的数据类型。()否63.假定a是一个一维数组名,则a+i的值与&a[i]的值相等。()是64.在一个函数定义中,参数表中的参数说明项之间是采用分号分开的。()否65.一个C语言程序能够包含多个用户头文件。()是66.关系表达式(x!=0)的等价表达式为(!x)。()否67.while循环是先判断循环条件,当条件为真时执行循环体。()是68.在C语言程序中,存储字符串的方法是只使用字符指针。()否69.在定义指针变量的语句“int*p,**pp;”中,p和pp具有不同的指针类型。()是70.假定a是一个一维数组,则*(a+i)的值与a[i]的值相等。()是71.每次只能向文本文件中写入一个字符,不能一次写入一个字符串。()否三、程序填空题。分析程序后把合适的内容填写在括号内。1.执行下面程序的输出结果为()。运行结果:15#include<stdio.h>voidmain(){inta=5,b=8,c=6,d=15,x,y;if(a>=b)x=a;elsex=b;if(c>=d)y=c;elsey=d;if(x>=y)printf("%d\n",x);elseprintf("%d\n",y);}2.执行下面程序的输出结果为()。运行结果:y=11#include<stdio.h>voidmain(){intx=5,y=0;switch(2*x-3){case4:y+=x;break;case7:y+=2*x+1;break;case10:y+=3*x;break;}printf("y=%d\n",y);}3.执行下面程序的输出结果为()。运行结果:s=78#include<stdio.h>voidmain(){inti,s=0;for(i=1;i<10;i+=3)s+=i*(i+1);printf("s=%d\n",s);}4.执行下面程序的输出结果为()。运行结果:s=56#include<stdio.h>voidmain(){inti=0,s=0;while(s<50){i+=2;s+=i*i;}printf("s=%d\n",s);}5.执行下面程序的输出结果为()。运行结果:s=30#include<stdio.h>voidmain(){intx=30,i=1,s=0;do{s+=i*i;i++;}while(s<x);printf("s=%d\n",s);}6.执行下面程序的输出结果为()。运行结果:s=46#include<stdio.h>voidmain(){inta[8]={3,8,6,5,9,2,8,5};inti,s=0;for(i=0;i<8;i++)s+=a[i];printf("s=%d\n",s);}7.执行下面程序的输出结果为()。运行结果:s=58#include<stdio.h>voidmain(){inta[3][3]={{3,8,6},{5,9,2},{8,5,12}};inti,j,s=0;for(i=0;i<3;i++)for(j=0;j<3;j++)s+=a[i][j];printf("s=%d\n",s);}8.执行下面程序的输出结果为()。运行结果:s=30#include<stdio.h>voidmain(){inta[3][3]={{3,8,6},{5,9,2},{8,5,12}};inti,j,s=0;for(i=0;i<3;i++)for(j=0;j<3;j++)if(a[i][j]%3==0)s+=a[i][j];printf("s=%d\n",s);}9.执行下面程序的输出结果为()。运行结果:80#include<stdio.h>voidmain(){inta[8]={6,8,7,12,5,15,18,9};ints=0;int*p=a;while(p<a+8)s+=*p++;printf("%d\n",s);}10.执行下面程序的输出结果为()。运行结果:47#include<stdio.h>#defineN8voidmain(){inta[N]={3,5,8,10,15,20,32,66};inti,x;for(i=0;i<N/2;i++){x=a[i];a[i]=a[N-1-i];a[N-1-i]=x;}printf("%d\n",a[1]+a[3]);}11.执行下面程序的输出结果为()。运行结果:32#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);}12.执行下面程序的输出结果为()。运行结果:s=30#include<stdio.h>voidmain(){inta[3][3]={{3,8,6},{5,9,2},{8,5,12}};inti,j,s=0;for(i=0;i<3;i++)for(j=0;j<3;j++)if(a[i][j]%3==0)s+=a[i][j];printf("s=%d\n",s);}13.当使用xk3(5)调用此函数,并假定从键盘上输入的5个整数为3、4、7、8和10,则返回值为()。运行结果:32intxk3(intn){//n为大于等于1的整数inti,x,s=0;for(i=0;i<n;i++){scanf("%d",&x);s+=x;}returns;}14.在此程序中,具有文件作用域的变量是()。运行结果:x2#include<stdio.h>intx1=5;staticintx2=8;voidmain(){intx3=20;while(x1+x2<x3)x1+=2;printf("%d%d%d\n",x1,x2,x3);}15.此程序运行后,得到的输出结果为()。运行结果:29#include<stdio.h>intfn3(inta,intb){intc=a;a=b;b=c;returna+2*b-3;}voidmain(){inta=3,b=5;intc=fn3(a+2,b+3);printf("%d\n",3*a+b+c);}216.执行下面程序的输出结果为()。运行结果:85#include<stdio.h>voidmain(){intx=5,y=8;if(x>=y)printf("%d%d\n",x,y);elseprintf("%d%d\n",y,x);}17.执行下面程序的输出结果为()。运行结果:f2=81#include<stdio.h>voidmain(){inti,f1=1,f2;for(i=2;i<6;i++){f2=3*f1;f1=f2;}printf("f2=%d\n",f2);}18.执行下面程序的输出结果为()。运行结果:85#include<stdio.h>#defineN7voidmain(){inta[N];inti;a[0]=1;a[1]=2;for(i=2;i<N;i++)a[i]=2*a[i-2]+a[i-1]+1;printf("%d\n",a[N-1]);}19.执行下面程序的输出结果为()。运行结果: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);}20.执行下面程序的输出结果为()。运行结果:73#include<stdio.h>voidmain(){inta[3][3]={{2,3,4},{5,6,8},{10,15,20}};int*p=(int*)a;ints=0;while(p<(int*)a+9)s+=*p++;printf("%d\n",s);}21.执行下面程序的输出结果为()。运行结果:y=34#include<stdio.h>voidmain(){intn=10,y=0;while(n>6){y+=n;n--;}printf("y=%d\n",y);}22.假定使用xxk3(5)调用下面函数,则返回值为()。运行结果:120intxxk3(intn){inti,s=1

温馨提示

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

评论

0/150

提交评论