试卷代号:1253 座位口 中央广播电视大学2009一2010学年度第一学期“开放本科”期末考试 C语言程序设计A试题 2010年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.inta[10]={0} C.int a] D.int a[5] 6.下面的函数原型声明中存在语法错误的是()。 A.AA(int a,int b) B.AA(int,int) C.AA(int a;int b;) D.AA(int a,int) 1374
试卷代号:1253 座位号口二] 中央广播电视大学2009-2010学年度第一学期“开放本科”期末考试 C语言程序设计 A 试题 2010年 1月 题 号 四 五 总 分 分 数 得 分 评卷人 一、单选题(每小题 2分。共 20分) l. C语言源程序文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. C 2.设x和Y均为逻辑值,则x衣aY为真的条件是( )。 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. int a[]={1,2,3} B. int a[10]={0} C. int a[] D. int a[5] 6.下面的函数原型声明中存在语法错误的是( )。 A. AA(int a, int b) C. AACint a; int b;) B. AA(int, int) D. AA(int a, int) 1374
7.假定a为一个数组名,则下面存在错误的表达式为的()。 A.a[i] B.*a十十 C.*a D.*(a+1) 8.假定有定义为“inta[1l0],x,pa=a;”,若要把数组a中下标为3的元素值赋给x, 则不正确的赋值为()。 A.x=pa3] B.x=¥(a十3) C.x=a[3] D.x=*pa十3 9.char类型的长度为( )个字节。 A.1 B.2 C.3 D.4 10.向一个二进制文件中写人信息的函数为()。 A.fgets() B.fputs() C.fread() D.fwrite() 得分 评卷人 二、填空题(每小题2分,共26分) 1.C语言中的每条复合语句以 作为结束符。 2.在#include命令中所包含的文件,可以是头文件,也可以是 文件。 3.十进制数35对应的八进制数为 4.假定x=5,则表达式2十x十十的值为 5.增量表达式十十y表示成赋值表达式为 6.若x=5,y=10,则x>y的值为 7.假定二维数组的定义为“inta[3][5];”,则该数组所含元素的个数为 8.执行“typedef int ABC[l0];”语句把ABC定义为具有l0个整型元素的 类 型。 9.strcat()函数用于 两个字符串。 10.假定p所指对象的值为25,p十1所指对象的值为46,则p+十的值为 11.若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为 12.NULL是一个符号常量,通常作为空指针值,它对应的值为 l3.假定要动态分配一个类型为struct Worker的对象,并由r指针指向这个对象,则使 用的表达式为 =malloc(sizeof(struct Worker)). 1375
7.假定 a为一个数组名,则下面存在错误的表达式为的( )。 A. a[i] B.‘a++ C. ,a D. ,(a+ 1) 8.假定有定义为“int a[10], x, * pa=a;",若要把数组a中下标为3的元素值赋给x, 则不正确的赋值为( )。 A. x=pa[3] B. x=,(a+3) C. x=a[3] D. x=‘pa+3 9. char类型的长度为( )个字节。 A. 1 B. 2 C. 3 D. 4 10.向一个二进制文件中写人信息的函数为( )。 A. fgets() B. fputs() C. fread() D. fwrite() 得 分 评卷人 二、填空题(每小题 2分,共 26分) 1. C语言中的每条复合语句以 作为结束符。 2.在#include命令中所包含的文件,可以是头文件,也可以是_ 文件。 3.十进制数35对应的八进制数为_ 。 4.假定x=5,则表达式2+x++的值为_ 。 5.增量表达式+十y表示成赋值表达式为 6.若 x=5,y=10,则 X>y的值为_ 。 7.假定二维数组的定义为“inta[3][5];",则该数组所含元素的个数为_ 。 8.执行“typedef int ABC[10];”语句把ABC定义为具有10个整型元素的_ 类 型 。 9. strcat()函数用于_ 两个字符串。 10.假定p所指对象的值为25,p+1所指对象的值为46,则‘p+十的值为_ 。 11.若要把一个整型指针P转换为字符指针,则采用的强制转换表达式为_ 。 12. NULL是一个符号常量,通常作为空指针值,它对应的值为_ 。 13.假定要动态分配一个类型为 struct Worker的对象,并由 r指针指向这个对象,则使 用的表达式为 =malloc(sizeof(struct Worker)). 1375
得分 评卷人 三、写出下列每个程序运行后的输出结果(每小题6分,共30分) 1.include void main(){ int i; unsigned int len; char a[5]=("student","worker","cadre","soldier","zzeasan123") len=strlen(a[O]); for(i=1;ilen)len=strlen(a[i]); printf("%d\n",len); 1376
得 分 评卷人 三、写出下列每个程序运行后的输出结果(每小题 6分.共 30分) 1. #include void main() int i,s=0 for(i=1;i #define N 6 void main( ) int i,a[N〕二{2,5,8,10,15,21}; for(i=0;i #include void main(){ int i; unsigned int len; char,a[5]= ("student", "worker,"cadre',"soldier',"zzeasan123"} len=strlen(a[o]); for(i=1; ilen) len=strlen(a[i]); printf ("肠d\矿,len); 1376
4.include int SG(int x){ //x为大于等于2的整数 int a=(int)sqrt(x); //sqrt(x)取x的平方根 int i=2; while(i<=a){ if(x%i==0)break; 1377
4.#include void main( ) int a, b; for(a=2,b=3;b void LE(int, a, int二 b){ int x 爷 a 二二二 :关a; *b; * b=x; } void main(){ int x=15,y=26; printf("%d 0od\n",x,y); LE(&x, &y); printf ("ood 0 o d\n", x, y); 得 分 评卷人 四、写出下列每个函数的功能【每小题 6分 .共 12分 ) 1.#include int SG(int x){ int a二(int)sqrt(x); inti=2; while(i<=a){ if(x%i==0) break; 刀x为大于等于 2的整数 刀sqrt ( x)取 x的平方根 1377
i++ } if(idata; f=f->next; while(f)( if(f->data>x)x=f->data; f=f->next; } return x; } 假定struct IntNode的类型定义为: struct IntNode int data;struct IntNode next;); 函数功能: 得分 评卷人 五、按题目要求编写程序或函数(每小题6分,共12分) 1.编写一个程序,输出50以内(含50)的、能够被3或者5整除的所有整数。 2.编写一个递归函数"int FF(inta[],intn)",求出数组a中所有n个元素之积并返回。 1378
1十+ ; if(i data; f=f一> next; while(f){ if(f->data>x) x=f->data; f二f-> next; return x; 假定struct IntNode的类型定义为: struct IntNode(int data; struct IntNode二next;}; 函数功能 : 得 分 评卷人 五、按题 目要求编写程序或函数(每小题 6分 ,共 12分! .编写一个程序,输出 50以内(含 50)的、能够被 3或者 5整除的所有整数。 .编写一个递归函数"int M int a[], int n)",求出数组 a中所有 n个元素之积并返回。 1378
试卷代号:1253 中央广播电视大学2009一2010学年度第一学期“开放本科”期末考试 C语言程序设计A试题答案及评分标准 (供参考) 2010年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分)】 1.}(或右花括号) 2.程序 3.043 4.7 5.y=y+1 6.0(假) 7.15 8.数组 9.连接 10.25 11.(char *)p 12.0 13.struct Worker r 三、写出下列每个程序运行后的输出结果(每小题6分,共30分) 评分标准:根据答案正确程度酌情给分。 1.s=55 2.2821 1379
试卷代号:1253 中央广播电视大学2009-2010学年度第一学期“开放本科”期末考试 C语言程序设计 A 试题答案及评分标准 (供参考) 2010年 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分) .}(或右花括号) .程序 3. 043 4. 7 ·y=y+1 .0(假) 7. 15 数组 连接 10. 25 11.(char,)p 12. 0 13. struct Worker * r 三、写出下列每个程序运行后的输出结果【每小题 6分.共 30分) 评分标准:根据答案正确程度酌情给分。 1. s=55 2. 2 8 21 1379
3.10 4.23581321 5.1526 2615 四、写出下列每个函数的功能(每小题6分,共12分)】 评分标准:根据答案叙述的正确与完整程度酌情给分。 1.判断×是否为一个素数,若是则返回1,否则返回0。 2.求出由f所指向的单链表中所有结点的最大值。 五、按题目要求编写程序或函数(每小题6分,共12分) 评分标准:根据程序或函数编写的正确与完整程度酌情给分。 1.#include<stdio.h /11分 void main() { int i; 112分 for(i=3;i<=50;i++) /13分 if(i%3==0i%5==0)printf("%d",i);//6 printf(\n"); 2.int FF(int a],int n) if(n<=0){printf("n值非法\n"),exit(l);} /可省略 if(n==1)return afn-1]; /12分 else return a[n-1]*FF(a,n-1); /16分 1380
3. 10 4. 2 3 5 8 13 21 5. 15 26 26 15 四、写出下列每个函数的功能(每小题 6分 ,共 12分》 评分标准:根据答案叙述的正确与完整程度酌情给分。 1.判断 x是否为一个素数,若是则返回1,否则返回。。 2.求出由 f所指向的单链表中所有结点的最大值。 五、按题目要求编写程序或函数《每小题 6分,共 12分, 评分标准:根据程序或函数编写的正确与完整程度酌情给分。 1.#include //1分 void main() int i; //2分 for(i=3;i<=50;i++) //3分 if(i%3==0 I}i%5==0) printf("%d ",i);//6分 printf ("\n"); 2. int M int aE1,int n) if(n<=0) {printf("n值非法\n") ,exit(1);} if (n二=1) return a[n-1]; else return a[n-1],FF(a,n-1); 刀可省略 刀2分 刀6分 1380