武汉大学计算机学院C语言历年试题1(6)
三、 程序填空(请在空白处填写合适内容以完成整个程序,共10分)
1.以下程序的功能是:列出100到1000之间各位数字之和可以被3整除的数。
#include
void main() {
int i,s,k;
for(i=100;i<= ①1000 ;i++) {
s= ②0 ;
k= ③ i ;
while ( ④ k!=0或者k或者k>0或者k>=1 )
{ s=s+k;
k= ⑤ k/10 ; }
if (s%3==0)
printf(“m”,i); }
}
2. 下面程序的功能是:把一个字符串中的所有大写字母改变为小写字母,
而小写字母改成大写字母,其他字符不变。例如对字符串”Prolog10”操作后结果为”pROLOG10”。 #include
void convert( ⑥ char s[]或者char *s ) { int i=0;
while( ⑦ s[i]!=’\\0’或者*(s+i)!=’\\0’或者s[i]!=0或者*(s+i)!=0或者s[i]或者*(s+i) )
{ if( ⑧s[i]>=’A’&&s[i]<=’Z’ ) s[i]=s[i]+32; else
if( ⑨ s[i]>=’a’&&s[i]<=’z’ ) s[i]=s[i]-32;
⑩ i++或者++i或者i=i+1或者i+=1 ; }
void main() {
char s[20]; int i; gets(s); convert(s); puts(s); }
评分要点:注意s[i]和*(s+i)是完全等价的形式。
四、 程序阅读与分析(共10分)
3. 分析以下程序执行流程,并写出下列程序的运行结果。
#include
int fat(int n) { static int f=0; int x=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 2 -12 2
评分要点:给出上述6个正确结果,给满分5分
结果完全不对,但是给出程序执行流程分析基本正确,最多给3分
4. 阅读以下递归函数,假设有如下定义:int a[6]={6,1,4,7,4,0},分析进行
printn(a)调用时程序运行过程;并写出该调用结束后数组a的内容是多少? #include
答案:
该调用结束后数组a的内容是{8,3,6,9,6,0}
评分要点:如果结果完全不对,但是给出程序执行流程分析基本正确,最多给3分
五、
3.
子程序设计(每小题15分,共30分)
本题说明:完成函数设计时,请自行说明所有的形式参数的类型
设计一个函数tnum(s,n),函数tnum把十进制整数n转换为十六进制字符串,函数值为该十六进制字符串的长度,而转换后的十六进制字符串由s返回。
例如,有如下定义 char s[10]=,n=298,m;
则有函数调用m=tnum(s,n)后,m的值为3,s的为”12a”。 参考答案:
int tnum(char *s,int n) {
int k,m,i;
4.
char c; k=0;
while(n) {
m=n; n=n/16; switch(m) {
case 15: s[k]=’f’;break; case 14: s[k]=’e’;break; case 13: s[k]=’d’;break; case 12: s[k]=’c’;break; case 11: s[k]=’b’;break; case 10: s[k]=’a’;break; default:s[k]=m+’0’; } k++; }
s[k]=0;
for(i=0,m=k-1;i c=s[i]; s[i]=s[m]; s[m]=c; } return k; } 评分要点: 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的内容为{4,5,1,2,3}。 参考答案: void rightarr(int a[],int m,int n) { int x=0,y,t; while(x t=a[m-1]; for(y=m-1;y>0;y--) a[y]=a[y-1]; a[0]=t; x++; } } 评分要点: 1 移位方向为右移 2 循环移位算法正确,重点注意a[0]移动正确 注意语法错误最多扣2分,重点在于程序的思路正确 六、 说明: ? ? ? ? 算法设计(选做一题15分) 仅需任意选做一题。多选者,以卷面先列出的为判分依据; 分析思路、重要数据类型的定义、模块的功能、形式参数、函数返回值说明; 用伪代码或其它方法描述子程序; 不必完整写出函数程序的代码,完整代码将不作为判分依据。 4. 函数link(h,n), 其中h 是一个由整数组成的从小到大排列的有序单链 表,n为整数。函数link实现把n从链表h中删除,函数返回值为1表示删除成功,返回0表示删除失败。 具体要求如下: A)说明链表结点类型的C语言定义形式; B)给出函数link(h,n)的原型。 C)描述函数的算法。 参考答案: 评分要点:以算法可行,基本正确为主要评分指标 (4) 链表结点类型为结构类型 (5) 函数link(h,n)中参数h为二级指针,n为整型 (6) 删除算法:首先查找删除数据在链表中的位置,然后完成删除操作(注 意删除位置在链表头部和非头部的区别。 5. 任意输入一个年、月,编程输出该月月历。 具体要求如下: D)说明如何表示一个日期数据,以及星期一到星期天; E)说明程序中划分多少模块?并给出每个模块的原型; F)描述每个模块的算法。 参考答案: 评分要点:以算法可行,基本正确为主要评分指标 (3) 日期可为结构类型或者整型,星期一到星期天可为枚举、字符串或者 整数等 (4) 算 法中主要功能:判断某年是否为闰年;给出一个基准日期的星期数 据为计算的初始数据;计算当月1日为该年第几天以及是星期几;。输出该月日历。
相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




