C语言考试试卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二级 C语言考试试卷
(考试说明及第一部分计算机基础知识略)
第二部分 C语言程序设计
一、选择题(用答题卡答题,答案依次填在21~30答题号内)
21. 若有声明语句char s1[10]={0},s2[10]= "books";则能将字符串"books"赋给数组s1保存的表达式是 21 。
A. s1=”books”;
B. strcpy(s2,s1);
C. s1=s2;
D. strcat(s1,s2);
22. 表达式(a=4*5,b=a*2),b-a,a+=2的值是 22 。
A.2 B. 20 C. 22 D. 42
23. 以下是一个自定义函数的头部,其中正确的是 23 。
A. int fun(int a[ ],b)
B. int fun(int a[ ],int a)
C. int fun(int * a,int b)
D. int fun(char a[ ][ ],int b)
24. 以下数组声明语句中正确的是 24 。
A.int n,a[n]; B. int a[ ];
C. int a[2][3]={{1},{2},{3}};
D. int a[ ][3]={{1},{2},{3}};
25.已知在某C语言编译系统中表达式sizeof(int)的值是2,如果希望将常量-70000正确地保存在一个变量a中,该变量声明语句应当是 25 。
A.int a; B. long int a;
C. unsigned int a;
D. unsigned long int a;
26. 以下声明语句中,用于声明一个行指针变量的是 26 。
A. int *p(int);
B. int *p;
C.int (*p)[3]; D. int (*p)(int);
27. 已知A盘根目录下的一个文本数据文件data.dat中存储了100个int型数据,若需要修改该文件中已经存在的若干个数据的值,只能调用依次fopen函数,已有声明语句FILE*fp;则fopen 函数的正确调用形式是 27 。
A. fp=fopen(”a:\\data.dat”,”r+”);
B. fp=fopen(”a:\\data.dat”,”w+”);
C. fp=fopen(”a:\\data.dat”,”a+”);
D. fp=fopen(”a:\\data.dat”,”w”);
28. 在以下程序中,需要在fun函数中声明一个int型的变量,以下选项中 28 不能用作该变量的名字。
A.x B. y C. fabs D. fun
#include
int y;
main( )
{int a=1;
fun(a);
}
int fun(int x)
{ ; /* int型变量声明语句位置*/
… /*若干执行语句*/
}
29.如有语句:int x,y=0,z,* p[3];p[0]=&x;p[1]=&y;p[2]=&z;以下表达式中有语法错误的是 29 。
A.y++ B. p++ C. *++p[0] D. (*p[0])++
30. 设有声明语句:int a[3][3]={1,2,3,4,5,6,7,8,9};以下语句中除 30 外均能输出a[1][2]的值。
A.printf(“%d”,*(*(a+1)+2)); B. printf(“%d”,*(&a[2][0]-1));
C. printf(“%d”,*(a[1]+2));
D. printf(“%d”,*(a+1)[2]);
二、填空题(将答案填写在答题纸的响应答题号内,每个答案只占一行)
●基本概念题(共5分)
1.只能在循环体中出现的语句是(1)语句。
2.& 既可以用作单目运算符也可以用作双目运算符,其中用作单目运算符时表示的功能是(2)。
3.包含二目运算符的表达式可一般的表示为(x)op(y),其中op代表运算符x、y代表操作数。若op 是“+”运算符,且x和y均为常量时,不能同时为(3)常量。
4.当(4)语句被执行时,程序的执行流程无条件地从一个函数跳转到另一个函数。
5.在函数内部声明局部变量时缺省了存储类型,该变量存储类型为(5)。
●阅读程序写出运行结果题(共10分)
6.以下程序段运行后,x、y、z的值分别是(6)。
int x=0,y=3,z=2;
if(x++&&y++)z--;
else if(x+1==6||y--)z++;
7. 设有以下宏定义:
#define N3
#define Y(n) ((N+1)* n)
则执行语句z=2 * (N+Y(5+1));后,z的值为(7)。
8.[程序]
int x=1;
main( )
{ int y,k;
y=f(3);printf(“%d\n%d”,x,y);
}
int f(int x)
{ if(x==3)
{ int x=2;
return x;
}
else return x;
}
该程序运行后,输出x 的值是(8),y的值是(9)。
9.[程序]
main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9},m,k,t;
for(m=0;m<3;m++)
for(k=0;k<=m;k++)
if((m+k)%2) t=a[m][k],a[m][k]=a[k][m],a[k][m]=t;
for(m=0;m<3;m++)
{ for(k=0;k<3;k++)
printf(“%d”,a[m][k]);
printf(“\n”);
}
}
该程序执行时输出第一行是(10),第二行是(11)。
10.[程序]
#include
int convert(char s1[ ],char s2[ ],int *n1)
{ int i=0,j=0,k,s=0,len;
int value=0;
char tab[16]=”0123456789ABCDEF”;
len = strlen(s1);
if(len%4)
{ for(i=0;i s=s*2+s1[i]-‘0’; s2[j++]=tab[s];value=value*16+s; } while(i { s=0; for=(k=0;k<4;k++) s=s*2+s1[i+k]-‘0’; s2[j++]=tab[s]; value=value*16+s; i=r+4; s2[j]=’\0’;* n1=strlen(s2); return value; } main( ) { char ss1[ ]=”1001010”,ss2[10]; int x,y; y=convert(ss1,ss2,&x); printf(“%d\n%d\n%s”,x,y,ss2); } 该程序执行时输出第一行是(12),第二行是(13),第三行是(14)。11.[程序] main( ) { int a[3][3],i,j; numlist(&a[0][0],9);