当前位置:文档之家› 《C语言程序设计A》模拟考核试题及解答.

《C语言程序设计A》模拟考核试题及解答.

《C语言程序设计A》模拟考核试题及解答一、选择题1. 由C语言源程序文件编译而成的目标文件的缺省扩展名为( )。

A. cppB. exeC. objD. C2. C语言程序的基本模块为()。

A. 表达式B. 标识符C. 语句D. 函数3. x>0 || y==5的相反表达式为()。

A. x<=0 || y!=5B. x<=0 && y!=5C. x>0 || y!=5D. x>0 && y==54. 枚举类型中的每个枚举常量的值都是一个()。

A. 整数B. 浮点数C. 字符D. 逻辑值5. 循环语句“for(int i=0; i<n; i++) S;”中循环体S被执行的次数为( )。

A. 1B. n-1C. nD. n+16. 在下面的while循环语句中,其循环体被执行的次数为()。

int i=0,s=0; while(s<20) {i++; s+=i;}A. 4B. 5C. 6D. 77. 若定义了函数 double *function(), 则返回值类型为()。

A. 实数型B. 实数指针型C. 函数指针型D. 数组型8. 若用数组名作为函数调用的实参,传递给形参的是()。

A. 数组的首地址B. 数组中第一个元素的值C. 数组中全部元素的值D. 数组元素的个数9. 假定a为一个整型数组名,则元素a[4]的地址比该数组的首地址大( )个字节。

A. 4B. 8C. 16D. 3210. 下列给字符数组赋初值时,正确的是()。

A. char s1[]="abcdef";B. char s2[4]="abcd";C. char s3[2][3]={"abc","xyz"};D. char s4[4][]={'a','x','s','t'};A. char *p=s;B. char *p=&s;C. char *p;p=*s;D. char *p; p=&s;11. 要使p指向二维整型数组a[10][20],p应定义为()。

A. int *p=a;B. int **p=a;C. int *p[20]=a;D. int(*p)[20]=a;12. 标准输入设备的文件流标识符是()。

A. stdinB. stdoutC. stderrD. stdio13. 若要以读/写操作方式打开一个二进制文件,当文件不存在时返回打开失败信息,则选用的打开方式字符串为()。

A. "r+"B. "ab+"C. "rb+"D. "wb+"二、填空题1. 单行或多行注释的开始标记符为__________。

2. 使用#include命令可以包含一个头文件,也可以包含一个______文件。

3. 执行“printf("%s%s%d","wei","rong",18);”语句后得到的输出结果为________。

4.执行“printf("%c",'A'+2);”语句后得到的输出结果为________。

5.short类型的大小为________个字节。

6. 十进制数3.26f的类型为________。

7. 假定y=10,则表达式++y*3的值为________。

8. 关系表达式(x==0)的等价表达式为________。

9.若x=5,y=10,则x!=y的逻辑值为________。

10. 在if语句中,每个else关键字与它前面同层次并且最接近的________关键字相配套。

11. 当在程序中执行到________语句时,将结束所在循环语句中循环体的一次执行。

12. 假定二维数组的定义为“char a[M][N];”,则该数组所占存储空间的字节数为________。

13. 存储字符串"a"需要占用存储器的________个字节空间。

14. strlen函数用于计算一个字符串的________。

15.函数中的形参变量的初值由调用该函数时对应的________值决定。

16. 程序的编译是以__________为单位进行的。

17. 假定a是一个一维数组,则a[i]的指针访问方式为________。

18. 执行int *p=malloc(sizeof(int))操作得到的一个动态分配的整型对象为________。

19. 假定要动态分配一个类型为struct Worker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句表达式为________________ =malloc(n*sizeof(struct Worker))。

20. 与结构成员访问表达式p->name等价的表达式是____________。

三、写出下列每个程序运行后的输出结果1. #include<stdio.h>void main() {int i, s=0;for(i=1;;i++) {if(s>50) break;if(i%2==0) s+=i;}printf("i,s=%d, %d\n",i,s);}2. #include<stdio.h>void main() {char ch='*';int i, n=5;while(1) {for(i=0;i<n;i++) printf("%c",ch);printf("\n");if(--n==0) break;}}3. #include<stdio.h>void main(){int x=24,y=88;int i=2,p=1;do {while(x%i==0 && y%i==0) {p*=i; x/=i; y/=i;}i++;}while(x>=i && y>=i);printf("%d\n",p*x*y);}4. #include<stdio.h>void main() {int a[9]={36,25,48,24,55,40,18,66,20};int i, b1, b2;a[0]<=a[1]? (b1=a[0], b2=a[1]):(b1=a[1],b2=a[0]); for(i=2; i<9; i++)if(a[i]<b1) {b2=b1; b1=a[i];}else if(a[i]<b2) b2=a[i];printf("%d %d\n",b1,b2);}5. #include<stdio.h>void main() {int a=10, b=20;printf("%d %d\n",a,b);{ int b=a+25;a*=4;printf("%d %d\n",a,b);}printf("%d %d\n",a,b);}6. #include<stdio.h>void SelectSort(int a[], int n){int i,j,k,x;for(i=1;i<n;i++) { //进行n-1次选择和交换k=i-1;for(j=i;j<n;j++)if(a[j]<a[k]) k=j;x=a[i-1]; a[i-1]=a[k]; a[k]=x;}}void main(){int i;int a[6]={20,15,32,47,36,28};SelectSort(a,6);for(i=0; i<6; i++) printf("%d ",a[i]);printf("\n");}7. #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 %d\n",x,y);LE(&x,&y);printf("%d %d\n",x,y);}8. #include<stdio.h>#include<string.h>struct Worker {char name[15]; //姓名int age; //年龄float pay; //工资};int Equal(struct Worker* r1, struct Worker* r2){if(strcmp(r1->name, r2->name)==0) return 1;else return 0;}void main() {struct Worker a[4]={{"abc",25,420},{"defa",58,638},{"ghin",49,560},{"jklt",36,375}};struct Worker x={"defa"};int i;for(i=0; i<4; i++)if(Equal(a+i,&x)) break;if(i>=4) printf("没有查找所需要的记录!\n");else printf("%s %d %6.2f\n",a[i].name,a[i].age,a[i].pay);}四、写出下列每个函数的功能1. int SE(int n) { //n为大于等于1的整数int x,s=0;printf("输入%d个整数: ",n);scanf("%d",&x);if(n==1) return x;s=x;while(--n) {scanf("%d",&x); s+=x;}return s;}2. #include<stdio.h>void WA(int a[], int n) {int i,k,j,x;for(i=0;i<n-1;i++) {k=i;for(j=i+1;j<n;j++)if(a[j]>a[k]) k=j;x=a[i]; a[i]=a[k]; a[k]=x;}}3. #include<stdio.h>int* LJ(int a[], int n) {int i,k=0;for(i=1;i<n;i++)if(a[i]>a[k]) k=i;return &a[k];}4. int Output(struct IntNode *f){int sum=0;if(!f) return -9999; //用返回特定值-9999表示空表 while(f) {sum+=f->data;f=f->next;}return sum;}假定struct IntNode的类型定义为:struct IntNode {int data; //结点值域struct IntNode* next; //结点指针域};5. int wr4(FILE* fptr){char ch;int c=0;fseek(fptr,0,SEEK_SET);while(1) {ch=fgetc(fptr);if(ch!=EOF) c++;else break;}return c;}五、根据下列每个题目要求编写程序1. 编写一个函数fun(),首先从键盘上输入一个4行4列的一个实数矩阵到一个二维数组a[4][4]中,接着求出主对角线上元素之和,最后返回求和结果。

相关主题