中央广播电视大学2008-2009学年度第二学期“开放本科”期末考试 一、单选题(每小题2分,共20分}
1.由C语言源程序文件编译而成的目标文件的缺省扩展名为(D )。 A. cpp B . c C. exe D . obj
2.设x和y均为逻辑值,则x││y为假的条件是(C )。
A. 它们均为真 B.其中一个为真 C. 它们均为假D.其中一个为假 3.枚举类型中的每个枚举常量的值都是一个(A )。 A. 整数 B.浮点数 C. 字符D.记录
4.循环语句“for(i=0; 1<-n; i++)S;”中循环体S被执行的次数为(D A . 1 B. n – 1 C. n D . n + 1
5.假定有定义为”int a[4][5]={{1,3,5},{2,8}};\,则a[1][1]的值为(D) A . 3 B. 5 C. 2 D . 8
6.在下面的选项中,不能作为函数的返回类型的是( C)。 A .void B. int C. new D . long
7.假定x的值为5,y的值为6,则表达式x++*--y的值为( A)。 A . 25 B . 30 C. 36 D . 42
8.用calloc函数创建具有10个整型元素的动态存储空间正确调用是(C ) A. calloc(10,sizeof( char)) B.c alloc(10)
C. calloc(10,sizeof(int)) D. calloc(20,sizeof(int)) 9.假定有定义“int b[10], * pb;\,则不正确的赋值为(B )。 A. pb=b B. pb= b[5] C. p b=b+2 D . p b = &b [0] 10.标准输人设备的文件流标识符是(B )。 A . stderr B . stdin C. stdout D . stdio 二、填空题(每小题2分,共26分)
1.执行 “ print f(\’十2);”语句后得到的输出结果为C。 2.short int类型的长度为2
3. 用类型关键字表示十进制常数3.26f的类型为_float。 4. 假 定 y=10,则表达式++y*3的值为33
5. 逻辑 表 达式(x==0&&y>5)的相反表达式为(x!=0’II Y <=5)或:(x II Y <=5) 6.若 x= 5,Y= 10,则x!=y的逻辑值为_1 。 7. 假定二维数组的定义为“int a[3][5];\,则该数组所占存储空间的字节数为60
8. 使用“ typedefc har BB[10][50];”语句定义BB为含有10行50列的二维字符数组类型。
9. 字 符 串“a:\\\\xxk\\\\数据”的长度为11
16. 假 定 p所指对象的值为25,p+1所指对象的值为46,则,*++p的值为46 。 11. 假 定一个数据对象为int*,类型,则指向该对象的指针类型为int* * 12. 假 定 一个结构类型的定义为“struct A {int a,b; A *c;};”,则该类型的长度为12
13. 假定要访问一个结构对象x中的数据成员a,则表示方式为_x. a 。 三、写出下列每个程序运行后的输出结果(每小题6分,共30 1.#include
for(i=1;;i++){ if(s>30) break; if(i%2==0) s+=i; }
printf(\解:s= 42
2.#include
int a[9]={36,25,48,24,55,40,18,66,20}; int i,bl,b2; bl= b2=a[0]
for(i=1;i<9;i++){
if( a[i]> bl) bl=a[i]; if( a[i]< b2) b2=a[i]; }
printf(\}
解:66 18
3.#include
ca se ' A ': ca s e ,a ': printf (\” ); br eak cas e ' B ': c as e' b ': pri ntf (\“);break default:
printf (\“);break; ) }
void main(){
cha r a l “'a',a2='B',a3二,f' SB ( al );SB(a2);SB(a3); printf(\}
解: WW GG BB
4.#include
int a[M]={10,15, 22,37,46,58);
for=(i=O;i< M/2 i++){x =a[i];a[i]=a[M一1一1〕;a[M-1一i]=x;} for(i=0;i<6;i++)print(\printf(\}
解:58 46 37 22 15 10 5.#include
char name[15];int age; float pay; }
void main()
structW orkerx ={ \,2350}; struct Worker y, * p y=x; P=&x
printf(\,p->pay+20) }
解:104 2370.00
四、写出下列每个函数的功能(每小题6分,共12分) 1. int FH() int x,y=0;
scanf(\,&x);
while(x!=-1){y+=x;s canf(\return y;
函数功能: 求出从键盘上输入的一批整数的总和,以-1作为结束输人的标志。 2.i ntF F(structI ntNode *f ) //f为指向一个单链表的表头指针 {
int n= 0
if(!f) return 0; while(f){ n++
f=f->next; }
return n }
假定struct IntNode的类型定义为:
struct IntNode{int data;struct IntNode * next;
函数功能: 求出并返回由f所指向的单链表中所有结点的个数。 五、按题目要求编写程序或函数(每小题6分,共12分)
1、编 写一个程序,利用whil·循环,计算并打印输出1十音+合十?+告的值,其中正整数n值由键盘输入。假定求和变量用sum表示,计数变量用i表示,sum,i和n均定义为全局变量,sum和i的初值分别被赋予0和1, 1. # include
scanf(\,&.n) ;
while(i< =n) sum+=(double)1/i++; printf(\
}
2. 根 据 函数原型\”编写函数定义,利用双重循环查找并、打印输出数组a[n〕中任何两个元素的值等于mm值的元素值。假定a[司十a[j〕等于mm,则输出格式为:(a[i],a[J]) void DD(int a[],int n, int MM) {
int i,j;
fore=0;1 if(a[i]+ a[j]==MM)p rintf(\,a[j]); } 中央广播电视大学2009-2010学年度第一学期“开放本科”期末考试 一、单选题(每小题2分。共20分) l. C语言源程序文件的缺省扩展名为(D)。 A. cpp B . exe C. obj D. C 2.设x和Y均为逻辑值,则x&&Y为真的条件是(A)。 A. 它们均为真B.其中一个为真 C. 它们均为假D.其中一个为假 3.在下列的符号常量定义中,正确的定义格式为(C)。 A. #defineMl B . const int M2 2 0 C. #defineM3 10 D . const char mark 4. for循环语句能够被改写为(D)语句。 A, 复合 B.if C. switch D. while 5.在下面的一维数组定义中,错误的定义格式为(C )。 A. int a[]={1,2,3} B.int a[10]={0}C. int a[] D. int a[5] 6.下面的函数原型声明中存在语法错误的是(C)。 A. AA(int a, int b) C. AA(int a; int b;) B. AA(int, int) D. AA(int a, int) 7. 假 定 a为一个数组名,则下面存在错误的表达式为的(B)。 A. a[i] B. * a++ C.*a D .*(a+1) 8. 假定有定义为“int a[10],x ,* pa=a;\,若要把数组a中下标为3的元素值赋给x,则不正确的赋值为(D)。 A. x= pa[3] B . x= *(a+3) C. x=a[3] D . x=*pa+3 9.char类型的长度为(A)个字节。 A . 1 B . 2 C. 3 D . 4 10.向一个二进制文件中写人信息的函数为(D)。 A. fgets() B. fputs ()C. fread() D . fwrite( ) 二、填空题(每小题2分,共26分) 1. C语言中的每条复合语句以}(或右花括号)作为结束符。 2. 在 #include命令中所包含的文件,可以是头文件,也可以是程序文件。 3. 十进制数35对应的八进制数为043 。 4. 假定x=5,则表达式2+x++的值为7 。 5.增量表达式++y表示成赋值表达式为y=y+1 6. 若x=5,y=10,则X>y的值为0 。 7. 假定二维数组的定义为“int a[3][5];\,则该数组所含元素的个数为15 。 8. 执 行“typedef int ABC[10];”语句把ABC定义为具有10个整型元素的数组类型。 9. strcat ()函数用于连接两个字符串。 10. 假定p所指对象的值为25,p+1所指对象的值为46,则‘p++的值为25 。 11. 若要把一个整型指针P转换为字符指针,则采用的强制转换表达式为(char*)p 12. NULL是一个符号常量,通常作为空指针值,它对应的值为0 。 13 .假定要动态分配一个类型为struct Worker的对象,并由r指针指向这个对象,则使用的表达式为struct Worker* r =malloc(sizeof(struct Worker)) 三、写出下列每个程序运行后的输出结果(每小题6分.共30分) 1.#include for(i=1;i<6;i++)s+=i*i; printf(\} 解:s= 55 2.#include int i,a[N]={2,5,8,10,15,21}; for(i=0;i if(a[i]%5) printf(\printf(\} 解:2 8 21 3.#include unsigned int len; char* a[5]=( \len=strlen(a[0]); for(i=1;i<5;i++) if( strlen(a[i])>len)len=strlen(a[i]); printf(\,len); 解: 10 4.#include inta ,b ; for(a=2,b=3;b<20;){ printf (\