else return fun(k-1)+1; }
若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是 A 2 B 3 C 4 D 5 33. 有以下程序 #include
int fun (int x,int y)
{ if (x!=y) return ((x+y);2); else return (x); }
main()
{ int a=4,b=5,c=6;
printf(\ }
程序运行后的输出结果是
A 3 B 6 C 8 D 12 34. 有以下程序 #include int fun()
{ static int x=1; x*=2; return x; }
main() { int i,s=1;
for(i=1;i<=3;i++) s*=fun(); printf(\ }
程序运行后的输出结果是
A 0 B 10 C 30 D 64 35. 有以下程序 #include
#define S(x) 4*(x)*x+1 main()
{ int k=5,j=2;
printf(\ }
程序运行后的输出结果是
A 197 B 143 C 33 D 28
36. 设有定义:struct {char mark[12];int num1;double num2;} t1,t2;,若变量均已正确赋初值,则以下语句中错误的是
A t1=t2; B t2.num1=t1.num1; C t2.mark=t1.mark; D t2.num2=t1.num2; 37. 有以下程序
#include struct ord
{ int x,y;}dt[2]={1,2,3,4}; main() {
struct ord *p=dt;
printf(\ }
程序运行后的输出结果是
A 1,2 B 4,1 C 3,4 D 2,3 38. 有以下程序 #include struct S
{ int a,b;}data[2]={10,100,20,200}; main()
{ struct S p=data[1];
printf(\ }
程序运行后的输出结果是 A 10 B 11 C 20 D 21 39. 有以下程序 #include main()
{ unsigned char a=8,c; c=a>>3;
printf(\ }
程序运行后的输出结果是 A 32 B 16 C 1 D 0
40. 设fp已定义,执行语句fp=fopen(\后,以下针对文本文件file操作叙述的选项中正确的是
A 写操作结束后可以从头开始读 B 只能写不能读 C 可以在原有内容后追加写 D 可以随意读和写 二、填空题(每空2分,共30分)
1. 有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。
2. 一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为【2】 。
3. 对软件设计的最小单位(模块或程序单元)进行的测试通常称为 【3】 测试。 4. 实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。
5. 在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称【5】 是关系A的外码。
6. 以下程序运行后的输出结果是 【6】 。 #include main()
{ int a;
a=(int)((double)(3/2)+0.5+(int)1.99*2); printf(\ }
7.有以下程序 #include main() { int x;
scanf(\
if(x>15) printf(\ if(x>10) printf(\ if(x>5) printf(\ }
若程序运行时从键盘输入12<回车>,则输出结果为 【7】 。 8. 有以下程序(说明:字符0的ASCII码值为48) #include main()
{ char c1,c2;
scanf(\ c2=c1+9;
printf(\ }
若程序运行时从键盘输入48<回车>,则输出结果为 【8】 。 9. 有以下函数
void prt(char ch,int n) { int i;
for(i=1;i<=n;i++)
printf(i%6!=0?\ }
执行调用语句prt('*',24);后,函数共输出了 【9】 行*号。 10. 以下程序运行后的输出结果是 【10】 。 #include main()
{ int x=10,y=20,t=0; if(x==y)t=x;x=y;y=t; printf(\ }
11.己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。 void fun(int a[N],int k) { int i;
for(i=k;i 12. 有以下程序,请在 【12】 处填写正确语句,使程序可正常编译运行。 #include 【12】 ; main() { double x,y,(*p)(); scanf(\ p=avg; printf(\ } double avg(double a,double b) { return((a+b)/2);} 13. 以下程序运行后的输出结果是 【13】 。 #include main() { int i,n[5]={0}; for(i=1;i<=4;i++) { n[i]==n[i-1]*2+1; printf(\ printf(\ } 14. 以下程序运行后的输出结果是 【14】 。 #include #include #include main() { char *p; int i; p=(char *)malloc(sizeof(char)*20); strcpy(p,\ for(i=6;i>=0;i--) putchar(*(p+i)); printf(\ } 15. 以下程序运行后的输出结果是 【15】 。 #include main() { FILE *fp; int x[6]={1,2,3,4,5,6},i; fp=fopen(\ fwrite(x,sizeof(int),3,fp); rewind(fp); fread(x,sizeof(int),3,fp); for(i=0;i<6;i++) printf(\ printf(\ fclose(fp); } 答案: 1~10:ABDDB ACDCB 11~20:CDAAA ADCAD CDCCA 31~40: BBCDB CDDCB 21~30: BDBCD 顺序 DEBFCA 单元测试 主键 D 3 1217 09 4 20 0 i-1 double avg(double a, double b) 13715 emoclew 123456 2010年9月全国计算机二级C语言笔试试题 (总分100, 考试时间120分钟) 一、选择题((1)-(10),(21)-(40)每题2分,(11)-(20)每题1分,共70分) 1. 下列叙述中正确的是 A 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 D 上述三种说法都不对 2. 下列叙述中正确的是 A 在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化 B 在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化 C 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化 D 上述三种说法都不对 3. 软件测试的目的是 A 评估软件可靠性 B 发现并改正程序中的错误 C 改正程序中的错误 D 发现程序中的错误 4. 下面描述中,不属于软件危机表现的是 A 软件过程不规范 B 软件开发生产率低 C 软件质量难以控制 D 软件成本不断提高 5. 软件生命周期是指 A 软件产品从提出、实现、使用维护到停止使用退役的过程 B 软件从需求分析、设计、实现到测试完成的过程 C 软件的开发过程 D 软件的运行维护过程 6. 面向对象方法中,继承是指 A 一组对象所具有的相似性质 B 一个对象具有另一个对象的性质 C 各对象之间的共同性质 D 类之间共享属性和操作的机制 7. 层次型、网状型和关系型数据库划分原则是 A 记录长度 B 文件的大小 C 联系的复杂程度 D 数据之间的联系方式 8. 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是 A 一对一 B 一对多 C 多对多 D 多对一 9. 数据库设计中反映用户对数据要求的模式是 A 内模式 B 概念模式 C 外模式 D 设计模式 10.有三个关系R、S和T如下: