




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
真题1】 函数fun 的功能是进行数字字符转换。若形参ch 中是数字字符09,则0转换成9,1转换成8,2转换成7,9转换成0;若是其它字符则保持不变;并将转换后的结果作为函数值返回。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存在考生文件夹下的BLANK1.C 中。不得增行或删行,也不得更改程序的结构!#include /*found*/_【1】_ fun(char ch)/*found*/if (ch=0 & _【2】_)/*found*/return 9 - (ch - _【3】_ );return ch;main() char c1, c2;printf(nThe result :n);c1=2; c2 = fun(c1);printf(c1=%c c2=%cn, c1, c2);c1=8; c2 = fun(c1);printf(c1=%c c2=%cn, c1, c2);c1=a; c2 = fun(c1);printf(c1=%c c2=%cn, c1, c2);解析: 由主函数中的语句c2=fun(c1);可知:函数fun 的返回类型为字符,故第一个空应填char;在题面中要求对数字字符进行转换,故第二空的目的是判断字符ch 是否为一数字字符,即ch 是否在09之间所以第二个空应填ch=9或其等效形式;第三空处语句的目的是返回转换后的结果,即返回一字符,其所对应的数字与转换前字符所对应的数字的和为9,故第三空应填0或其等效形式。答案:【1】char 【2】ch=9 【3】0【真题2】 给定程序modi.c 中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为au,则将其转换为其后的第5 个字母;若小写字母为vz,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。 请改正函数fun 中指定部位的错误,使它能得出正确的结果。 注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构!#include #include char fun(char c) if(c=A & c=a & c=v & c=z)c=c-21;return c;main() char c1, c2;printf(nEnter a letter(A-Z): ); c1=getchar();if(isupper(c1) c2=fun(c1);printf(nnThe letter %c change to %cn, c1,c2);else printf(nEnter (A-Z)!n);(2011年2月)解析: 本题着重考察考生对C 语言中一些简单算法的掌握情况。提示思路:先判断输入的字母是否是大写字母,若是大写字母,将其转化为相应的小写字母,方法是该大写字母对应的ASCII码值加上32就是其小写字母的ASCII码值,再判断该小写字母是否是au,若是转化其后的第5 个字母,即c=c+5;。若该小写字母是vz,则将其ACSII码值减去21,转换后的小写字母作为函数值返回。本题中的第一个错误:C 语言中,大写字母的ASCII码值比相应的小写字母的ASCII码值小32,所以程序中语句c=c-32;应改为c=c+32;或相同作用的语句。本题中的第二个错误:C 语言中,字母从az 或AZ 的ASCII码值是依次递增的,所以将其转换为其后的第5 个字母应该是c=c+5;或相同作用的语句。【真题3】 请编写一个函数fun(char *s),函数的功能是把字符串中所有的字母改写在该字母的下一个字母,最后一个字母z 改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他的字符不变。 例如,原有的字符串为:Mn.123xyZ,则调用该函数后,串中的内容为:No.123yzA。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。#include #include #include #include #define N 81fun(char *s)main() char aN;clrscr();printf(Enter a string:);gets(a);printf(The original string is :);puts(a);fun(a);printf(The string after modified: );puts(a);(2011年2月)解析: 本题的考核点是c语言中的循环语句和条件判断语句的使用。 提示思路:从本题的要求来看,我们应该采用外循环内条件判断的算法。本参考函数使用for 循环从头到尾扫描字符串,并在扫描时进行条件判断,对z,Z和其它字符进行不同的处理。fun (char *s) int i, length;length = strlen(s);/*求得字符串s 的长度*/for(i = 0; i=a & si=A &si=Z)/*判断字符si是否为大小写的英文字母*/continue;switch(si)case z:/*假如si为小写字母z,则改写成小写字母a*/si = a; break;case Z:/*假如si为大写字母Z,则改写成大写字母A*/si = A; break;default:/*假如si为除大小写字母Z 和z 以外字母,则直接改写成该字母的下一个字母*/si = si + 1; break; 真题1】 给定程序的功能是将大写字母转换为对应小写字母之后的第五个字母;若小写字母为vz,使小写字母的值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。#include #include char fun(char c) if( c =A & c=a & c=v & c=z)c=c-21;/*found*/return _【2】_ ;main() char c1,c2;printf(nEnter a letter(A-Z):); c1=getchar();if(isupper(c1) /*found*/c2=fun(_【3】_);printf(nnThe letter %c change to %cn,c1,c2);else printf(nEnter (A-Z)!n);解析: 本题着重考察考生对C 语言中一些简单算法的掌握情况。先判断输入的字母是否是大写字母,若是大写字母,将其转化为相应的小写字母,方法是该大写字母对应的ASCII码值加上32就是其小写字母的ASCII码值,再判断该小写字母是否是au,若是转化为其后的第5 个字母。若该小写字母是vz,则将其ACSII码值减去21,转换后的小写字母作为函数值返回。题中第一个空填5:C 语言中,字母从az 或AZ 的ASCII码值是依次递增的,所以将其转换为其后的第5 个字母应该是c=c+5;或相同作用的语句。题中第二个空填c:通过return 语句将被调用函数中c 的值带回主调函数中去。题中第三个空填c1:此句是调用fun()函数,括弧中是其实际参数。答案:【1】5 【2】c 【3】c1 疑难解答 【真题2】 给定程序modi.c 中,函数fun 的功能是:求k!(k13),所求阶乘的值 作为函数值返回。例如:若k=10,则应输出:3628800。 请改正程序中的错误, 使它能得出正确的结果。 注意:不要改动main函数,#include #include long fun(int k) /*found*/ if k 0 return (k*fun(k-1); /*found*/ else if (k=0) return 1L; main() int k=10; clrscr(); printf(%d!=%ldn, k, fun(k); 解析: 本题的考核点是C语言的一些基本常识和if语句的使用。C 语言提供了三种形式的if语句:1.if(表达式) 语句2.if(表达式) 语句1 else 语句2 3.if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 : else if(表达式m) 语句m else 语句n所以,综上所述if k0 应改为if (k0)或相同作用的语句。C 语言中=表示赋值,而=才表示等于,由题意看出,else if (k=0) 应为else if (k=0) 或相同作用的语句。 【真题3】 请编写函数fun,函数的功能是:在字符串中的所有数字字符前加一个$字符。 例如,输入A1B23CD45,则输出为:A$1B$2$3CD$4$5。 注意:部分源 程序存在文件prog.c 中。 请勿改动主函数main和其他函数中的任何内容,仅在函 数fun 的花括号中填入你编写的若干语句。#include void fun(char *s) main() char s80; printf(Enter a string:); scanf(%s, s); fun(s); printf(The result:%sn, s); (2011年2月) 解析: 本题的考核点是在字符串中的数字之前加一$字符的算法。 提示思路: 通过一中间数组和一循环来实现。方法是:从字符串的首字符开始,判断字符 是否为数字,若是,将字符$和数字字符赋给中间数组,反之,将字符直接赋给 中间数组,直至字符串尾,最后将中间数组赋给原字符串。void fun(char *s) char p80; int i=0,j=0; while (si!=0) /*假如si不为字符串结束符,则继续循环*/ if (si=0) & (si=9) pj=$;pj+1=si;j=j+2; /*假如si为数字字符,则将$置于pj中,数字字符置于pj+1中*/else pj=si;j=j+1;/*否则将si置于pj中*/i+; pj=0; strcpy(s,p);/* 将p 数组中的字符复制到s 数组中*/ 【真题1】 下列给定程序中,函数fun()的功能是:用递归算法计算斐波拉契级数列中第n 项的值。从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,例如,若给n 输入7,该项的斐波拉契级数值为13。#include long fun(int g) switch(g)case 0: return 0;case 1: _【1】_: return 1;return (_【2】_);main() long fib; int n;printf(Input n:); scanf(%d,_【3】_);printf(n=%dn,n);fib=fun(n);printf(fib=%dnn, fib);(2011年2月)解析: 填空1:根据题目的意思,这里应该是对于值为1 和2 的时候的处理,注意case语句常量后应用的是冒号,而且不同的case对应同一个值可以连续写(像题目中那样)。填空2:根据题目的意思,此处是求值的递归部分,由递推公式可以很容易的得到答案的形式,对于这种简单的递归考生一定要掌握。填空3:由算法可以看出,此处是输入数列的项数n,使用了scanf函数,其参数应该是变量的地址,即使用符号& 。答案:【1】case 2 【2】fun(g-1)+fun(g-2) 【3】&n【真题2】 给定程序modi.c 中,函数fun 的功能是:按以下递归公式求函数值fun(n)=10 (n=1),fun(n)=fun(n-1)+2 (n1) 例如,当给n 输入5 时,函数值为18;当给n 输入3 时,函数值为14。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main 函数。#include fun(n) int c;/*found*/if (n=1)c=10;elsec=fun(n-1)+2;return(c);main() int n;printf(Enter n:); scanf(%d,&n);printf(The result:%dnn, fun(n);解析: 本题着重考察考生对递归算法的掌握情况。在C 语言中,=是指赋值号,要判断表达式相等,需用=,所以程序中的语句if (n=1)应改为if (n=1)或相同作用的语句。【真题3】 规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串最前面连续的*号不得多于n个;若多于n 个,则删除多余的*号;若少于或等于n 个,则什么也不做,字符串中间和尾部的*号不删除。例如,字符串中的内容为:*A*BC*DEF*G*,若n 的值为4,删除后,字符串中的内容应当是:*A*BC*DEF*G*;若n 的值为8,则字符串中的内容仍为:*A*BC*DEF*G*。n 的值在主函数中输入。在编写函数时,不得使用C 语言提供的字符串函数。 注意:部分源程序存在文件prog.c 中。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include void fun(char *a, int n)main() char s81;int n;printf(Enter a string:n); gets(s);printf(Enter n:); scanf(%d,&n);fun(s,n);printf(The string after deleted:n); puts(s);(2011年2月)解析: 本题的考核点是删除字符串中字符的算法。 解题思路:先统计字符串前连续的*号个数,与指定的个数进行判断,若小于等于指定的数,什么也不做,若大于指定的数,则删除多余的*,删除的方法是:用一个循环先生成指定个数个*放入到一字符串中,再将从原串中非*字符开始至字符串尾的字符追加其后,最后用新串覆盖原串。 本评析仅供参考。void fun(char *a,int n) char b81;int i=0, j=0, s=0, k;while (ai=*) s+;i+; /*统计字符串前连续的*号个数*/if (sn) /*判断字符串前连续的*号个数是否大于n*/ for (k=0; kn; k+)bj=*; j+;while (ai) /*这里的i 在前面*时已经移不是*字符的位置*/bj=ai; j+; i+;bj=0; i=0; j=0;while (bj) /*将字符串b 中的所有字符复制到a 字符串中覆盖原串*/ai=bj; i+; j+;ai=0; 【真题1】 下列给定程序中,函数fun()的功能是:应用递归算法求某数a 的平方根。求平方根的迭代公式如下:x1=(x0+a/x0)/2) 。例如,2 的平方根为1.414214。#include #include _【1】_ fun(double a, double x0) double x1, y;_【2】_;if(fabs(x1-x0)=0.00001)_【3】_;else y=x1;return y;main() double x;printf(Enter x:); scanf(%lf,&x);printf(The square root of %lf is %1fn, x,fun(x,1.0);(2011年2月)解析: 填空1:这里要问的是函数的类型,由主函数main()对函数的调用可以得到函数的类型是double型的,当然也可以由函数的返回值语句得到。填空2:我们看到在下一条语句中已经开始对变量x1 的值进行比较了,所以这里要对x1 进行赋值,由题意可知x1=(x0+a/x0)/2.0。填空3:用C 语言求平方根的方法一般有两种经典的算法,它们分别是迭代法和递归法,本题要求用递归法。该程序采用了if语句,程序的含义是当迭代结果差小于误差时进行循环。答案:【1】double 【2】x1=(x0+a/x0)/2.0 【3】y=fun(a,x1)【真题2】 给定程序modi.c 中,函数fun 的功能是:判断字符ch 是否与str 字符串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main 函数,#include #include #include /*found*/void fun(char str,char ch) while (*str & *str!=ch) str+;/*found*/if (*str=ch) str0=ch;/*found*/str1=0;main() char s81, c;clrscr();printf(nPlease enter a string:n); gets(s);printf(n Please enter the character to search:);c=getchar();fun(s,c);printf(nThe result is %sn,s);(2011年2月)解析: 本题着重考察考生对C 语言中函数形式参数的用法以及一些简单算法的掌握情况。从主函数中可以看出,str 是一个字符串,因此在fun 函数的参数表中应将str改为字符指针或字符数组,即把void fun(char str, char ch )语句改为void fun(char *str, char ch )或相同作用的语句。从题义得知,若字符ch 与字符串str 中的某个字符相同,什么也不做;若不同,则插在str 的最后。因此fun函数中先设置了一个循环从字符串str 中寻找字符ch,如果找到则中断循环并保留字符ch的地址,否则一直循环到串尾。因此通过判断*str 的内容即可判断是否已找到字符ch,而原程序中的if (*str= ch )语句与题义相反,应改为 if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美术艺考签约班合同范本
- 用工合同保险协议书范本
- 生物柴油厂采购合同范本
- 物业务工合同协议书范本
- 项目投标工程协议书样本
- 电商开店学员合同协议书
- 物业服务协议终止协议书
- 汽车租赁合同解除协议书
- 高空作业安全协议合同书
- 门面转让合同协议书样本
- GB/T 26081-2022排水工程用球墨铸铁管、管件和附件
- GB/T 35700.2-2017船舶机械和电力混合推进系统要求第2部分:发电系统
- GB/T 15738-2008导电和抗静电纤维增强塑料电阻率试验方法
- 静脉输液(最终版)
- DB63-T 949-2020锅炉安全使用管理规范
- 控制计划CP模板
- 银行不良贷款责任认定及问责管理工作实施细则
- 科技工作管理办法
- 北师大版八年级数学上册单元测试题附答案全套
- 出生缺陷定义及分类和预防要求
- 乌鸡散-圣济总录卷八-方剂加减变化汇总
评论
0/150
提交评论