中央广播电视大学2008秋季
C语言程序设计A课程试卷(5)
2012年1月考
一、单选题(每小题2分,共20分)
1. 程序运行中需要从键盘上输入多于一个数据时,各数据之间默认使用(    )符号作为分隔符。
A. 空格或逗号
B. 逗号或回车
C. 逗号或分号
D. 空格或回车
2. 逻辑表达式(x>0 && x<=10)的相反表达式为()。
A. x<=0 || x>10
B. x<=0 && x>10
C. x<=0 || x<=10
D. x>0 && x>10
3. 当处理一个问题时的循环次数已知时,最好采用()循环来解决。
A. for
B. while
C. do-while
D. switch
4. 假定i的初值为0,则在循环语句“while(i<n) {s+=i*i; i++;}”中循环体被执行的总次数为()。
A. n-1
B. n
C. n+1
D. n/2
5. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。
A. 2
B. 4
C. 6
D. 8
6. 在下列选项中,不正确的函数原型格式为()。
A. int Function(int a);
B.void Function (char);
C. int Function(a);
D.void int(double* a);
7. 假定p是一个指向float类型的数据指针,则p+1所指向的数据的地址比p所指向的数据的地址大(    )个字节。
A. 1
B. 2
C. 4
D. 8
8. 假定有一条定义语句为“int m=7, *p;”,则给p赋值的正确表达式为()。
A. p=m
B. p=&m
C. *p=&m
D. p=*m
9. 假定指针变量p定义为“int *p=malloc(sizeof(int));”,要释放p所指向的动态存储空间,应调用的函数为()。
A. free(p)
B. delete(p)
C. free(*p)
D. free(&p)
10. C语言中的系统函数fopen()是()一个数据文件的函数。
A. 读取
B. 写入
C. 关闭
请写出至少5个字符串函数
D. 打开
二、填空题(每小题2分,共26分)
1. 用于输出表达式值的标准输出函数的函数名是________。
2.每个C语言程序文件在编译时可能出现有致命性错误,其对应的标识符为________。
3. 已知'A''Z'的ASCII码为6590,当执行“int x='C'+3;”语句后x的值为________。
4. 表达式(int)14.6的值为________。
5. 假定不允许使用逻辑非操作符,则关系表达式x+y>5的相反表达式为___________。
6. 假定x=5,则执行“a=(x?10:20);”语句后a的值为________。
7. 假定一维数组的定义为“char* a[M];”,则该数组所占存储空间的字节数为________。
8. 存储字符串"a"需要至少占用存储空间中的________个字节。
9. strlen()函数用于计算一个字符串的________。
10. 在C语言中,一个函数定义由函数头和__________这两个部分组成。
11.假定p所指对象的值为25,p+1所指对象的值为46,则执行表达式*(p++)后,p 所指对象的值为________。
12. 假定p是一个变量,则用________表示该变量的地址。
13. 把间接访问表达式p->name改写成对应的直接访问表达式为____________。
三、写出下列每个程序运行后的输出结果(每小题6分,共30分)
1. #include<stdio.h>
void main() {
int n=6, y=1;
while(n--) y+=3;
printf("y=%d\n",y);
}
2. #include<stdio.h>
void main()
{
int i,s=0;
for(i=1;i<8;i++)
if(i%2==0 || i%3==0) s+=i;
printf("s=%d\n",s);
}
3. #include<stdio.h>
void main() {
char a[]="abcdbfkgamd";
int i1=0, i2=0, i=0;
while(a[i]) {
if(a[i]<'e') i1++; else i2++;
i++;
}
printf("%d %d\n",i1,i2);
}
4. #include<stdio.h>
void main() {
int a[8]={4,8,12,16,20,24,28,32};
int *p=a;
do {
printf("%d ",*p);
p+=3;
} while(p<a+8);
printf("\n");
}
5. #include<stdio.h>
struct Worker { char name[15]; int age; double pay;};
void main() {
struct Worker a[4]={{"abc",20,2420},{"defa",50,3638},
{"ghin",40,2560},{"jklt",36,2375}};
int i, s=0;
for(i=0; i<4; i++) s+=a[i].age;
printf("s=%5.2Lf\n",(double)s/4);
}
四、写出下列每个函数的功能(每小题6分,共12分)
1. int SC(int a, int b, int c) {
if(a>=b && a>=c) return a;
if(b>=a && b>=c) return b;
return c;
}
函数功能:
2. int*  LI(int n) {
int* a=malloc(n*sizeof(int));
int i;
for(i=0;i<n;i++) scanf("%d",a+i);
return a;
}
函数功能:
五、按题目要求编写函数(每小题6分,共12分)
1. 编写一个函数,函数原型为“int fun4(char* a)”,请采用while循环求出由字符指针a所指向的字符串中包含的十进制数字的个数,并把这个值作为函数值返回。
2. 编写一个主函数,计算并输出表达式1+22+32+...+n2的值,假定正整数n的值由键盘输入。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。