电大C语言程序设计A历年考题(.1.7)缺09年7月小抄参考
专业好文档第一套(2010年7月试题) 一、单选题(每小题2分,共20分) 1在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为(A)。 A. main B. MAIN C. name D. function 2每个C语言程序文件的编译错误分为(B)类。 A. 1 B. 2 C. 3 D. 4 3. 字符串"a+b=12n"的长度为(B)。 A. 6 B. 7 C. 8 D. 9 4. 在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为(D)语句。 A. for B. while C. do D. if 5. 在下面的do-while循环语句中,其循环体语句被执行的次数为(C)。 int i=0; do i+; while(i<10); A. 8 B. 9 C. 10 D. 11 6. 将两个字符串连接起来组成一个字符串时,选用的字符串函数为(C)。 A. strlen() B. strcpy() C. strcat() D. strcmp() 7. 若用数组名作为函数调用的实参,传递给形参的是(A)。 A. 数组的首地址 B. 数组中第一个元素的值 C. 数组中全部元素的值 D. 数组元素的个数 8. 假定a为一个整数类型的数组名,整数类型的长度为4,则元素a4的地址比a数组的首地址大(C)个字节。 A. 4 B. 8 C. 16 D. 32 9. 假定s被定义为指针类型char *的变量,初始指向的字符串为"Hello world!",若要使变量p指向s所指向的字符串,则p应定义为(A)。 A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p; p=&s; 10. 从一个数据文件中读入以换行符结束的一行字符串的函数为(B)。 A. gets() B. fgets() C. getc() D. fgetc() 二、填空题(每小题2分,共26分) 1执行“printf("%c",'A'+2);”语句后得到的输出结果为_C_。 2short int类型的长度为_2_。 3. 用类型关键字表示十进制常数3.26f的类型为 float 。 4. 假定y=10,则表达式+y*3的值为_33_。 5. 逻辑表达式(x=0 && y>5)的相反表达式为(x!=0 | y<=5) 或:(x | y<=5)。 6若x=5,y=10,则x!=y的逻辑值为_1(真,true)_。 7. 假定二维数组的定义为“int a35;”,则该数组所占存储空间的字节数为_60_。 8. 使用“typedef char BB1050;”语句定义_BB_为含有10行50列的二维字符数组类型。 9. 字符串"a:xxkfile.txt"的长度为_15_。 10假定p所指对象的值为25,p+1所指对象的值为46,则*+p的值为_46_。 11. 假定一个数据对象为int*类型,则指向该对象的指针类型为_int*_。 12假定一个结构类型的定义为 “struct Aint a,b; A* c;”,则该类型的理论长度为_12_。 13. 假定要访问一个结构对象x中的数据成员a,则表示方式为_x.a_。 三、写出下列每个程序运行后的输出结果(每小题6分,共30分) 1. #include<stdio.h> void main() int i,j,k=0; for(i=0; i<5; i+) for(j=i; j<5; j+) k+; printf("%dn",k); 运行结果:15 2. #include<stdio.h> void main() int x=20; int i=2; while(i<x) if(x%i=0) printf("%d ",i); x/=i; i+; 运行结果:2 5 3. #include<stdio.h> void main() int a8=70,63,54,95,40,75,90,66; int i, s=0; for(i=0; i<8; i+) if(ai>=70 && ai<=90) s+=ai; printf("s=%dn",s); 运行结果:s=235 4. #include<stdio.h> int WF(int x, int y) x=x+y; y+=x; return x+y; void main() int x=3, y=5; printf("%dn",WF(x,y); 运行结果: 21 5. #include<stdio.h> int LA(int *a, int n) int i,s=0; for(i=0;i<n;i+) s+=ai; return s; void main() int a5=1,2,3,4,5; int b=LA(a,5)+LA(a+1,3); printf("b=%dn",b); 运行结果: b=24 四、写出下列每个函数的功能(每小题6分,共12分) 1. int SG(int x) /x为大于等于2的整数 int i=2; if(x=2 | x=3) return 1; while(i*i<=x) if(x%i=0) break; i+; if(i*i<=x)return 0; else return 1; 函数功能:判断x是否为一个素数,若是则返回1,否则返回0。2. int FindMax(struct IntNode *f) /f为一个单链表的表头指针 int x; if(!f) printf("单链表为空n"),exit(1); 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;函数功能:求出并返回由f所指向的单链表中所有结点的最大值。 五、按照题目要求编写程序或函数(每小题6分,共12分) 1. 编写一个主函数,计算1+3+32+.+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。程序为: #include<stdio.h> void main() int i; int p=1; int s=1; for(i=1;i<=10;i+) p*=3; s+=p; printf("%dn",s); 2. 根据函数原型“int FF(int a, int n)”,编写函数定义,计算并返回数组an中所有元素之和。程序为:int FF(int a, int n) int i,sum=0; for(i=0; i<n; i+) sum+=ai; return sum; 第二套复习题一、单选题 1程序运行中需要从键盘上输入多于一个数据时,各数据之间默认使用(D)符号作为分隔符。A空格或逗号 B逗号或回车 C逗号或分号 D空格或回车 2逻辑表达式(x>0 && x<=10)的相反表达式为(A)。 Ax<=0 | x>10 Bx<=0 && x>10 Cx<=0 | x<=10 Dx>0 && x>10 3当处理特定问题时的循环次数已知时,通常采用(A)循环来解决。 Afor Bwhile Cdo-while Dswitch 4假定i的初值为0,则在循环语句“while(i<n) s+=i*i; i+;”中循环体被执行的总次数为(B)。 An-1 Bn Cn+1 Dn/2 5假定一个二维数组的定义语句为“int a34=3,4,2,8,6;”,则元素a12的值为(C)。 A2 B4 C6 D8 6在下列选项中,不正确的函数原型格式为(C)。 Aint Function(int a); B.void Function (char); Cint Function(a); D.void int(double* a); 7假定p是一个指向float型