试卷代号:1253 座位号■ 中央广播电视大学2012一2013学年度第一学期“开放本科”期末考试 C语言程序设计A试题 2013年1月 题 号 三 四 五 总分 分数 得分 评卷人 一、单选题(每小题2分,共20分) 1.C语言源程序文件的缺省扩展名为( )。 A.cpp B.exe C.obj D.c 2.设x和y均为逻辑值,则x&&y为真的条件是( )。 A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假 3.在下列的符号常量定义中,正确的定义格式为()。 A.define Ml B.const int M2 20 C.define M3 10 D.const char mark 4.for循环语句能够被改写为()语句。 A.复合 B.if C.switch D.while 5.在下面的一维数组定义中,错误的定义格式为( )。 A.inta[]={1,2,3}; B.int aC10]=(0); C.int a]; D.int a[5]; 1151
试卷代号 座位号 中央广播电视大学 2 0 3学年度第一学期"开放本科"期末考试 言程序 计A 2013 年1 |题号|一|二|三|四|五|总分| |分数 I I I I II |得分|评卷人| 题{每小题 I I I I. C语言源程序文件的缺省扩展名为( )。 A. cpp B. exe C. o~ D. c 2. 逻辑值 &. &. 条件是 )。 A.它们均为真 .其中一个为真 C. 它们均 假D. 3. 在下 符号常量定义 正确 定义格式 )。 A. ** define Ml C. 科define M3 10 B. canst int M2 20 D. canst char mark 4. for )语句。 A. 合B.if C. switch D. while 5. 在下面 组定 义格式 )。 A. int a[J === {l ,2, 3} ; C. int a[J; B. int a[lOJ==={O}; D. int a[5J; 1151
6.在下面的函数原型声明中,存在语法错误的是( )。 A.int AA(int a,int b); B.int AA(int,int); C.int AA(int a;int b;); D.int AA(int a,int); 7.假定a为一个数组名,则下面存在错误的表达式为()。 A.aCi] B.#a十十 C.*a D.*(a+1) 8.假定有定义为“inta[l0],x,*pa=a;”,若要把数组a中下标为3的元素值赋给x,则 不正确的赋值为( )。 A.x=pa[3] B.x=*(a十3) C.x=a[3] D.x=米pa十3 9.字符串"y=%d八n"的长度为()。 A.5 B.6 C.4 D.3 10.向一个二进制文件中写入信息的函数为( )。 A.fgets() B.fputs() C.fread() D.fwrite() 得分 评卷人 二、填空题(每小愿2分,共26分) 11.一个函数定义由 和函数体两部分组成。 l2.执行“printf("%c”,'F’一2),”语句后得到的输出结果为 l3.int数据类型的长度为 14.表达式25/4的值为 15.若x=5,y=10,则执行“if(x<=y)c=3,else c=8,”语句后,c的值为 16.保留字case和default出现在(if/switch/for/while) 语句中。 1152
6. 在下 数原 存在 法错 A. int AA (int a ,int b); C. int AA (int a; int b;); B. int AA(i int); D. int AA (int a. int); 7. 假定 个数组 则下面 错误 达式 ). A. a[i] C. B. D. l) 8. 有定义为"int [IO].x 警pa=a;" ,若要把数组 a中下标为 3的元素值赋给 x,则 不正确的赋值为( ). A. x=pa[3] B. x= 誓(a+3) C. x=a[3] D. x= 餐pa+3 9. A. 5 C.4 ). B. 6 D.3 10. )。 A. fgetsO B. fputsO C. freadO D. fwriteO |得分|评卷人 填空{每小题 I I I- 11. 定义 数体两部 组成 12. 行"p:r;intf("%c飞'F' 一2) 结果 13. int 长度 14. 式25/4 15. 若x=5 ,y=10 行"if(x<=y) c=3;else c=8;" 句后 ,c 16. 字case 和default 在(if/switch/for/while) 1152 语句中
l7.在函数调用中执行到(return/break/.continue/if) 语句时,将结束所在函 数的执行过程,返回到调用该函数的原来位置。 18.假定二维数组的定义为“char a[M][N];”,则该数组共包含有 个字符 元素。 19.存储字符'a'需要占用存储器的个字节空间。 20.若一个字符串的长度为,则存储它的字符数组的长度至少为 21.假定p所指对象的值为25,P+1所指对象的值为46,则执行表达式(*p)十十后,p 所指对象的值为 22.假定P是一个指向整数对象的指针,则用 表示该整数对象。 23.假定一个结构类型的定义为“struct B{inta[5];char*b;};”,则该类型的理论长度为 得分 评卷人 三、写出下列每个程序运行后的输出结果(每小题6分,共30分)】 24.include void main(){ int n=4,y=0; while(n--)y+=3; printf("y=%d\n",y); } 输出结果: 25.include<stdio.h void main() int i,s=0; for(i=1;i<8;i++) if(i%2==01li%3==0)s+=i; printf("s=%d\n",s); 输出结果: 1153
17. 到(return/break/continue/if) 数的执行过程,返回到调用该画数的原来位置。 语句时,将结束所在画 18. 为"char arM] [N] 该数组共包含 元素。 个字符 19. 存储 个字节空间。 20. 存储 数组 1. 定p 为25 ,p+1 为46 达式 铃p) 十 + ,p 所指对象的值为 22. 假定 表示该整数对象。 23. 假定 定义为"struct B{int a[5]; char 椿b;} 理论长度 三、写出下列每个程序运行后的输出结果{每小题6分,共 0分} 24. *1= include void mainO { int n=4 , y=O; while(n- y+=3; printf("y= %d\n飞y) ; 输出结果 25. *1= include void mainO int i, s=O; for (i=l;i<8;i++) if<i%2= =0 II i%3= =0) 十=i; printf(飞=%d\n飞s) ; 输出结果 1153
26.#include<stdio.h void main(){ char a[]="acdbfkmd"; inti1=0,2=0,i=0; while(aLi]){ if(ali]<'d')il++;else i2++; i++; printf("d%d\n",il,i2); 输出结果: 27.include<stdio.h void main(){ inta[8]={4,8,12,16,20,24,28,32}; int p=a,s=0; do (s+=*p;p+=3;)while(p<a+8); printf("s=%d\n",s); 输出结果: 28.include<stdio.h struct Worker char name[15];int age;double pay;); void main(){ struct Worker a[4]={"abc",20,2400},{"defa",50,3600}, ("ghin",40,1800},{"k1t",36,2200}; int i;double s=0; for(i=0;i<4;i++)s+=a[i].pay; printf("s=%8.2LA\n",s); } 输出结果: 1154
26. # include void mainO { char a[J=飞cdbfkmd int i1=0 , i2=0 , i=O; while(a[iJ) { if(a[i] void mainO { int a [8J= ,8 ,12 ,16 ,20 ,24 ,32}; int * p=a , s=O; do {s+= 铃p;p+=3; }while(p struct Worker { char name[15J; int age; double pay;}; void mainO { struct Worker a[4J = {{"abc",20, 2400}, {飞 {"ghin飞40 ,1800} , {"jklt", 36 ,2200}}; int i; double s=O; for <i=O; i<4; 十=a[i]. pay; printf(飞=%8.2Lf\n'飞s) ; 输出结果 1154
得分 评卷人 四、根据下列每个函数回答相应问题(每小题6分,共12分】 29.假定使用SF(30)调用下面函数,则得到的输出结果为 void SF(int x){ int i=2; while(x>=i){ if(x%i==0)(printf("%d ",i);x/=i;) i++; } } 30.假定结点的结构类型为IntNode,它的数值域为data,链接指针域为next,请指出下面 函数的功能。 void QC(struct IntNode*f){/f为一个单链表的表头指针 while(f){ printf("%d",f->data); f=f->next; } 函数功能: 得分 评卷人 五、按题目要求编写程序或函数(每小题6分,共12分)】 31.编写一个主函数,利用wile循环计算1+2十4+…+2°的值,最后输出计算结果。假定计 数变量用i表示,每次累乘2的变量用p表示,每次累加一个数据项值的变量用sum表示。 32.根据函数原型“void DD(int a],intn,int MM)”编写函数定义,利用双重for循环 统计出数组a[]中任何两个不同元素的值等于MM值的配对个数,然后返回统计结果。如假 定a[i]十aj们等于MM,同时i≠j,则为一个配对。 1155
得 分 人l I I IM 每小 itt 29. 假定 用SF(30) void SF(int x) { int i=2; while(x>=i) { if(x%i= =0) {printf("%d",i); x/=i;} i++; 30. 为IntNode 数值域为data 链接 针域为next 函数的功能。 void QC(struct IntNode Ilf 个单链表 指针 while(f) { printf(" %d " , 一>data) ; f=f 一>next; 函数功能 |得分|评卷人| I I I 五、按题目要求编写程序或函数{每小题 6分,共 2分} 1. 编写一个 hi 算1+2+4+…+2 算结果 数变量用 i表示,每次累乘 2的变量用 每次 加一个数 变量 表示 32. 型"void DD(int int n , int MM)"编 写 数定义 重for 统计出数组 ]中任何两个不同元素的值等于 M值的配对个数,然后返回统计结果。如假 Ci [j]等于 MM,同时 j,则为一个配对。 1155
试卷代号:1253 中央广播电视大学2012一2013学年度第一学期“开放本科”期末考试 C语言程序设计A试题答案及评分标准 (供参考) 2013年1月 一、单选题(每小题2分,共20分) 1.D 2.A 3.C 4.D 5.C 6.C 7.B 8.D 9.A 10.D 二、填空题(每小题2分,共26分】 11.函数头 12.D 13.4 14.6 15.3 16.switch 17.return 18.M'N 19.1 20.n+1 21.26 22.*p 23.24 1156
试卷代号 5 3 中央广播电视大学 3学年度第一学期"开放本科"期末考试 计A 评分标准 (供参考) 2013 年1 一、单选题(每小题 1. D 6. C 2.A 7. B 3. C 8.D 4.D 9. A 5.C 10. D 二、填空题{每小题 1. 数头 12. D 13. 4 14. 6 15. 3 16. switch 17. return 18. 怜N 19. 1 20. n+1 21. 26 22. 23. 24 1156
三、写出下列每个程序运行后的输出结果(每小题6分,共30分) 评分标准:根据答案正确程度酌情给分。 24.y=12 25.s=15 26.35 27.s=48 28.s=10000.00 四、根据下列每个函数回答相应问题(每小题6分,共12分) 评分标准:根据答题的正确与完整程度酌情给分。 29.235 30.遍历输出由表头指针f所指向的单链表中每个结点的data域的值。 五、按题目要求编写程序或函数(每小题6分,共12分) 评分标准:根据编写程序或函数的正确与完整程度酌情给分。 31.void main() int i=1,p=1,sum=1; //1分 while(i<=10)(p*=2;sum+=p;+;} /14分 printf("sum=%d\n",sum); /16分 } 32.int DD(int a],int n,int MM) { int i,j,c=0; /1分 for(i=0;i<n;i++) /2分 for(j=i+1;j<n;j++) /13分 if(a[i]+aj]==MM)c++; /15分 return c; I16分 1157
三、写出下列每个程序运行后的输出结果{每小题 6分,共 0分} 评分标准:根据答案正确程度酌情给分。 24. y=12 25. s=15 26. 35 27. s=48 28. s=10000.0 四、根据下列每个函数回答相应问题{每小题 6分,共 2分} 评分标准 z根据答题的正确与完整程度酌情给分。 29. 2 3 5 30. 遍历 头指针f 的data 五、按题目要求编写程序或函数{每小题 6分,共 2分} 评分标准 z根据编写程序或函数的正确与完整程度酌情给分。 31. void mainO int i=l , p=l , sum=l; while(i<=10) {p 祷=2; sum+=p; i++;} printf(飞um=%d\n飞sum); 32. int DD(int int n , int MM) int i ,j ,c=O; for (i=O;i<n; i++) for(j=i+1; j<n; j++) if(a[iJ+a[jJ= =MM) c++; return c; //1 //4 //6 //1 //2 //3 //5 //6 1157