《常熟理工学院-C语言-考试样卷(共5页).doc》由会员分享,可在线阅读,更多相关《常熟理工学院-C语言-考试样卷(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上程序设计基础(C语言)考试卷(本科样卷)(理论部分)考试时间120分钟,答案请写在答题卡上 专心-专注-专业一、选择题 (每小题2分,共40分)1以下语句中不包含关键字的是()。 Ax=sqrt(2);Bwhile(x!=0)x-;Cif(x0)x=-x;Dreturn x;2执行以下程序时, #include main() int a; float b; scanf(%3d%f,&a,&b);printf(%dt%f,ab); 若要求变量a和b分别从键盘获得输入值45和678.0,则以下四种输入数据中(凵代表”空格”键,代表”回车”键),不能达到该要求的输入数据是(
2、)。A45凵678B45678C45,678D3已知有声明int x=2:,以下表达式中值不等于8的是()。Ax+=2,x*2Bx+=x*=XC(x+7)/2*(x+1)%2+1)Dx*7.2/x+14已知有声明”int a=3, b=4, c;”,则执行语句”c=1/2*(a+b);”后,c的值是()。A0B3C3.5D45已知字母A的ASCII码是65,字母a的ASCII码是97,变量c中存储了一个大写字母的编码。若要求将c中大写字母编码转换成对应小写字母编码,则以下表达式中不能实现该功能的是()。Ac=tolower(c)Bc=c+32Cc=c-A+aDc= (c +A)%26-a6已有
3、声明”char *s1=China, s210, *s3=Nanjing; *s4;”,以下字符串赋值语句在执行时可能出现错误的是()。Astrcpy(s3, s1);Bstrcpy(s4, s1);Cstrcpy(s2, s1);Dstrcpy(s2, s3);7执行以下程序后的结果是()。#include void main() int x=3;Doprintf(%dt, x=x-3);while(!x);A输出一个数:0B输出一个数:3C输出两个数:0和-3D无限循环,反复输出数8设有声明”int p10=1, 2, i=0;”,以下语句中与”pi=pi+1, i+;”等价的是()。Ap
4、i=pi+1;Bp+i=pi;Cp+i=pi+1;Di+, pi-1=pi;9已知有声明”int m=5,4,3,2,1,i=0;”,下列对m数组元素的引用中,错误的是()。 Am+iBm5Cm2*2=0Dmm410若有函数fun的定义为 void fun()static int a=1; 则下列叙述中不正确的是()。A在每次调用fun函数时,变量a的值是上次调用结束时a的值B在fun函数之外,可以用变量名a直接引用a的值C在其他函数中,可以出现声明double a=2.5;Dfun函数的形式参数不能取名为a11若函数调用时的实参为变量,则以下关于函数形参和实参的叙述中正确的是()。A实参和其
5、对应的形参占用同一存储单元B形参不占用存储单元C同名的实参和形参占用同一存储单元D形参和实参占用不同的存储单元12已有声明”int a5;”,以下表达式中不能正确取得a1指针的是()。A&a1B+aC&a0+1Da+l13若有如下声明和语句: int t33, *pt3, k; for(k=0; kaB(+ptr)-aCx1ADx0.b-a15下列叙述中正确的是()。 Amain函数必须出现在其他函数之前 Bmain函数中至少必须有一条语句 CC程序总是从main函数的第一条语句开始执行DC程序总是在执行完main函数的最后一条语句后结束16已有定义“int a23=0, *p=a0;”,下面
6、表达式中有语法错误的是 。Aa0=1 Bp0=1 C*p=1 Da00=117若有如下声明和语句:int a33, *p3, k;for(k=0; k3;k+) pk=&ak0;则表达式*(*(p+1)+2)所引用的是 。Aa20 B&a20 Ca12 D&a1218设有声明语句“int b33=1,2,3,4,5,6,7,8,9;”,下面语句中不能输出数组元素b12的值6的是 _。Aprintf(%d ,*(*(b+1)+2) Bprintf(%d ,*(&b20-1);Cprintf(%d ,*(b1+2); Dprintf(%d ,*(b+1)2);19下面函数中,可以把整型数据以二进制
7、形式写入文件中的函数是_。Afprintf() Bfwrite()Cfread()Dfputc()20在缺省情况下,标准C的编译系统中预定义的标准输出流stdout直接连接的设备是 。A软盘 B硬盘 C键盘 D显示器二、填空题 (每空2分,共20分)1数学式所对应的C语言表达式为(1)。2在C语言中大部分执行语句都含关键字。例如,for语句含关键字for。除这些语句外不含关键字的非空操作语句是(2) 。3在以下程序的main函数中,语句”fun(x, 10);”内的实参x表示数组x的(3) 。 void fun(int a10, int n) int i; for(i=0; in; i+)ai
8、+; main( ) int x10=0;fun(x, l0); 4已知有函数定义“int fun()return (3, 4);”,则调用fun后的函数返回值是(4)。5执行程序段 “int x=0x6c; printf(“x=xn”, x);”后的输出结果为(5) 。6已知有声明”char ch; int a;” 执行语句”scanf(“%c%d”, &ch, &a);”时如果从键盘输入的数据是”123”,则变量a得到的值是(6) 。7在C语言源程序中,不带任何修饰符的浮点数直接量(例如:3.14)都是按(7)类型数据存储的。8若有声明“char sl10= “ABCDE”, s210=
9、“A0”;”,则语句 “printf(“%d”, strlen(strcpy(sl, s2);”的输出结果是(8) 。9设函数a的定义如下: void a() int x=12,y=345;FILE *fp=fopen(“my.dat”,”w”); fprintf(fp, “%d %d”,x,y); fclose(fp); 已知main函数中有声明int x,y;FILE *fp=fopen(“my.dat”,”r”);,若需要从文件mydat中正确地读出由函数a写入的两个数据并分别保存到变量x和y中,则在main函数中使用的读数据语句应当是(9)(要求写出语句的完整格式)。10在一个C语言源
10、程序中,必不可少的是(10) 。三、阅读程序题 (每空2分,共20分)1以下程序运行时输出结果是 (1) 。 #includemain() char *p=“student”;if(strcmp(p,“student”) printf(“yes”); else printf(“no”);2以下程序运行后的输出结果为 (2) 。 #include int b; int fun(int a) static int c=3; return (+a)+(+b)+(+c);void main ( ) int i, a=2; for(i=0;i2;i+) printf(“%5d”, fun(a);3以下程
11、序输出结果为 (3) 。 void f(int a, int *b) a+; b+; (*b)+; main() int i, x2 = 4,4; f(x0, &x0); printf(“%d,%d”, x0, x1); 4以下程序运行时,输出结果是 (4) 。 #include fun(int x) if(x/20) fun(x/2); printf(“%d”, x%2); main( ) fun(20); putchar(n);5以下程序运行时输出到屏幕的结果是 (5) 。 #include #define MAX(A, B) AB?2*A:2*B void main() int a=1,
12、 b=2, c=3, d=4, t; t=MAX(a+b, c+d); printf(“%dn”, t); 6以下程序运行时输出到屏幕的结果中第一行是 (6) ,第二行为 (7) 。#include #include void compute(char *s) int t, r; char op; for(r=0; isdigit(*s); s+) /* isdigit(*s)判断s指向的字符是否为数字字符*/ r=r*10+*s-0; while(*s) op=*s+; for(t=0; isdigit(*s); s+) t=t*10+*s-0; switch(op) case +:r=r+
13、t; break; case -: r=r-t; break; case *:r=r*t; break; case /:if(t) r=r/t; elseputs(“devide error”); return; printf(“%dn”, r); void main( ) compute(“12+6-19+2”); compute(“12/6*19/2”); 7以下程序运行时输出结果的第一行是 (8) ,第二行是 (9) ,笫三行是 (10) 。 #include typedef struct s int index; int value; M;main( )static int i, j,
14、 k, c44;M a10=0, 1, 3, 2, 5, 3, 6, 4, 9, 5, 15, 6, -1,0, *p=a, b10=1, 1, 3, 2, 4, 3, 6, 4, 10, 5, 13, 6, -1, 0, *q=b;while (p-index!=-1) i=p-index/4; j=P-index%4; cij=p-value; p+;while(q-index !=-1) i=q-index/4; j=q-index%4; cij+=q-value; q+; for(i=0;i4;i+) for(j=0;j4;j+) printf(“%d”, cij); printf(“
15、n”);四、完善程序题(每空1分,共5分)1以下程序的功能是对a数组a0an-1 中存储的n个整数从小到大排序。排序算法是:第一趟通过比较将n个整数中的最小值放在a0中,最大值放在an-1 中;第二趟通过比较将n个整数中的次小值放在a1中,次大值放在an-2 中;,以此类推,直到待排序序列为递增序列。试完善程序以达到要求的功能。#include #define N 7void sort(int a, int n) int i, j, min, max, t; for(i=0; i(1); i+) (2); for(j=i+1; jn-i; j+) if(ajamax)max=j; if(min
16、!=i) t=amin; amin=ai; ai=t; if(max!=n-i-1) if(max=i) t=amin; amin=an-i-1; an-i-1=t; else t=amax; amax=an-i-1; an-i-1=t; void main() int aN=8, 4, 9, 3, 2, 1, i; sort(a, N);printf(“sorted:n”);for(i=0; iN; i+) printf(“%dt”,ai);printf(“n”);2程序中函数double mycos(double x)的功能是:根据下列公式计算cos(x)的近似值。 精度要求:当通项的绝对
17、值小于等于10-6时为止。 #include #include double mycos(double x) int n=1;double sum=0, term=1.0;while ((4)=le-6)sum+=term; term*=(5); n=n+2; return sum;main( ) double x;scanf(“%1f”, &x);printf(“fx(%f)=%f,%fn”, x, mycos(x), cos(x);五、改错题(共9分,每错3分, 指出错误1分,改对2分)题目:函数change从a数组存储的字符串中取出所有十六进制数字字符依次存入字符数组b中,然后再将b数组
18、中的数字字符串转换成一个整数并返回。提示:库函数isxdigit(ch)的功能是检查ch是否是十六进制数字字符,若是则返回1,否则返回0。(模拟题有6个错)注意:不能增加、删除语句,但可以调换语句的位置。(测试数据与运行结果)测试数据:xyz3F4tqk运行结果:输出1012(含有错误的源程序)#include#include#include(1)long change(char a)(2)(3)int i, j = 0;long int k = 0;(4)char b10 = 0;(5)for (i = 0;ai! = 0;i+)(6)if (isxdigit(ai)(7)bi+ = ai;
19、(8)bj = 0;(9)i = 0;(10)do(11)(12)if (isdigit(bi)(13)k = k * 16 + bi - 0;i+; (14)else(15)(16)bi = isupper(bi) ? bi:bi - a + A;(17)i+;(18)k = k * 16 + bi - A;(19)(20)(21)while (bi != 0);(22)return k;(23)(24)void main()(25)(26)char c80 = xyz3F4tqk;(27)long m;(28)m = change(c);(29)printf(%ld, m);(30)六、编
20、程题(共6分)求下面数列的和,计算到第n项的值小于10-4为止。式中,(本程序运行结果是:y=2.)。要求计算fn用函数过程实现。答题卡题号一二三四五六七总得分阅卷人一、选择题(每小题2分,共30分)12345678910ACDADBCDBB11121314151617181920DBCACACDBD二、填空题(每小题2分,共20分) (1)_sqrt(x*x+y*y)/(a+b)_ (2)_表达式语句和函数调用语句_ (3)_第一个元素地址 或 起始地址_ (4)_4_ (5)_x=6c_ (6)_23_ (7)_double_ (8)_3_ (9)_fscanf(fp, “%d%d”, &
21、x, &y);_ (10)_ _main函数定义_ _三、写出程序结果题(每空2分,共20分) (1)_no_ (2)_8 10_ (3)_4,5_ _ (4)_10100_ (5)_10_ (6)_1_ (7)_19_ (8)_1104_ (9)_3380_ (10)_0550_四、完善程序题(每空1分,共5分)(1)_n/2_ (2)_min=max=i_ (3)_math.h _(4)_fabs(term)_ (5)_-x*x/(n*(n+1)_ 五、改错题(共9分) 六、编程题(共6分)(1) 行有错,改为.(5) 行有错,改为.(7) 行有错,改为.(8) 行有错,改为.(17) 行位置有错,应该移到?行后(18) 行有错,改为.#includemain() float a,y=0; int i=1; for( ; ; ) a = 1.0 / fib(i); if (a = 0.0001) break; y = y + a; i = i + 1 printf (y=%fn, y);int fib(int i) if (i = 1) return 1; else if (i = 2) return 2; else return( fib(i - 1) + fib(i - 2);