资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。
附件
中央广播电视大学 秋季
C语言程序设计A课程试卷( 4)
题 号
一
二
三
四
五
总 分
得 分
1月已考
一、 单选题( 每小题2分, 共20分)
1. 由C语言目标文件连接而成的可执行文件的缺省扩展名为( )。
A. cpp B. exe C. obj D. c
2. 设有两条语句为”int a=12; a+=a*a;”, 则执行结束后, a的值为( )。
A. 12 B. 144 C. 156 D. 288
3. 带有随机函数调用的表示式rand()%20的值在( )区间内。
A. 1~19 B. 1~20 C. 0~19 D. 0~20
4. for循环语句”for(i=0; i<n; i+=2) S;”中循环体S语句被执行的次数为( ) 。
A. (n+1)/2 B. n/2+1 C. n/2-1 D. n-1
5. 在下列的字符数组定义中, 存在语法错误的是( ) 。
A. char a[20]="abcdefg"; B. char a[]="x+y=55.";
C. char a[15]={'1','2'}; D. char a[10]='5';
6. 若有一个函数原型为”double *function()”, 则它的返回值类型为( ) 。
A. 实数型 B. 实数指针型 C. 函数指针型 D. 数组型
7. 在C语言中, 所有预处理命令都是以( )符号开头的。
A. * B. # C. & D. @
8. 假定整数指针p所指数据单元的值为30, p+1所指数据单元的值为40, 则执行*p++后, p所指数据单元的值为( ) 。
A. 40 B. 30 C. 70 D. 10
9. 若要使p指向二维整型数组a[10][20], 则p的类型为( ) 。
A. int * B. int ** C. int *[20] D. int(*)[20]
10. 表示文件结束符的符号常量为( )
A. eof B. Eof C. EOF D. feof
二、 填空题( 每小题2分, 共26分)
1.一个函数定义由________和函数体两部分组成。
2. 执行”printf("%c",'F'-2);”语句后得到的输出结果为________。
3.int类型的长度为________。
4. 表示式(float)25/4的值为________。
5.若x=5,y=10, 则x<=y的逻辑值为________。
6. 作为语句标号使用的case和default只能用于________语句的定义体中。
7. 在程序中执行到________语句时, 将结束所在函数的执行过程, 返回到调用该函数的位置。
8. 假定二维数组的定义为”char a[M][N];”, 则该数组所含元素的个数为________。
9. 存储字符'a'需要占用存储器的________个字节空间。
10. 用于存储一个长度为n的字符串的字符数组的长度至少为________。
11. 假定p所指对象的值为25, p+1所指对象的值为46, 则执行表示式(*p)++后, p所指对象的值为________。
12. 假定p是一个指向整数对象的指针, 则用________表示该整数对象。
13.假定一个结构类型的定义为”struct B{int a[5]; char* b;};”, 则该类型的理论长度为________。
三、 写出下列每个程序运行后的输出结果( 每小题6分, 共30分)
1. #include<stdio.h>
void main() {
int i, s1=0, s2=0;
for(i=0;i<10;i++)
if(i%2) s1+=i;
else s2+=i;
printf("%d %d\n",s1,s2);
}
2. #include<stdio.h>
const int M=20;
void main()
{
int i=2;
while(1) {
if(i>M/2) break;
if(M%i==0) printf("%d ",i);
i++;
}
printf("\n");
}
3. #include<stdio.h>
int a[6]={4,5,6,15,20,12};
void main()
{
int i,s1,s2;
s1=s2=0;
for(i=0; i<6; i++) {
switch(a[i]%2) {
case 0: s2+=a[i];break;
case 1: s1+=a[i];break;
}
}
printf("%d %d\n",s1,s2);
}
4. #include<stdio.h>
void main() {
int a[3][3]={{3,5,7},{9,11,13},{6,8,20}};
int i,*p=&a[0][0];
for(i=0;i<9;i++) {
if(*p>10) printf("%d ",*p);
p++;
}
printf("\n");
}
5. #include<stdio.h>
#include<string.h>
struct Worker { char name[15]; int age; float pay;};
void main() {
struct Worker x;
char *t="liouting";
int d=38; float f=400;
strcpy(x.name,t);
x.age=d; x.pay=f;
x.age++; x.pay*=2;
printf("%s %d %6.2f\n",x.name,x.age,x.pay);
}
四、 写出下列每个函数的功能( 每小题6分, 共12分)
1. #include<stdio.h>
int SA(int a, int b) {
if(a>b) return 1;
else if(a==b) return 0;
else return -1;
}
函数功能:
2. void Output(struct IntNode *f) //f为单链表的表头指针
{
if(!f) return;
while(f) {
printf("%d ",f->data);
f=f->next;
}
printf("\n");
}
假定struct IntNode的类型定义为:
struct IntNode { int data; struct IntNode* next;};
函数功能:
五、 按题目要求编写程序或函数( 每小题6分, 共12分)
6. 编写一个程序, 计算1+3+32+...+310的值并输出, 假定分别用i,p,s作为循环变量、 累乘变量和累加变量的标识符。
6. 根据函数原型”int FF(int a[], int n)”, 编写函数定义, 计算并返回数组a[n]中所有元素之和。
中央广播电视大学 秋季
C语言程序设计A课程试卷答案及评分标准( 4)
( 供参考)
一、 单选题( 每小题2分, 共20分)
1. B 2. C 3. C 4. A 5. D
6. B 7. B 8. A 9. D 10. C
二、 填空题( 每小题2分, 共26分)
1. 函数头 2. D 3. 4 4. 6.25
5. 1 6. switch 或开关 或分情况
7. return 或返回 8. M*N
9. 1 10. n+1 11. 26 12. *p 13. 24
三、 写出下列每个程序运行后的输出结果( 每小题6分, 共30分)
评分标准: 根据答案正确程度酌情给分。
1. 25 20
2. 2 4 5 10
3. 20 42
4. 11 13 20
5. liouting 39 800.00
四、 写出下列每个函数的功能( 每小题6分, 共12分)
评分标准: 根据答案叙述的正确与完善程度酌情给分。
1. 比较两个整数a和b的大小, 若a>b则返回1, 若a==b则返回0, 若a<b则返回-1。
2. 遍历并输出由f所指向的单链表中每个结点的值。
五、 按题目要求编写程序或函数( 每小题6分, 共12分)
评分标准: 按程序或函数编写的正确与完整程度酌情给分。
1.
#include<stdio.h>
void main()
{
int i;
int p=1; //1分
int s=1; //2分
for(i=1;i<=10;i++) {p*=3; s+=p;} //5分
printf("%d\n",s); //6分
}
2. int FF(int a[], int n)
{
int i,sum=0; //1分
for(i=0; i<n; i++) sum+=a[i]; //4分
return sum; //6分
}
展开阅读全文