2001级《c语言程序设计》试卷(基础)(b卷)

  • 格式:doc
  • 大小:53.50 KB
  • 文档页数:9

《C语言程序设计》考试试卷(提高)(B卷) 答 题 纸 说明:将各题的答案按要求答在答题纸上,答在试卷上不给分。 一、选择题(将正确选项涂黑)

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.A B C D 11.A B C D 12.A B C D 13.A B C D 14.A B C D 15.A B C D 16.A B C D 17.A B C D 18.A B C D 19.A B C D 20.A B C D 二、填空题 1.(1)

2.(2) 3.(3) 4.(4) 5.(5) 6.(6) (7) (8) 7.(9) (10) 三、修改程序题 1. 第一处改正:______________________________

第二处改正:______________________________ 2. 第一处改正:______________________________ 第二处改正:______________________________ 第三处改正:______________________________ 四、程序设计题 1.int mseek(char*str[],char xstr[],int n) { } 2. void findmin(int *s,int n,int *k) {

} 一、单项选择题(每小题2分,共40分) 将正确选项涂写在答题纸相应位置上。 1.在下列标识符中,哪个是不合法的_____ A)pAd B)scanf C)abc+ D)list 2.(4+5)*3*(5/2)的结果是______ A)67 B)67.5 C)68 D)69 3.不正确的转义字符是_____ A)'\'' B)'\\' C)'\0' D)'\0FFF' 4.在C语言中,int型数据在内存中以_____形式存放 A)补码 B)BCD码 C)反吗 D)原码 5.设整型变量x的值为5,则表达式(x++)+(x++)+(x++)的值是____ A)24 B)20 C)15 D)25 6.switch(exp) { case n1:语句块1; case n2:语句块2; „„„„ case nk:语句块k; default:语句块k+1; } 正确的叙述是_____ A)n1~nk只能是数值型常数 B)n1~nk只能是字符型常数 C)n1~nk可以是变量 D)n1~nk可以是常量表达式 7.以下不是无限循环的语句是_____ A)for(x=1; x>0; x++); B)for(;; x++=1); C)while(2>3){ x++; } D)for(i=10; ; i--)sum+=i; 8.若有函数调用语句:fun(a,(x,y),fun(n,d,(a,b)));则在此函数调用语句中实参的个数是_____ A)3 B)4 C)5 D)6 9.以下对c语言函数的描述中,正确的是_____ A)C语言的函数即可以嵌套定义又可以递归调用。 B)C程序由一个或一个以上的函数组成。 C)函数必须有返回值 D)所有函数必须在同一个程序文件中定义。 10.以下程序的输出结果是_____ A)1 2 3 4 5 B)5 4 3 2 1 C)3 1 2 3 4 D)3 5 7 4 5 #include void func(int *s) { static int j; do{ s[j]+=s[j+1]; }while (++j<2); } main() { int k,a[10]={1,2,3,4,5}; for (k=1; k<3; k++) func(a); for (k=0; k<5; k++) printf("%2d",a[k]); printf("\n"); } 11.以下叙述正确的是_____ A)函数调用必须在函数的定义之后 B)float类型的函数在调用前不必声明 C)函数的形参是自动变量 D)函数内部可以定义全局变量 12.以下程序的输出结果为_____ A)13 B)12 C)11 D)10 #define FUDGE(y) 2.84+y main() { int x=2; printf(“%d\n",(int)(FUDGE(5)*x)); } 13.下列程序执行后的输出结果是_____ A)you&me B)you C)me D)err main() { char arr[10]; strcpy(arr,"yourme"’); arr[3]='&'; } 14.在以下定义中,标识符fprt_____ int (*fprt)(); A)是一个指向一维数组的指针。 B)是一个指向int型变量的指针。 C)是一个指向函数的指针,该函数返回值为int型。 D)定义不正确。 15.设int b=2; 执行以下语句: b<<2; b=b>>1; 后,b 的值是_____ A)8 B)4 C)2 D)1 16.有如下程序段 int*p,a,b=10; p=&a; *p=b+10; 执行该程序段后,a的值为_____ A)10 B)20 C)随机值 D)编译出错 17.设有以下定义: int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[3]=a; 则下列能够正确表示数组元素a[1][2]的表达式是______ A)*((*p+1)[2]) B)*(*(*p+5)) C)*(p+1)+2 D)*(*(a+1)+2) 18.下列程序执行后的输出结果是______ A)0,0,0 B)1,0,0 C)1,0,1 D)1,1,0 main() { int x=0,y=0,z=0; (++x||++y)&& ++z; printf("%d,%d,%d\n",x,y,z); } 19.若有以下说明,则输出结果为_____ A)7 B)4 C)2 D)1 union U { int a; float f ; char ch; }; printf("%d\n",sizeof(union U)); 20.对于C语言的文件,正确的结论是______ A)可以顺序存取文件 B)不能读取源文件 C)不能处理二进制文件 D)只能处理文本文件 二、填空题(1~5题,每空2分,6~7题,每空3分,共15分) 1.运算符%两侧的数据均应为 ⑴ 类型。 2.C语言程序的基本单元是 ⑵ 。 3.在调用一个函数的过程中又直接或间接调用该函数本身,称为函数的 ⑶ 。 4.如果在定义函数时不指定函数类型,系统会隐含指定函数类型为 ⑷ 型。 5.指针是C语言的一个重要特色,它是一种特殊的变量,是用来存放变量的 ⑸ 的。 6.执行下述程序将输出3到100之间的所有素数。请填空。 #include main() { int i,j; for (i=3; i<=100; i++) { for (j=2; j<=i-1; ⑹ ) if (____⑺____) break; if ( ⑻ ) printf("%3d",i); } printf("\n"); }

7.以下程序将N个数从大到小的顺序排列后输出 #include #define N 10 main() { int a[50],i,j,t; for(i=0; i for(i=0; i for(j=i+1; jif(a[i]{ t=a[i]; ⑼ ; ⑽ ; } for(i=0; iprintf(“%5d”,a[i]); }

三、修改程序题(每个/******found*******/下面的几行语句中都有一处错误,共有5处错误,每处3分,共15分)将错误的地方改正,请在答题纸上完成,直接在试卷上改正不给分。 1.下面函数fun的功能是将数组x的元素按逆序存放。例如,x数组中的数据为1,2,3,4,5,则逆序存放后为5,4,3,2,1。请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include #include #define M 20 /************found************/ void fun(int x,int n) { int i,j,t; i=0; j=n-1; /************found***********/ while(i>j) { t=x[i]; x[i]=x[j]; x[j]=t; i++; j--; } } main() { int a[M],i; for(i=0; iscanf("%d",&a[i]); fun(a,M); for(i=0; iprintf("%d\t",a[i]); } 2.下述程序中函数calc的功能是对传送过来的两个实数求出和值与差值,并通过两个指针形参分别将这两个值传送回调用函数。 注意:不得增行或删行,也不得更改程序的结构。 #include void calc(float x,float y,float *add,float *sub) { *add=x+y; /**********found*********/ sub=x-y; } main() { float x,y,add,sub; printf("Enter x,y:"); /**********found*********/ scanf("%f%f",x,y); /**********found*********/ calc(&x,&y,add,sub); printf("x+y=%f,x-y=%f\n",add,sub); }