教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 综合文档 >

武汉大学计算机学院C语言历年试题1(5)

来源:网络收集 时间:2026-05-25
导读: } 2. 下面程序的功能是:从一个字符串中删除指定字符,例如,从字符串”Prolog”中删除字符?o?,则结果为”Prlg”。 #include void deletechar( ⑥ char *s或者char s[] , char c) { int i=0,j; while( ⑦ s[i]!=’

}

2. 下面程序的功能是:从一个字符串中删除指定字符,例如,从字符串”Prolog”中删除字符?o?,则结果为”Prlg”。

#include

void deletechar( ⑥ char *s或者char s[] , char c) { int i=0,j;

while( ⑦ s[i]!=’\\0’或者s[i]!=0或者s[i] 或者s[i]>0 ) if(s[i]==c) { j= ⑧ i ;

while( ⑨ s[j]!=’\\0’或者s[j]!=0或者s[j]或者s[j]>0 )

{ s[j]=s[j+1]; j++; } } else

⑩ i++或者++i或者i=i+1或者i+=1 ;

}

void main(void) { char s[20],c; gets(s); getchar(c);

deletechar(s,c); puts(s);

}

}

if (s!=8) ⑤break ; count++; }

printf(\

⑦填s[i++]!=’\\0’或者s[i++]!=0或者s[i++] 或者s[i++]>0 ⑩填continue 算正确

四. 程序阅读与分析(共10分)

1. 分析以下程序执行流程,并写出下列程序的运行结果。

#include int x=0;

int fat(int n) { static int f=0;

x+=2; f=f+n; return (f); }

void main(void) { int i,j;

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

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

} }

答案: 3 2 7 4 12 6

评分要点:给出上述6个正确结果,给满分5分

结果完全不对,但是给出程序执行流程分析基本正确,最多给3分

2. 阅读以下递归函数,假设有如下定义:int a[6]={6,1,4,7,4,0};分析进行

printn(a)调用时程序运行过程;并写出该调用产生的运行结果。 #include void printn(int *x) { if(*x!=0) printn(x+1);

if(*x%2) printf(“%d,”,*x*2); else printf(“%d,”,*x); }

答案: 0,4,14,4,2,6

评分要点:给出答案6,2,4,,14,4,0给4分,如果结果完全不对,但是给出程序执行流程分析基本正确,最多给3分

五.

1.

子程序设计(每小题15分,共30分)

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

设计一个函数getnum(s,&n),字符串s是十六进制字符串,函数getnum统计s的字符个数并作为函数值返回,另外n返回s对应的十进制整数数据值。

例如,有如下定义, char s[]=”12a”;int n,m;

则有函数调用m=getnum(s,&n)后,m的值为3,n的值为298即等于1×162+2×16+10=298。 参考答案

#include

int getnum(char s[],int *m) { int n,sum=0; n=0;

while(s[n]!=’\\0’) { switch(s[n]) { case ‘0’:case ’1’:case ’2’:case ‘3’:case ’4’: case ‘5’:case ’6’:case ’7’:case ‘8’:case ’9’: sum=s*16+s[n]-‘0’;break;

case ‘a’:case ’b’:case ’c’:case ‘d’:case ’e’:case ’f’: sum=sum*16+s[i]-‘a’+10;break;

case ‘A’:case ’B’:case ’D’:case ‘C’:case ’E’:case ’F’: sum=sum*16+s[i]-‘A’+10;break; } n++;

}

*m=sum; return n; }

2.

评分要点:

1 计算s的长度并正确返回

2 将字符串s的内容转换为十进制整数的求解算法正确 注意语法错误最多扣2分,重点在于程序的思路正确

设计一个函数rightarr(a, m, n),a为一维整数数组(数组元素的个数为m),该函数实现数组a的循环左移n位。 例如:有如下定义,int a[5]={1,2,3,4,5};

则,rightarr(a,5,2)调用完成后,数组a的内容为{3,4,5,1,2}。 参考答案:

void rightarr(int a[],int m,int n) {

int x=0,y,t; while(x

t=a[0];

for(y=0;y

评分要点:

1 移位方向为左移

2 循环移位算法正确,重点注意a[0]移动正确

注意语法错误最多扣2分,重点在于程序的思路正确

六.

说明:

? ? ? ?

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

仅需任意选做一题。多选者,以卷面先列出的为判分依据;

分析思路、重要数据类型的定义、模块的功能、形式参数、函数返回值说明; 用伪代码或其它方法描述子程序;

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

2. 函数link(h,n), 其中h 是一个由整数组成的从小到大排列的有序单链

表,n为整数。函数link实现把n按照顺序插入到链表h中,函数返回值为完成插入n之后的有序链表中结点个数。 具体要求如下:

A)说明链表结点类型的C语言定义形式; B)给出函数link(h,n)的原型。 C)描述函数的算法。 参考答案:

评分要点:以算法可行,基本正确为主要评分指标 (1) 链表结点类型为结构类型

(2) 函数link(h,n)中参数h为二级指针,n为整型

(3) 插入算法:首先查找插入位置,然后完成插入操作(注意插入在链表

头部和非头部的区别。

3. 任意输入一个年、月、日,编程实现判断该日期是星期几。

具体要求如下:

D)说明如何表示一个日期数据,以及星期一到星期天; E)说明程序中划分多少模块?并给出每个模块的原型; F)描述每个模块的算法。 参考答案:

评分要点:以算法可行,基本正确为主要评分指标

(1) 日期可为结构类型或者整型,星期一到星期天可为枚举、字符串或者

整数等

(2) 算 法中主要功能:判断某年是否为闰年;给出一个基准日期的星期数

据为计算的初始数据;计算该天为多年第几天;计算星期几。

武汉大学计算机学院

2005-2006学年度第2学期2005级 《高级语言程序设计》期末考试试卷B卷

姓名: 学号: 专业:

说明:未经主考教师同意,考试试卷、答题纸、草稿纸均不得带离,否则视为违规。

答案请全部写在答题纸上,写在试卷上无效。

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

( )1. 下面四个选项中 D 是合法的标识符。 F. ‘t’

( )2.

E. -234.

( )3.

G. A#12

H. sum.5

I.

eve

下面四个选项中,不正确的浮点型常量为____B__ 。

F. .23E1.2

G. .84e+2

H. .174

若有以下类型说明语句: char a; int b; float c;

double d; 则

表达式a*b+d-c的运算结果的类型为_____C_ 。

E. char

( )4.

F. float

G. double

H. int

设有变量定义:int m=0,n=0;则执行表达式

(m--<0)&&(n++<0)后,m,n

的值为___A___ 。

E. -1和0

F. -1和1

G. 0和0

H. 0和1

( )5.

以下关于C语言中预处理的叙述中不正确的是 F. 预处理命令行必须位于源程序

始的控制行都是预处理命的开始部位。 令行。

H. 预处理 …… 此处隐藏:2342字,全部文档内容请下载后查看。喜欢就下载吧 ……

武汉大学计算机学院C语言历年试题1(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/403482.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)