武汉大学计算机学院C语言历年试题1Word格式文档下载.docx

上传人:b****7 文档编号:22844993 上传时间:2023-02-05 格式:DOCX 页数:48 大小:47.73KB
下载 相关 举报
武汉大学计算机学院C语言历年试题1Word格式文档下载.docx_第1页
第1页 / 共48页
武汉大学计算机学院C语言历年试题1Word格式文档下载.docx_第2页
第2页 / 共48页
武汉大学计算机学院C语言历年试题1Word格式文档下载.docx_第3页
第3页 / 共48页
武汉大学计算机学院C语言历年试题1Word格式文档下载.docx_第4页
第4页 / 共48页
武汉大学计算机学院C语言历年试题1Word格式文档下载.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

武汉大学计算机学院C语言历年试题1Word格式文档下载.docx

《武汉大学计算机学院C语言历年试题1Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《武汉大学计算机学院C语言历年试题1Word格式文档下载.docx(48页珍藏版)》请在冰豆网上搜索。

武汉大学计算机学院C语言历年试题1Word格式文档下载.docx

#defineLENGTHWIDTH+1

则执行赋值语句v=LENGTH*20;

/*v为int型变量*/后,v的值为______。

1620

1601

100

1600

()6. 

假如指针p已经指向某个整型变量,语句____使指针q与p指向同一变量。

q=**p

q=*&

p

q=&

q=*p

()7. 

设longa[50],*p;

执行p=a;

p+=4;

后*(p+4)等价于____。

a[8]

a[4]

a[2]

无法确定

()8. 

执行fp=fopen(”A:

Exam1_8.txt”,”wb”);

后fp为null,最可能的原因是____。

按二进制方式打开文本文件

文件A:

Exam1_8.txt不存在

文件写保护

Exam1_8.txt大小写不一致

()9. 

______不是对象的基本特性。

封装

多态(重载)

非结构

继承

()10. 

结构化程序设计追求的首要目标是程序的______。

运行速度快

存储空间少

结构优

代码长度最短

二.程序纠错(10分)

下列两个程序段有若干错误,请你错误之处下方标明,如有必要可以简要说明原因(在程序右侧)。

重要提示:

任何一种程序语言其数据类型的存储空间将受到计算机制约。

程序段A

/*输入不超过20个正整数,计算其乘积*/

#definenum20

inta[num],count=0,buf=1;

for(inti=0;

(i<

num)&

(buf>

0);

i++)

{scanf(“%u”,buf);

a[++count]=buf;

}

num=count;

longsum=0;

for(i=0;

i<

count;

i++)sum*=a[i];

程序段B

/*下列函数递归函数求f(n)=(2n)!

*/

longf(intn)

{inttmp

if(n<

2)tmp=1;

tmp=(2*n)*(2*n-1)*f(n-2);

return(long)tmp;

三.程序阅读与分析(32分)

1. 

(6分)下面的程序求矩阵A(m,m)的右下三角区的所有元素的和,请在程序的空白处填上适当的内容。

#definem100

main()

{inta[m][m];

inti,j;

①sum=0;

for(i=0;

m;

for(j=0;

j<

j++)scanf(“%d”,②);

for(i=③;

④;

for(j=⑤;

⑥;

j++)sum+=(double)a[i][j];

}

2. 

(6分)写出下列程序的运行结果。

#include<

stdio.h>

{inti,b,k=0;

for(i=1;

i<

=5;

i++)

{b=i%2;

while(b-->

=0)k++;

printf(“%d,%d”,k,b);

3. 

intfat(intn)

{staticintf=1;

f=f*n*2;

return(f);

{inti,j;

++i)

printf(“%d\t”,fat(i));

4. 

(6分)下列程序段将一个单链表写入一个文件:

p=head;

if(fp=fopen(“Exam5.dat”,”w”)!

=null)

{while(p!

{

fwrite(p,sizeof(structnode),1,fp);

p=(*p).next;

};

请问用下面的程序段,可以将这个链表从该文件中生成到内存中吗?

为什么?

if(fp=fopen(“Exam5.dat”,”r”)!

{while!

feof(fp)

{p=malloc(sizeof(structnode))

fread(p,sizeof(structnode),1,fp);

5. 

(8分)阅读以下递归函数,并用非递归方法改写该函数。

#include<

voidconvert(intn)

{inti;

if((i=n/7)!

=0)convert(i);

putchar(n%7+’0’);

四.子程序设计(每题10分,共30分)

本题说明:

完成函数设计时,请自行说明所有的形式参数的类型

设计一个函数arrsum(a,n)计算一维整数数组a中前n个元素的平均值。

设计函数prime(n),其中n为任意一个整数,当n为素数时,函数返回真,否则返回假。

调用函数reverse(h)将h指向的单链表倒置。

实在参数h应该指向倒置后链表的头节点。

五.算法设计(选做一题18分)

说明:

● 

仅需任意选做一题。

多选者,以卷面先列出的为判分依据;

分析思路、重要数据类型的定义、模块的功能、形式参数、函数返回值说明;

(9分)

用伪代码或其它方法描述子程序;

不必完整写出函数程序的代码,完整代码将不作为判分依据。

用字符数组模拟实现字符串,给出下列函数:

两个字符串的并接、找一个字符在串中的位置、统计一个字符在串中的数目。

模拟实现大小写(52个)英文字母的集合运算,给出集合的表示方法,及运算属于∈、并∪、差─的子程序。

模拟实现复数类型,给出复数的加法、减法和乘法的子程序。

2002-2003学年度第一学期2002级

一.选择最合适的答案填空(每题2分,共20分)

()1.在一个整常量后面加一个字母,如213L,则表示该常量为型常量。

长整数

常量

地址

八进制

定义变量时冠以关键字,则表示此标识符是静态外部变量,可以供其他文件共用。

register

extern

void

static

表达式0x0fff&

0x3345的值为______。

3345

0x3345

0x345

0x3fff

设变量intx=10,y=20,则执行x=x+y;

y=x-y;

x=x-y后x为______。

30

20

10

0

表达式27<

2的值为______。

54

13

81

108

设有如下宏定义#defineWIDTHf(x,y)(x>

y)?

x-y:

x+y;

则表达式f(10,20)的值为______。

-10

与*p.data指等价的表达式为____。

*&

p->

data

*data

设inta[50],q;

long*p;

执行p=(long*)a;

q=(int*)p;

后*(q+2)等价于____。

a[6]

a[10]

Exam1_8.txt”,”rb”);

源文件不是二进制文件

Exam1_8.txt长度太大

二.文字填空(15分)

1.变量名实际上是一个符号地址,对于已经定义的一个整型变量X,要获取其地址则可以用操作来实现。

2.如果将变量c定义为无符号字符类型,定义形式为,其数值取值范围(写成十六进制)为至。

3.设有inta=2,b=3;

floatc=2.5;

则算术表达式(a+b)/(int)c+(float)(a+b)/c的值是。

4.对于c=a<

b?

b:

a;

如果已知a=5;

b=4;

则c的值为。

5.已知char*name[]={“Basic”,“C”,”Pascal”,“VB”,“VC++”};

char**p;

p=name+2;

则语句printf(“%o\n”,*p);

的输出为,语句printf(“%s\n”,*p);

的输出为。

6.在定义函数时,如果在函数首部的最左端冠以关键字,则表示此函数是外部函数,可以供其他文件调用。

7.声明一个结构体类型的一般形式为。

三.程序阅读与分析(20分)

一个int型变量的最大允许值为32767,请写出程序的执行结果。

(6分)

main()

{inta,b;

longc;

a=32767;

b=a+1;

c=a+1;

printf(“%d,%d,%u”,a,b,c);

(6分)下面的程序对数组A[m]进行排序,并计算它们的和。

请在程序的空白处填上适当的内容。

#definem50

{inta[m];

inti,j,K;

i++)scanf(“%d”,②);

for(i=1;

m-1;

for(j=③;

j++)

{sum+=(double)a[i][j];

if⑤

{K=a[i];

a[i]=⑥;

a[j]=K;

(8分)说明子程序的功能

voidReverse(charch)

{

ch=getchar();

ifch!

=’#’

Reverse(ch);

putchar(ch);

};

};

给定输入字符串ABCDXF%&

123#KK调用该过程Reverse(C)后,产生的输出是什么?

实在参数C(字符变量)的值为什么?

四.子程序设计(共30分)

每题15分,仅需任意选做两题。

完成函数设计时,请自行说明所有的形式参数。

1.1.左图为设定的有关结点及指针的取值示意,如果执行Try(p1,p2,p3)后,有关结点、指针的值如右图所示。

请你用C语言:

∙ 

给出结点、指针的类型定义形式

写出子程序Try的定义。

(提示:

形式参数应该适当作变化)

2.2.编写递归函数f(n)求Fibonacci数列的第n个数。

3.3.函数intgetbin(int*bitno);

完成从键盘上读入二进制字符串将它的值作为函数值返回。

其中,bitno返回二进制串的长度。

(该串以非0、1的字符为结尾)

如 输入:

101010B 函数结果为:

42

 输入:

111111# 函数结果为:

63

五.算法设计(选做一题15分)

任意选做一题。

1.1. 

任意给定一个年份year、月份month。

设计一个输出月历的算法。

2.2. 

用字符数组存储整数,如123则数组的前四个元素为’1’、‘2’、‘3’、‘\0’设计一个整数乘法、加法的子程序。

2003-2004学年度第一学期2003级

一. 

单项选择题:

(选择最合适的答案填空,每小题2分,共20分)

()1.不正确的字符常量是______。

‘2’

‘\\’

“q”

‘*’

()2.表达式7.5+7%2-5/2*3的结果为______。

1.0

2.5

3.0

4.5

()3.设变量intm,n,a,b的值均为0,则执行表达式(m=a>

=b)||(n=a>

=b)后,m,n

的值为______。

()4.表达式35>

>

8

9

16

17

()5.设有如下宏定义#defineweight50

#defineprice1+weight

则执行赋值语句v=price*20;

510

501

61

500

()6.在定义函数时,在局部变量前面加上____前缀,则在多次调用该函数

时,该局部变量值保持一致。

auto

执行p=a+2;

后*(p+4)等价于________。

()8.staticchara1={‘h’,’e’,’l’,’l’,’o’};

staticchara2=”hello”;

以上定义的数组a1和a2的数组长度为________。

6和6

6和5

5和5

5和6

()9.表达式0x7586&

~0xff结果为______。

0x86

0x7586

7500

0x7500

inta[10][10];

int(*p)[10];

p=a;

则*p+3表示____。

&

a[0][3]

a[0][3]

a[3][0]

a[3][0]

二. 

文字填空(共15分

1. 

为了判断两个字符串s1和s2是否相等,应当使用库函数______________。

2. 

*作为单目运算符表示____________________。

3. 

在C语言中,存储类别为________和____________的变量只有在使用它们时才占用内存空间。

4. 

设x、y为int类型变量,请写出以下命题:

(1)x和y都大于10_________________________________

(2)x、y中有一个为负数______________________________________

5. 

C语言的编译系统对于预处理中的宏命令是在_______________________进行处理的。

6. 

设有如下定义int(*ptr)();

则表示ptr是____________________变量。

7. 

设intx,y,z;

初值分别为2、3、4,则表达式(x>

=y>

=z)?

1:

0的结果为__________。

8. 

用于定义枚举类型的关键字为____________。

三.程序填空(请在空白处填写合适内容以完成整个程序,共10分)

将文本文件file1.txt复制到文件file2.dat中,复制时只复制小写字母。

#incude<

voidmain()

{FILE*f1,*f2;

charc;

if((

(1)==NULL)

{printf(“file1.txtcannotopen\n”);

return;

if(

(2)==NULL)

{printf(“file2.datcannotopen”\n);

while((3))

{c=getc(f1);

if((4))

putc(c,f2);

fclose(f1);

fclose(f2);

下面程序从字符串s中去掉重复出现的字符,例如s的内容为”asdadf12”,则处理后为”asdf12”。

string.h>

{chars[50];

(5)*p,*q;

scanf(“%s”,(6));

for((7);

(8);

p++)

{q=p+1;

while(*q)

if((9))

strcpy(q,q+1);

else

(10);

printf(“%s\n”,s);

四.程序阅读与分析(每小题5分,共10分)

写出下列程序的运行结果。

f=f*n-1;

阅读以下递归函数,分析进行funx(6,&

x)调用时程序运行过程;

调用完成后变量x的值为多少?

voidfunc(intn,int*s)

{intf1,f2;

if(n==1||n==2)*s=1;

else

{func(n-1,&

f1);

func(n-2,&

f2);

*s=f1+f2;

五.子程序设计(每题10分,共30分)

设计函数count(s,c),统计字符c在字符串s中出现的次数。

设计一个函数arrsum(a,b,c,m,n),a、b为两个已经按照从小到大排列的一维整数数组(数组元素的个数分别为m和n),将数组a、b合并为一个有序的数组c。

六.算法设计(选做一题15分)

函数reverse(h)从读入若干正整数(以-1结束),组成一个单链表。

实在参数h应该指向创建后链表的头结点,函数返回值为链表中结点个数。

给出reverse(h)的定义。

具体要求如下:

A)说明链表结点类型的C定义形式;

B)用图示的方法说

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1