2012~13(2)\\"程序设计II\\"期末试卷(1)

更新时间:2023-12-02 11:57:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

_…__…__…__…__…__…__…__…__…_:……姓名…_ _……__…__…__…__…__…__…_:…号线.学…._ …__…__…__…__…__…__订 .__…__…:…级…班… …_ _…__装_..__…__…__…__…__…__…__…__…:…业…专… _…__…__…__…__…__…__…:…级…年……诚信应考 考出水平 考出风格

浙江大学城市学院

2012 — 2013 学年第 二 学期期末考试试卷

《 程序设计II 》

开课单位: 计算学院 ;考试形式:闭卷;考试时间:_2013__年__7__月_1_日; 所需时间: 120 分钟 题序 一 二 三 四 五 六 七 八 总 分 得分 评卷人

注:请在答题卷上答题,答案写在试卷上无效。

一.单项选择题(本大题共10题,每题1分,共10分。) 1、下列叙述中错误的是( )。

A)C 语言源程序经编译后生成后缀为.obj 的目标程序

B)C 程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 C)用C 语言编写的程序称为源程序,它以ASCII 代码形式存放在一个文本文件中 D)C 语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 2、假设m是一个三位数,从左到右用a、b、c表示各位的数字,则从左到右各个数字是bac的三位数的表达式是( )。

A)b*100+a*10+c B)a*100+b*10+c

C)b+a+c D)bac 3、有如下程序,该程序的执行结果是( )。

int main(void)

{ int i,sum=0;

for(i=1; i<=3; i++) sum+=i++; printf(\ return 0; }

A)2 B)3

C)4 D)5

4、在嵌套使用if 语句时,C 语言规定else 总是( )。

A)和之前与其具有相同缩进位置的if 配对 B)和之前与其最近的if 配对 C)和之前与其最近的且不带else 的if 配对 D)和之前的第一个if 配对 5、下述对C语言字符数组的描述中错误的是( )。

第1页,共8页

A)字符数组可以存放字符串

B)字符数组中的字符串可以整体输入、输出

C)可以在赋值语句中通过赋值运算符\对字符数组整体赋值 D)不可以用关系运算符对字符数组中的字符串进行比较

6、若有定义 int n=2,*p=&n,*q=p; 则以下非法的赋值语句是( )。 A)p=q; B)*p=*q; 7、下列叙述中错误的是( ) 。

C)n=*q;

D)p=n;

A)改变函数形参的值,不会改变对应实参的值 B)函数可以返回地址值

C)可以给指针变量赋一个整数作为地址值

D)当在程序的开头包含头文件 stdio.h 时,可以给指针变量赋 NULL 8、以下选项中,不能定义s为合法的结构变量的是( )。 A) struct abc { double a;

B) struct { double a;

char b[10]; char b[10];

} s; } s; C) struct ABC D) struct s { double a; char b[10]; };

{ double a; char b[10]; };

struct ABC s;

9、若有定义“int *p[3];”,则以下叙述中正确的是( )。

A)定义了一个基类型为int的指针变量p,该变量具有3个指针

B)定义了一个指针数组p,该数组含有3个元素,每个元素都是基类型为int的指针 C)定义了一个名为*p的整型数组,该数组含有3个int类型元素 D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有3个int类型元素 10、若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要 求的函数调用是( )。

A)fopen(\ C)fopen(\

B)fopen(\D)fopen(\

二.填空题(本大题共10题,每题1分,共10分。) 1、程序设计语言必须具有 和数据处理的能力。 2、C语言的直接可执行文件是通过 和连接生成的。

3、条件“20

4、设有int w='A', x=14, y=15; 则执行w=((x || y)&&(w<'a')); 后,w的值为 。 5、若有定义 char *s=”123456”; 则执行语句strcpy(s+2,s+4);后,strlen(s)的值为 。 6、在stdio.h中定义了NULL的值为0,EOF的值为 。

7、有以下定义,printf(“%d”, m.n /m.m.n);的输出结果是__________。 struct s1{ char c1, c2; int n;

};

struct s2{

第2页,共8页

int n;

struct s1 m;

} m = {1, {?A?, ?B?, 2} };

8、下面程序的运行结果是__________。

#include int main(void) {

int x[5]={2,4,6,8,10}, *p, **pp; p = x;

pp = &p;

printf(”%d\\n”, *(++(*pp))); return 0;

}

9、执行下列程序段后,变量i的值应为 __________。

#define MA(x, y) ( x*y )

i = 5;

i = MA(i, i + 1) – 7;

10、当下列程序段执行完后,变量j的值为____________。 int i, j;

for(i=0; i<3; i++)

for(j=0; j<4; j++)

if(j>i) break;

三.程序阅读题(本大题共5题,每题4分,共20分。) 1、以下程序的运行结果是__________ 。 #include int main(void) {

int x ,a = 0,b = 0; for(x=0; x<2; x++){ switch(x)

{ case 0: b++; break;

case 1: a++;

case 2: a++; b++;

}

printf(\ } return 0; }

2、写出下面程序的运行结果。 #include int main(void)

{ float s[6]={1, 3, 5, 7, 9};

第3页,共8页

float x;

int i;

scanf(“%f”, &x);

for (i=4 ; i>=0; i--)

if(s[i]>x) s[i+1]=s[i]; else break;

printf(\return 0;

}

(1) 如果输入4,则输出__________。 (2) 如果输入5,则输出__________。

3、以下程序的运行结果是__________。 #include void f(int *p) { static t=1; *p += t; t++; }

int main(void) {

int a, *p; a = 10;

p = &a; f(p);

printf(“%d\\n”, a); f(p);

printf(“%d\\n”, ++*p); return 0; }

4、写出下面程序的运行结果。 #include int fib(int g)

{ switch(g){

case 0: return 0; case 1: return 1; case 2: return 2; }

return fib(g-1) + fib(g-2); }

int main(void) {

int k;

第4页,共8页

k = fib(4);

printf(\ return 0; }

(1) 以上程序的输出结果为__________。

(2) 如果将第8行改为:return fib(g-1) + fib(g-3); 则输出结果为__________。

5、写出下面程序的运行结果。

(1)下面程序的运行结果是________。 #include #include void main( )

{ char t, a[]=\

int i, j, n=strlen(a);

for( i = 1; i < n; i++ ) for (j = 0; j < n-i; j++ ) if (a[j] > a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }

puts(a);

}

(2) 下面程序的运行结果是________。 #include #include void main( )

{ char t, a[]=\

int i, j, n=strlen(a); int flag;

for( i = 1; i < n; i++ ){ flag=0;

for (j = 0; j < n-i; j++ ) if (a[j] > a[j+1]){

flag=1;

t=a[j]; a[j]=a[j+1]; a[j+1]=t; }

if(flag==0) break;

}

printf(\ }

四.程序填空题(本大题共10空,每空2分,共20分。)

1、下列程序的功能是:求出数组 x 中各相邻两个元素的和依次存放到 a 数组中,然后输出。

int main(void )

{ int x[10],a[9],i;

第5页,共8页

for(i=0; i<10; i++)

scanf(\ for( (1) ; i<10; i++ )

a[i-1]=x[i]+ (2) ; for(i=0; i<9; i+ +)

printf(\ printf(\ return 0; }

2、下列程序先消除输入字符串的前后空格,再判断是否是“回文”(即字符串正读和倒读都是一样),若是则输出YES,否则输出NO。

#include #include int main(void) { }

char s[80], ch, *p, *q; int i, j, n; gets(s); p = ___(3)___;

while ( *p == ? ?) ___(4)___; n = strlen(s); q = ___(5)___;

while ( *q == ? ?) q--;

while ( p

p++; q--;

}

if ( p

3、以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件中形成文本文件,并将字符的个数写到文件尾部。

#include int main() {

____(7)_____;

char ch, fname[32]; int count=0;

printf(\:\

if((fp=fopen(fname ,\

printf(\:%s \\n\}

第6页,共8页

printf(\:\\n\

while((ch=getchar())!=?#?) {

____(9)______; count++; }

fprintf(____(10)_____,\fclose(fp); return 0;

}

五.程序改错题 (本大题共3题,第1题2分,第2、3题各4分,共10分。) 1、指出程序中代码错误的标号并改成正确的代码,本小题有1处错误。

输入三角形的3条边a, b, c,如果能构成一个三角形,输出面积。 #include #include int main(void) {

double a,b,c, area,s;

scanf( \ /*----1----*/ if( a + b > c || b + c > a || a + c > b) /*----2----*/ {

s = ( a + b + c ) / 2;

area = sqrt( s * ( s - a ) * ( s - b ) * ( s - c )); printf(\ /*----3----*/ }

return 0;

}

2、指出程序中代码错误的标号并改成正确的代码,本小题有2处错误。

在数组a的元素中查找与x相同的元素,如果找到,输出x在数组a中的下标位置;如果没有找到,输出“没有找到与x相同的元素!”。 #include int main(void) {

int i, x, n; int a[10];

scanf(\

for(i = 0; i < n; i++)

scanf(\ /*----1----*/ scanf(\

for(i = 0; i < n; i++) /*----2----*/ if(a[i] != x) /*----3----*/

break;

if(i >= n) /*----4----*/

printf( \没有找到与%d相等的元素!\\n\

else

printf( \和%d相同的数组元素是a[%d] = %d\\n\ /*----5----*/

第7页,共8页

return 0;

}

3、指出程序中代码错误的标号并改成正确的代码,本小题有2处错误。 从键盘上输入5个字符串(每个字符串长度小于80个字符),输出其中最长的字符串,如果有多个,只输出最前面的那个字符串。 #include #include void main() {

int n=5,i,index=0; /*----1----*/ char mstr[5][80]; /*---2----*/ for(i=0;i

scanf(\ /*----3----*/ for(i=1; i

{

if(strlen(mstr[index]) <= strlen(mstr[i]) ) /*----4----*/ index = i; } puts( mstr[i] ); /*--5---*/ }

六.程序设计题(本大题共3题,每题10分,共30分。)

1、 编写程序,输入一个双精度数x,计算y的值(保留3位小数)。可调用数学函数 (平方根函

数是sqrt)。

(x+1)2 + 1/x x<0

y = 0 x=0

x

x>0

2、 输入一个整数n(n<10),然后输入n个学生信息(每个学生信息包括3项:学号、姓名、

成绩)存入数组a,再输入一个学号,在数组中查找该学号,找到输出该学生信息,没找到输出Not Found。

3、 输入一个字符串,先比较该字符串中数字字符个数是否大于英文字母(包括大小写)个数,

如果大于,则将这些数字字符合成一个整数后输出。其中要求自定义一个函数int judge(char *s),用于判别字符串中数字字符个数是否大于英文字母(包括大小写)个数,大于返回1,否则返回0。

例如:字符串为”a1B2c34”,则输出1234 字符串为”a1B2c3”,则无输出

第8页,共8页

_…__…__…__…__…__…__…__…__…_:……姓名…_ _……__…__…__…__…__…__…_:…号线.学…._ …__…__…__…__…__…__订 .__…__…:…级…班… …_ _…__装_..__…__…__…__…__…__…__…__…:…业…专… _…__…__…__…__…__…__…:…级…年……诚信应考 考出水平 考出风格

浙江大学城市学院

2012 — 2013 学年第 二 学期期末考试答题卷

《 程序设计II 》

开课单位: 计算学院 ;考试形式:闭卷;考试时间:_2013__年__7__月_1_日; 所需时间: 120 分钟 题序 一 二 三 四 五 六 总 分 得分 评卷人 得分 一.单项选择题(本大题共10题,每题1分,共10分。) 1 2 3 4 5 6 7 8 9 10 得分 二.填空题(本大题共10题,每题1分,共10分。)

1、 2、 3、 4、 5、 6、 7、 8、 9、 10、

得分 三.程序阅读题(本大题共5题,每题4分,共20分。) 1、 2、

第1页,共4页

3、 4、 5、 得分 四.程序填空题(本大题共10空,每空2分,共20分。)

(1) (3) (5) (7) (9) 得分 (2) (4) (6) (8) (10)

五.程序改错题 (本大题共3题,第1题2分,第2、3题各4分,共10分。)

1、 错误标号:

正确代码:

2、 错误标号:

正确代码:

错误标号:

正确代码:

3、 错误标号:

正确代码:

错误标号:正确代码:

第2页,共4页

六.程序设计题(本大题共3题,每题10分,共30分。) 得分 1、

得分

2、

第3页,共4页

得分

3、

第4页,共4页

本文来源:https://www.bwwdw.com/article/xett.html

Top