国家开放大学C语言程序设计综合测试题参考答案

DOC
  • 阅读 85 次
  • 下载 0 次
  • 页数 36 页
  • 大小 55.999 KB
  • 2023-01-05 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档20.00 元 加入VIP免费下载
此文档由【小喜鸽】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
国家开放大学C语言程序设计综合测试题参考答案
可在后台配置第一页与第二页中间广告代码
国家开放大学C语言程序设计综合测试题参考答案
可在后台配置第二页与第三页中间广告代码
国家开放大学C语言程序设计综合测试题参考答案
可在后台配置第三页与第四页中间广告代码
国家开放大学C语言程序设计综合测试题参考答案
国家开放大学C语言程序设计综合测试题参考答案
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 36
  • 收藏
  • 违规举报
  • © 版权认领
下载文档20.00 元 加入VIP免费下载
文本内容

【文档说明】国家开放大学C语言程序设计综合测试题参考答案.docx,共(36)页,55.999 KB,由小喜鸽上传

转载请保留链接:https://www.ichengzhen.cn/view-156405.html

以下为本文档部分文字说明:

国家开放大学《C语言程序设计》综合测试题参考答案综合测试1一、单选题(每小题2分,共20分)1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。a.functionb.namec.maind.MAIN2.每个C语言程

序文件的编译错误分为()类。a.2b.4c.1d.33.字符串"a+b=12\n"的长度为()。a.7b.9c.6d.84.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为

()语句。a.forb.whilec.ifd.do5.在下面的do-while循环语句中,其循环体语句被执行的次数为()。inti=0;doi++;while(i<10);a.4b.3c.10d.56.将两个

字符串连接起来组成一个字符串时,选用的函数为()。a.strcap()b.strcmp()c.strlen()d.strcat()7.若用数组名作为函数调用的实参,传递给形参的是()。a.数组的首地址b.数组元素的个数c.数组中全部元素的值d.数组中第一个元素的值8

.假定a为一个整数类型的数组名,整数类型的长度为4,则元素a[4]的地址比a数组的首地址大()个字节。a.16b.32c.4d.89.假定s被定义为指针类型char*的变量,初始指向的字符串为"Helloworld!",若要使变量p指向s所指向的字符串,则p应定义为()。a.char*p;p=*s

;b.char*p;p=&s;c.char*p=&s;d.char*p=s;10.从一个数据文件中读入以换行符结束的一行字符串的函数为()。a.fgetc()b.fgets()c.getc()d.gets()二、填空题(每小题2分,共26分)1

1.C语言中的每条简单语句以(分号)作为结束符。12.C程序中的所有预处理命令均以(#)字符开头。13.当不需要函数返回任何值时,则应使用(void)标识符来定义函数类型。14.十进制数25表示成符合C语言规则的十六进制数为(0x19)。15.假定不允许使用逻辑非操作符,则逻

辑表达式a>b||b==5的相反表达式为(a<=b&&b!=5)。16.执行“typedefintDataType;”语句后,在使用int定义整型变量的地方也可以使用(DataType)来定义整型变量。17.假定一维数组的定

义语句为“char*a[8];”,则该数组a所占存储空间的字节数为(32)。18.假定二维数组的定义语句为“doublea[M][N];”,则该数组a的列下标的取值范围在0到(N-1)之间。19.存储一个空字符串需要占用(1)个字节。20.strcpy函数用于把一个字符串(拷贝)到另一个字符

数组空间中。21.程序的编译单位是一个(程序文件)。22.假定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.#inc

lude<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");}运行结果:15185826.#

include<stdio.h>#defineN8voidmain(){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++;el

sei2++;printf("%d%d\n",i1,i2);}运行结果:4427.#include<stdio.h>#include<string.h>voidmain(){chars[15]="5678912340";inti,n=str

len(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){i

nti,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的定义为:structInt

Node{intdata;structIntNode*next;};该函数的功能为:(遍历并输出由表头指针f所指向的单链表中每个结点的data域的值。)五、按题目要求编写程序(每小题6分,共12分)31.编写一个程序,首先从键盘上输入

10个整数到一维数组a[10]中,然后按照下标从大到小的次序输出数组a[10]中的所有元素值。假定数组a[10]和循环变量i均在主函数中定义。参考答案:#include<stdio.h>voidmain(

){inta[10],i;printf("从键盘输入10个整数:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=9;i>=0;i--)printf("%d",a[

i]);printf("\n");}32.编写一个程序,已知6≤a≤50,10≤b≤30,求出满足不定方程3a+2b=120的全部整数组解。如(20,30)就是其中的一组解。参考答案:#include<stdio.h>voidmain(){inta,b;for(a=6;

a<=50;a++)for(b=10;b<=30;b++)if(3*a+2*b==120)printf("(%d,%d)\n",a,b);}综合测试2一、单选题(每小题2分,共20分)1.C语言源程序文件的缺省扩展名为()。a.Cb.exec

.cppd.obj2.设x和y均为逻辑值,则x&&y为真的条件是x和y()。a.均为真b.其中一个为真c.均为假d.其中一个为假3.在下列的符号常量定义中,正确的定义格式为()。a.constintM220b.#defineM310c.#defineM1d.constcharmark4.f

or循环语句能够被改写为()语句。a.switchb.whilec.复合d.if5.在下面的一维数组定义中,错误的定义格式为()。a.inta[5];b.inta[]={1,2,3};c.inta[];d.inta[10]={0};6.下面的函数原型声明中存在

语法错误的是()。a.voidAA(inta,intb);b.voidAA(int,int);c.voidAA(inta;intb;);d.voidAA(inta,int);7.假定a为一个数组名,则下面存在错误

的表达式为()。a.*ab.a[i]c.*a++d.*(a+1)8.假定有定义为“inta[10],x,*pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的赋值为()。a.x=a[3]b.x=*(a+3)c.x=pa[3]d.x=*pa+39.char类型的长度为______

__个字节。a.2b.4c.1d.310.向一个二进制文件中写入信息的函数为()。a.fgets()b.fread()c.fwrite()d.fputs()二、填空题(每小题2分,共26分)11.C语言中的每条复合语句以(

})作为结束符。12.在#include命令中所包含的文件,可以是头文件,也可以是(程序)文件。13.十进制数56对应的八进制数为(070)。14.假定x=5,则表达式12+x++的值为(17)。15.增量表达式++y表示成赋值表达

式为(y=y+1)。16.若x=5,y=6,则x>y的值为(0)。17.假定二维数组的定义为“inta[4][5];”,则该数组所含元素的个数为(20)。18.执行“typedefintABC[20];”语句把ABC定义为具有20个整型元

素的(数组)类型。19.strcat()函数用于(连接)两个字符串。20.假定p所指对象的值为30,p+1所指对象的值为24,则*p++的值为(30)。21.若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为((char)p)。22.NULL是一个符号常量,通常作为空指针值,

它对应的值为(0)。23.假定要动态分配一个类型为structWorker的对象,并由r指针指向这个对象,则使用的表达式为(structWorkerr)=malloc(sizeof(structWorker))。三、写出下列每个程序运行后的输出结果(每小题6分,共3

0分)24.#include<stdio.h>voidmain(){inti,s=0;for(i=1;i<7;i++)s+=i*i;printf(“s=%d\n”,s);}输出结果:s=9125.#inclu

de<stdio.h>#defineN6voidmain(){inti,a[N]={2,5,8,10,15,20};for(i=0;i<N;i++)if(a[i]%4==0)printf("%d",a[i]);printf("\n");}输出结果:

82026.#include<stdio.h>#include<string.h>voidmain(){inti;unsignedintlen;char*a[5]={"stud","work","cadre",

"soldier","zan123"};len=strlen(a[0]);for(i=1;i<5;i++)if(strlen(a[i])>len)len=strlen(a[i]);printf("%d\n",len);}输出结果:727.#include<stdio.h>v

oidmain(){inta,b;for(a=2,b=3;b<30;){printf("%d%d",a,b);a=a+b;b=a+b;}}输出结果:2358132128.#include<stdio.h>void

LE(int*a,int*b){intx=*a;*a=*b;*b=x;}voidmain(){intx=5,y=8;printf("%d%d",x,y);LE(&x,&y);printf("%d%d\

n",x,y);}输出结果:5885四、写出下列每个函数的功能(每小题6分,共12分)29.#include<math.h>intSG(intx){//x为大于等于2的整数inta=(int)sqrt(x);//sqrt(x)取x的平方根inti=2;whil

e(i<=a){if(x%i==0)break;i++;}if(i<=a)return0;elsereturn1;}函数功能:判断x是否为一个素数,若是则返回1,否则返回0。30.intFindMax(str

uctIntNode*f)//f为一个单链表的表头指针{intx;if(!f){printf("单链表为空\n"),exit(1);}x=f->data;f=f->next;while(f){if(f->data>x)x=f->data;f=f->

next;}returnx;}假定structIntNode的类型定义为:structIntNode{intdata;structIntNode*next;};函数功能:求出由f所指向的单链表中所有结点的最大值。五、按题目要求编写程序或函数(每小题6分,共12分)31.编写一个程序,输出

35以内(含35)的、能够被4或者7整除的所有整数。参考答案:#include<stdio.h>Voidmain(){inti;for(i=1;i<=35;i++)if(i%4==0||i%7==0)printf(“%d”,i);printf(“\n”);}32.编写

一个递归函数“intFF(inta[],intn)”,求出数组a中所有n个元素之积并返回。参考答案:intFF(inta[],intn){if(n<=0){printf(“n值非法\n”),exit(1);}If(n=1)returna[n-1];elsereturna[n-1]*FF(a,

n-1);}综合测试3一、单选题(每小题2分,共20分)1.由C语言源程序文件编译而成的目标文件的默认扩展名为()。a.exeb.cppc.cd.obj2.设x和y均为逻辑值,则x||y为假的条件是()。a.它们均为假b.其中一

个为假c.其中一个为真d.它们均为真3.枚举类型中的每个枚举常量的值都是一个()。a.字符b.整数c.浮点数d.记录4.循环语句“for(i=0;i<=n;i++)S;”中循环体S被执行的次数为()。a.nb.n+1c.n-1d.15.假定有定义为“inta[4][5]={{1,3,5}

,{2,8}};”,则a[1][1]的值为()。a.3b.8c.5d.26.在下面的选项中,不能作为函数值返回类型的是()。a.intb.longc.newd.void7.假定x的值为4,y的值为6,则表达式x++*++y的值为()。a.24b.35c.30d.288.用calloc函数创

建具有10个整型元素的动态存储空间的正确调用是()。a.calloc(sizeof(int),10,)b.calloc(10,sizeof(int))c.calloc(10)d.calloc(10,sizeof(char))9.假定有定义“intb[

10],*pb;”,则不正确的赋值为()。a.pb=b+4b.pb=bc.pb=&b[0]d.pb=b[5]10.标准输入设备的文件流标识符是()。a.stderrb.stdioc.stdind.stdout二、填空题(每小题2

分,共26分)11.执行“printf("%c",'A'+3);”语句后得到的输出结果为(D)。12.shortint类型的长度为(2)。13.用类型关键字表示十进制常数3.26f的类型为(float)。14.假定y=5

,则表达式--y*3的值为(12)。15.逻辑表达式(x==0&&y>5)的相反表达式为((x!=0||y<=5)或:(x||y<=5))。16.若x=5,y=10,则x!=y的逻辑值为(1)。17.假定二维数组的定义为“inta[3][6];”,则该数组所占存储空间的字节数为

(72)。18.使用“typedefcharBB[M][N];”语句定义(BB)为含有M行N列的二维字符数组类型。19.字符串"a:\\xxk\\数据"的长度为(11)。20.假定p所指对象的值为20,p+1所指对象的值为30,则*++p的值为(30)。21.假定一个数据对象为i

nt*类型,则指向该对象的指针类型为(int)。22.假定一个结构类型的定义为“structA{inta,b;A*c;};”,则该类型的长度为(12)。23.假定要访问一个结构对象x中的数据成员a,则表示方式为(x.a)。三、写出下列每个程序运行后的输出结果

(每小题6分,共30分)24.#include<stdio.h>voidmain(){inti,s=0;for(i=1;;i++){if(s>20)break;if(i%2)s+=i;}printf("s=%d\n",s);}输出结果:s=2

525.#include<stdio.h>voidmain(){inta[9]={36,25,48,24,55,40,18,30,20};inti,b1,b2;b1=b2=a[0];for(i=1;i<9;i++){if(a[i]>b1)b1=a[i];if(a[i]<b2)b2=a[i]

;}printf("%d%d\n",b1,b2);}输出结果:551826.#include<stdio.h>voidSB(charch){switch(ch){case'A':case'a':printf("WW");break;ca

se'B':case'b':printf("GG");break;default:printf("BB");break;}}voidmain(){chara1='a',a2='B',a3='f';SB(a1);SB(a2);SB(a3);pr

intf("\n");}输出结果:WWGGBB27.#include<stdio.h>#defineM6voidmain(){inti,x;inta[M]={10,15,22,37,46,58};for(i=0;i<M/2;i++

){x=a[i];a[i]=a[M-1-i];a[M-1-i]=x;}printf("%d%d\n",a[2],a[4]);}输出结果:371528.#include<stdio.h>structWorker

{charname[15];intage;floatpay;};voidmain(){structWorkerx={"wanghua",34,4250};structWorkery,*p;y=x;p=&x;printf("%d%7.2f\n",y.age+p->age,p->p

ay+300);}输出结果:684550.00四、写出下列每个函数的功能(每小题6分,共12分)29.intFH(){intx,y=0;scanf("%d",&x);while(x!=-1){y+=x;scanf("%d",&x);}returny;}函数功能:求出

从键盘上输入的一批整数的总和,以-1作为结束数据输入的标志。30.intFF(structIntNode*f)//f为指向一个单链表的表头指针{intn=0;if(!f)return0;while(f){n++;f=f->n

ext;}returnn;}假定structIntNode的类型定义为:structIntNode{intdata;structIntNode*next;};函数功能:求出并返回由f所指向的单链表中所有结点的个数。五、按题目要求编写程序或函数(每小题

6分,共12分)31.编写一个程序,利用while循环,计算并打印输出1+12+13+⋯+1𝑛的值,其中正整数n值由键盘输入。假定求和变量用sum表示,计数变量用i表示,sum、i和n均定义为全局变量,sum和i的初值分别被赋予0和1。参考答案:#include<stdio.

h>intn,i=1;doublesum=0;voidmain(){scanf(“%d”,&n);while(i<=n)sum+=(double)1/i++;printf(“sum=%1f\n”,sum);}32.根据函数原型“void

DD(inta[],intn,intMM)”编写函数定义,利用双重循环查找并打印输出数组a[n]中任何两个元素的值等于MM值的元素值。假定a[i]+a[j]等于MM,则输出格式为:(a[i],a[j])。参考答案:voidDD(inta[],intn,intMM){intI,j;for(i=0

;i<n;i++)for(j=i+1;j<n;j++)if(a[i]+a[j]==MM)printf(“%d,%d\n”,a[i],a[j]);}综合测试4一、单选题(每小题2分,共20分)1.由C语言目标文件连接而成的可执行文件的缺省扩展名为()。a.objb.cppc.exed.c2.设有两条

语句为“inta=10;a+=a*a;”,则执行结束后,a的值为()。a.110b.20c.100d.103.带有随机函数调用的表达式rand()%50的值在()区间内。a.0~49b.0~50c.1~50d.1~494.for循环语句“for(i=0;i<n;i+=2)S;”中循环体S语句被执行

的次数为()。a.n/2+1b.n-1c.(n+1)/2d.n/2-15.在下列的字符数组定义中,存在语法错误的是()。a.chara[20]="abcdefg";b.chara[]="x+y=55.";c.chara[10]='5';d.chara[1

5]={'1','2'};6.若有一个函数原型为“double*function()”,则它的返回值类型为()。a.函数指针型b.数组型c.实数型d.实数指针型7.在C语言中,所有预处理命令都是以()符号开头的。a.#b.&c.@d.*8

.假定整数指针p所指数据单元的值为30,p+1所指数据单元的值为40,则执行*p++后,p所指数据单元的值为()。a.40b.30c.10d.709.若要使p指向二维整型数组a[10][20],则p的类型为()。a.int(*)[20]b.int**c.int*d.int*[20]10.表

示文件结束符的符号常量为()a.feofb.EOFc.eofd.Eof二、填空题(每小题2分,共26分)11.一个函数定义由(函数头)和函数体两部分组成。12.执行“printf("%c",'F'-3);”语句后得到的输出结果为(C)。13.int类型的长度为(4)。14.表达式(float)

25/4的值为(6.25)。15.若x=5,y=10,则x<=y的逻辑值为(1)。16.作为语句标号使用的case和default只能用于(switch)语句的定义体中。17.在程序中执行到(return)语句

时,将结束所在函数的执行过程,返回到调用该函数的位置。18.假定二维数组的定义为“chara[M][N];”,则该数组所含元素的个数为(MN)。19.存储字符'a'需要占用存储器的(1)个字节空间。20.用于存

储一个长度为n的字符串,需要的字符数组的长度至少为(n+1)。21.假定p所指对象的值为30,p+1所指对象的值为46,则执行表达式(*p)++后,p所指对象的值为(31)反馈22.假定p是一个指向整数对象的指针,则用(p)表示该整数对象。23.假定一个结构类型的定义为“structB{int

a[5];char*b;};”,则该类型的理论长度为(24)。三、写出下列每个程序运行后的输出结果(每小题6分,共30分)24.#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);}输出结果:253025.#include<stdio.h>constintM=20;voidmain(){inti=2;while(

1){if(i>M/2)break;if(M%i==0)printf("%d",i);i++;}printf("\n");}输出结果:2451026.#include<stdio.h>inta[7]={4,5,6,15,20,12,9};voidmain(){inti,s1,s2;s1=s2=0;

for(i=0;i<7;i++){switch(a[i]%2){case0:s2+=a[i];break;case1:s1+=a[i];break;}}printf("%d%d\n",s1,s2);}输出结果:294227.#i

nclude<stdio.h>voidmain(){inta[3][3]={{3,15,7},{9,11,10},{6,8,20}};inti,*p=&a[0][0];for(i=0;i<9;i++){if(*p>10)printf("%d",*p

);p++;}printf("\n");}输出结果:15112028.#include<stdio.h>#include<string.h>structWorker{charname[15];intage;floatpay;};voidmain(){structWork

erx;char*t="liouting";intd=38;floatf=2400;strcpy(x.name,t);x.age=d;x.pay=f;x.age++;x.pay*=2;printf("%s%d%6.2f\n",x.name,x.age,

x.pay);}输出结果:liouting394800.00四、写出下列每个函数的功能(每小题6分,共12分)29.#include<stdio.h>intSA(inta,intb){if(a>b)return1;elseif(a==b)return0;e

lsereturn-1;}函数功能:比较两个整数a和b的大小,若a>b则返回1,若a==b则返回0,若a<b则返回-1。30.voidOutput(structIntNode*f)//f为单链表的表头指针{if(!f)return;while(f){printf("%d",f->data);f=f

->next;}printf("\n");}假定structIntNode的类型定义为:structIntNode{intdata;structIntNode*next;};函数功能:遍历并输出由f所指向的单链表中每个结点的值。五、按题目要求编写程序或函数(每小题6分,共1

2分)31.编写一个程序,计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。参考答案:#include<stdio.h>voidmain(){inti;intp=1;i

nts=1;ior(i=1;i<=10;i++){p*=3;s+=p;}printf(%d\n”,s);}32.根据函数原型“intFF(inta[],intn)”,编写函数定义,计算并返回数组a[n]中所有元素之和。参考答案:intFF(inta[],intn){inti,sum=0;fo

r(i=0;i<n;i++)sum+=a[i];returnsum;}综合测试5一、单选题(每小题2分,共20分)1.程序运行中需要从键盘上输入多于一个数据时,各数据之间默认使用()符号作为分隔符。a.逗号或分号b.空格或回

车c.空格或逗号d.逗号或回车2.逻辑表达式(x>0&&x<=10)的相反表达式为()。a.x<=0||x>10b.x<=0&&x>10c.x>0&&x>10d.x<=0||x<=103.当处理一个问题时的循环次数已知时,最好

采用()循环来解决。a.whileb.do-whilec.switchd.for4.假定i的初值为0,则在循环语句“while(i<n){s+=i*i;i++;}”中,其循环体被执行的总次数为()。a.n-1b.n/2c.n+1d.n5.假定一个二维数组的定义

语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。a.4b.8c.2d.66.在下列选项中,不正确的函数原型格式为()。a.intFunction(a);b.intFunct

ion(inta);c.intFunction(inta);d.voidint(double*a);7.假定p是一个指向double类型的数据指针,则p+1所指向的数据的地址比p所指向的数据的地址大()个字节。a.8b.2c.4d.18.假定有一条定义语句为“intm=7,*p;”,则给p赋

值的正确表达式为()。a.*p=&mb.p=&mc.p=md.p=*m9.假定指针变量p的定义语句为“int*p=malloc(sizeof(int));”,要释放p所指向的动态存储空间,应调用的函数为()。a.del

ete(p)b.free(*p)c.free(&p)d.free(p)10.C语言中的系统函数fopen()是()一个数据文件的函数。a.关闭b.读取c.打开d.写入二、填空题(每小题2分,共26分)11.用

于输出表达式值的标准输出函数的函数名是(printf)。12.每个C语言程序文件在编译时可能出现有致命性错误,其对应的标识符为(error)。13.已知'A'~'Z'的ASCII码为65~90,当执行“intx='C'+6;”语句后x的值为(73)。14

.表达式(int)24.6的值为(24)。15.假定不允许使用逻辑非操作符,则关系表达式x+y>5的相反表达式为(x+y<=5)。16.假定x=15,则执行“a=(x?10:20);”语句后a的值为(10)。17.假定一维数组a的定义语句为“char*a[M];”,则该数组所占存储空间的字节

数为(4M)。18.存储字符串"a"需要至少占用存储空间中的(2)个字节。19.strlen()函数用于计算一个字符串的(长度)。20.在C语言中,一个函数定义由函数头和(函数体)这两个部分组成。21.假定p

所指对象的值为25,p+1所指对象的值为52,则执行表达式*(p++)后,p所指对象的值为(52)。22.假定p是一个变量,则用(&p)表示该变量的地址。23.把间接访问表达式p->name改写成对应的直接访问表

达式为((p).name)。三、写出下列每个程序运行后的输出结果(每小题6分,共30分)24.#include<stdio.h>voidmain(){intn=6,y=1;while(n--)y+=3+n;printf("y=%

d\n",y);}输出结果:y=3425.#include<stdio.h>voidmain(){inti,s=0;for(i=1;i<10;i++)if(i%3==0||i%4==0)s+=i;printf("s=%d\n",s);}输出结果:s=3026.#include<

stdio.h>voidmain(){chara[]="abcfkgamd";inti1=0,i2=0,i=0;while(a[i]){if(a[i]<'e')i1++;elsei2++;i++;}printf("%d%d\n",i1,i2);}输出结果:5427.#include<st

dio.h>voidmain(){inta[9]={2,4,8,12,16,20,24,28,32};int*p=a;do{printf("%d",*p);p+=3;}while(p<a+9);printf("\

n");}输出结果:2122428.#include<stdio.h>structWorker{charname[15];intage;doublepay;};voidmain(){structWorkera[4]={{"abc",20,2400},{"defa",50,3600},{

"ghin",40,2500},{"jklt",36,3200}};inti,s=0;for(i=0;i<4;i++)s+=a[i].age;printf("s=%5.2Lf\n",(double)s/4);}输出结果:s=36.50四、写出下列每个函数的功能(每小题6分,共12分)29.

intSC(inta,intb,intc){if(a>=b&&a>=c)returna;if(b>=a&&b>=c)returnb;returnc;}函数的功能:求出a,b,c三个数中的最大值并返回。30.int*LI(intn)

{int*a=malloc(n*sizeof(int));inti;for(i=0;i<n;i++)scanf("%d",a+i);returna;}函数的功能:首先建立一个动态整型数组a[n],接着

从键盘上输入n个整数到a[n]中,最后返回数组a[n]的首地址。五、按题目要求编写函数(每小题6分,共12分)31.编写一个函数,函数原型为“intfun4(char*a)”,请采用while循环求出由字符指针a所指向的字符串中包含的十进制数字的个数,并把这个值作为函数值返回。参考答案:intf

un4(char*a){intn=0;while(*a){if(*a>=”0”&&*a<=”9”)n++;a++;}returnn;}32.编写一个主函数,计算并输出表达式1+22+32+...+n2的值,假定正整数n的值由键盘输入。参考答案:#include<st

dio.h>voidmain(){intn,i,s=0scanf(“%d”,&n);for(i=1;i<=n;i++)s+=i*I;printf(“s=%d\n”,s);}综合测试6一、单选题(每小题2分,共20分)1.C语言程序中的基

本功能模块为()。a.语句b.函数c.标识符d.表达式2.逻辑表达式(x>0||y==5)的相反表达式为()。a.x>0||y!=5b.x<=0||y!=5c.x>0&&y==5d.x<=0&&y!=53.循环

体至少被执行一次的循环语句为()。a.任一种循环b.forc.do-whiled.while4.假定n的值为5,则表达式n++的值为()。a.4b.7c.5d.65.假定一个二维数组a的定义为“inta[3

][4]={{3,4},{2,8,6}};”,则元素a[2][0]的值为()。a.4b.2c.0d.66.假定一个函数原型为“char*func(intn)”,则该函数的返回值类型为()。a.int*b.char*c.chard.int7.假定a为一个数组名,则元素a[i]的指针访问方式为(

)。a.*a+ib.a+ic.*(a+i)d.&a+i8.假定有语句为“int*p=calloc(n+1,sizeof(int));”,则p所指向的动态数组中所包含的元素个数为()。a.n-1b.nc.n+1d.4*n9.十进制数65表示成符合C语言规定的八进制数为()。a.0101

b.065c.081d.10110.若要以读和写两种操作方式打开一个二进制文件,当文件不存在时返回打开失败信息,则选用的打开方式字符串为()。a."wb+"b."rb+"c."r+"d."ab+"二、填空题(每小题2分,共26分)11.在一个C语言程序文件中,若要包含另外

一个头文件或程序文件,则应使用的预处理命令为(#include)。12.用于从键盘上为变量输入值的标准输入函数的函数名为(scanf)。13.假定一个枚举类型的定义为“enumRA{ab,ac,ad,ae};”,则ac的值为(1)

。14.double类型的长度为(8)。15.执行“intx=45,y=16;printf("%d",x/y);”语句序列后得到的输出结果为(2)。16.把表达式x=x+y转换成复合赋值表达式为(x+=y)。17.假定x的值为5,则执行“a=(!x?10:20);”语句后a的值为

(20)。18.假定一维字符指针数组a的定义为“char*a[8];”,则该数组占用的存储空间的字节数为(32)。19.假定二维数组的定义为“doublea[M][N];”,则数组元素的行下标取值范围在(0~M-1)之间。20.空字符串的长度

为(0)。21.在所有函数定义之外定义的变量,若没有被初始化则系统隐含对它所赋的初值为(0)。22.若p指向x,则(p)与x的表示是等价的。23.直接访问表达式(*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);}输出结果:1525

.#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);}

输出结果:27226.#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=23327.#include<stdio.h>intWF(intx,inty){x=x+y;y+=x;returnx+y;}voidmain(){intx=5,y=8;prin

tf("%d\n",WF(x,y));}输出结果:3428.#include<stdio.h>intLA(int*a,intn){inti,s=0;for(i=0;i<n;i++)s+=a[i];ret

urns;}voidmain(){inta[5]={4,2,3,6,5};intb=LA(a,5)+LA(a+2,3);printf("b=%d\n",b);}输出结果:b=34四、写出下列每个函数的功能(每小题6分,共12分)29.intWC(inta[

],intn,intk){inti,c=0;for(i=0;i<n;i++)if(a[i]>=k)c++;returnc;}函数功能:统计并返回一维整型数组a[n]中大于等于k的值的个数。30.voidQA(structWork

era[],intn){inti;for(i=0;i<n;i++)scanf("%s%d%f",a[i].name,&a[i].age,&a[i].pay);}假定结构类型structWorker的定义如下:structWorker{charn

ame[15];intage;floatpay;};函数功能:从键盘上为具有structWorker结构类型的数组a[n]输入n个记录。五、按题目要求编写函数(每小题6分,共12分)31.根据函数原型“doubleMean(doublea[M][N],intm,intn)”,编写函数定义,要求返回

二维数组a[m][n]中所有元素的平均值。假定在计算过程中采用变量v存放累加值和最后的平均值。参考答案:doubleMean(doublea[M][N],intm,intn){inti,j;doubl

ev=0.0;for(i=0;i<m;i++)for(j=0;j<n;j++)v+=a[i][j];v/=m*n;returnv;}32.根据函数原型“intMM(inta[],intm)”,编写函数定义,计算并返

回数组a[m]中元素最大值和最小值之差。参考答案:intMM(inta[],intm){inti,x1,x2;x1=x2=a[0];for(i=1;i<m;i++{if(a[i]>x1)x1=a[i];if(a[i]<x2)x2=a[i];}returnx1-x2;}

小喜鸽
小喜鸽
好文档,与你分享
  • 文档 161806
  • 被下载 28975
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?