试卷代号: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<stdio.h void main(){ int i,s=0; for(i=I;i<6;i++)s+=i*i; printf(“s=%dn”,s); 2.include<stdio.h #define N 6 void main() inti,a[N]={2,5,8,10,15,21}: for(i=0;i<N;i++) if(a[i]5)printf("%d",a]); printf("\n"); 3.include<stdio.h #include<string.h> void main(){ int i; unsigned int len; char a[5]=("student","worker","cadre","soldier","zzeasan123") len=strlen(a[O]); for(i=1;i<5;i++) if(strlen(a[i])>len)len=strlen(a[i]); printf("%d\n",len); 1376
得 分 评卷人 三、写出下列每个程序运行后的输出结果(每小题 6分.共 30分) 1. #include< stdio. h> void main() int i,s=0 for(i=1;i<6;i++)s十=i,i; printf ("s= % d\n" , s); } 2.#include<stdio. h> #define N 6 void main( ) int i,a[N〕二{2,5,8,10,15,21}; for(i=0;i<N; i十+) if (a[i] o a5) printf(" Yo d",a[i]); printf ("\矿); 3.#include< stdio. h> #include<string. h> void main(){ int i; unsigned int len; char,a[5]= ("student", "worker,"cadre',"soldier',"zzeasan123"} len=strlen(a[o]); for(i=1; i<5; i十十) if(strlen(a[i])>len) len=strlen(a[i]); printf ("肠d\矿,len); 1376
4.include<stdio.h void main() { int a,b; for(a=2,b=3;b<20;){ printf("%d %d",a,b); a=a十b; b=a十b: } printf("%d %d\n",a,b); } 5.#include<stdio.h void LE(int a,int b){ int x=*a; *a=*b;米b=X3 void main(){ intx=15,y=26: printf("%d %d\n",x,y); LE(&x,&y): printf("%d %d\n",x,y); 得 分 评卷人 四、写出下列每个函数的功能(每小题6分,共12分) 1.include<math.h> 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<stdio. h> void main( ) int a, b; for(a=2,b=3;b<20;){ printf("%d ood ",a,b); a=a+b; b=a+b; } printf("%d 0od\n",a,b); 5.#include<stdio. h> 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<math. h> 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(i<=a)return 0;else return 1; 函数功能: 2.int FindMax(struct IntNode*f)/f为一个单链表的表头指针 int x; if(!f){printf("单链表为空\n"),exit(l):} x=f一>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分) 1.编写一个程序,输出50以内(含50)的、能够被3或者5整除的所有整数。 2.编写一个递归函数"int FF(inta[],intn)",求出数组a中所有n个元素之积并返回。 1378
1十+ ; if(i<=a)return 0;else return 1; 函数功能: 2. int FindMax(struct IntNode*f) //f为一个单链表的表头指针 int x; if(! f) { printf ("单链表为空\n"),exit(l);I x=f-> 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