




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二C机试新题1一填空题101. 给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。例如,有9个正整数:1 5 7 23 87 5 8 21 45按升序排列时的中间数为:8处理后主函数中输出的数列为:8 8 8 23 87 8 8 21 45请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include #define N 9int fun(int x) int i,j,k,t,mid,bN;for(i=0;iN;i+) bi=xi;for(i=0;i=N/2;i+) k=i;for(j=i+1;jbj) k=j;if(k != i ) /*found*/t=bi; bi=_1_; bk=t;/*found*/mid=b_2_;for(i=0; iN; i+)/*found*/if(xi _3_ mid) xi=mid;return mid;main() int i, xN=1,5,7,23,87,5,8,21,45;for(i=0; iN; i+) printf(%d ,xi);printf(nThe mid data is: %dn,fun(x);for(i=0; iN; i+) printf(%d ,xi);printf(n);本题的考查点选择排序算法。在fun函数中,首先将数组x的元素依次放入数组b中,接着用选择排序法对b中的元素进行从小到大排序。先将N个正整数中最小的一个与b0交换,再从b1到bN-1这N-1个正整数中选择最小的一个与b1进行交换,依次类推,这样就可以对bN中N个正整数从小到大排序。对于第一空,是将第k个元素与第i个元素进行交换,所以填bk或其等效形式;然后将已排序的数组bN中的中间数bN/2赋给mid,所以第二空填:N/2或其等效形式;再将原数组xN中所有元素依次跟mid进行比较,若比mid小的则用mid替换,所以第三空填:。104. 围绕山顶一圈有N个山洞,编号为0、1、2、3、N-1,有一只狐狸和一只兔子在洞中居住。狐狸总想找到兔子并吃掉它,它的寻找方法是先到第一个洞(即编号为0的洞)中找;再隔1个洞,即到编号为2的个洞中找;再隔2个洞,即到编号为5的洞中找;下次再隔3个洞;即到编号为9的洞中找;。若狐狸找一圈,请为兔子指出所有不安全的洞号。程序中用a数组元素模拟一个洞,数组元素的下标即为洞号,数组元素中的值为0时,表示该洞安全,为1时表示该洞不安全。若形参n的值为30时,不安全的洞号是0、2、5、9、14、20、27。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include #define N 100 void fun( int *a , int n ) int i, t;for( i=0; in; i+ )/*found*/ai=_1_;i=0; /*found*/_2_=1;while( in ) ai= 1;t+;/*found*/i=_3_;main() int aN, i, n=30;fun( a, n);for(i=0; in; i+)if( ai=1 ) printf(不安全的洞号是 : %dn,i );本题的考查点是一维数组。程序中首先用一个for循环语句对数组a中的元素进行初始化。数组a的元素应该初始化为0,所以第一空填0;结合程序可知,变量t参与了算术运算,但未赋初始值,所以_2_=1;应该对t进行初始化,因此第二空填t;while循环语句是用来设置不安全洞号的,并将不安全洞号所对应的数组元素的值设置为1。在while循环体中,通过i+t值可以求出下一个不安全洞号,所以第三空填i+t或t+i。二C机试新题2二改错题88.给定程序modi.c中函数fun的功能是:删除p所指字符串中的所有空白字符(包括制表符、回车符及换行符)。输入字符串时用#结束输入。请改正程序中的错误,使它能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include #include #include fun(char *p) int i,t;char c80;/*found*/For (i=0,t=0;pi;i+)if(!isspace(*(p+i) ct+=pi;/*found*/ct=0;strcpy(p,c);main()char c,s80;int i=0;printf(Input a string:);c=getchar();while(c!=#)si=c;i+;c=getchar();si=0;fun(s);puts(s);本题着重考察考生对C语言中的语法以及一些简单算法的掌握情况。C语言中,大写字母和小写字母被认为是两个不同的字符,关键字用小写母表示,所以源程序中For (i=0,t=0;pi;i+)是错误的,For应为小写,程序应改为for (i=0,t=0;pi;i+)或相同作用的语句。C语言中,一对双引号括起来的字符序列表示字符串常量,一对单引号括起来的表示字符常量。转义字符0作为字符串常量的结束标志。源程序ct=0;是错误的,应改为ct=0;。本评析仅作参考。93.给定程序modi.c中函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给num1和num2分别输入49和21,则输出的最大公约数为7;若给num1和num2分别输入27和81,则输出的最大公约数为27。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。#include int fun(int a,int b)int r,t;if(ab)/*found*/a=t;b=a;t=a;r=a%b;while(r!=0)a=b;b=r;r=a%b;/*found*/return(a);main()int num1,num2,a;printf(Input num1 num2: );scanf(%d%d,&num1,&num2);printf(num1=%d num2=%dnn,num1,num2);a=fun(num1,num2);printf(The maximun common divisor is %dnn,a);本题考查的是最大公约数的求法。最大公约数和最小公倍数用辗转相除的方法:用两数中较大数除以较小数,若不能整除,则以除数作为被除数,余数作为除数,继续相除,直到余数为0时,当前除数就是最大公约数。而原来两个数的积除以最大公约数的商就是最小公倍数。本题首先通过if语句实现a中存放较大值,b中存放较小值,即当ab时,通过中间变量t进行两数交换,交时应先将a、b中的其中一个数存放到变量t中,比如将变量a的值赋给t,则再将变量b的值赋给a,最后将变量t赋给b,这样,a、b两数就实现了交换,所以a=t;b=a;t=a;应改为t=a;a=b;b=t;或改为与其相同作用的语句。由于最大公约数为当前除数的值,且程序中用a表示被除数,b表示除数,r表示余数,所以最终应返回b的值,即return(a);应改为return(b);或改为与其相同作用的语句。本评析仅作参考。96.给定程序MODI1.C中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的单词是指由空格隔开的字符串)。例如,若输入I am a student to take the examination.,则应输出 I aM A studenT tO takE thE examination.。请修改程序中的错误之处,使它能得出正确的结果。注意:不要改动main函数,不得删行,也不得更改程序的结构!#include #include #include void fun( char *p )int k = 0;for( ; *p; p+ )if( k )/*found*/if( p = )k = 0;/*found*/* (p-1) = toupper( *( p - 1 ) )elsek = 1;main()char chrstr64;int d ;printf( nPlease enter an English sentence within 63 letters: );gets(chrstr);d=strlen(chrstr) ;chrstrd = ;chrstrd+1 = 0 ;printf(nnBefore changing:n %s, chrstr);fun(chrstr);printf(nAfter changing:n %s, chrstr);本题主要考查了通过指针对字符串的操作。这里是判断是否到了一个单词的最后一个字母,所以条件表达式应该是判断指针p所指向的存储单元的内容是不是空字符,因此,这里应该修改为if(*p= )。C语言中,分号是语句的组成部分,各语句间以分号作为分隔。源程序*(p-1)=toupper(*(p-1)应改为*(p-1)=toupper(*(p-1);。本评析仅供参考。102.给定程序MODI1.C中,函数fun的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。处理后原数列中首尾2个数不变。处理后数列在主函数中输出。例如,有10个正整数如下:请改正程序中指定部位的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include #define N 10int findmid(int a, int b, int c) int t;t = (ab)?(bc?b:(ac?c:a):(ac)?a:(bc)?c:b);/*found*/return b;void fun(int x) int i,a,b,c,tN;/*found*/for(i=0;iN;i+) ti=xifor(i=0;iN-2;i+) a=ti;b=ti+1;c=ti+2;/*found*/ti+1=findmid(a,b,c);main() int i, xN=6,5,7,23,18,5,8,21,45,38;for(i=0; iN; i+) printf(%d ,xi);printf(n);fun(x);for(i=0; iN; i+) printf(%d ,xi);printf(n);本题的考查点是条件表达式和一维数组的应用。第一处错误:findmid函数是利用条件表达式求出3个数的中间数,并赋给t,函数的返回值应为t。所以return b;应改为return t;。第二处错误:C语言语句后面应有一个;标识语句的结束,所以for(i=0;iN;i+) ti=xi应改为for(i=0;iN;i+) ti=xi;。第三处错误:根据题目要求,中间值替换的是该数组对应的原三个数中的中间位置的数,所以ti+1=findmid(a,b,c);应改为xi+1=findmid(a,b,c);或其等效形式。104. 给定程序MODI1.C中规定输入的字符串全部为字母,fun函数的功能是:统计a所指字符串中每个字母在字符串中出现的次数(统计时不区分大小写),并将出现次数最高的字母输出(如果有多个相同,输出一个即可)。例如对于字符串:dadbcdbabdb,对应的输出应为:b或d。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。#include#include #include void fun(char a) int b26, i, n,max;for (i=0; i26; i+)/*found*/ai = 0;n= strlen(a);for (i=0; i=a & ai=A & ai=Z)bai -A+;max = 0;for (i=1; i bi)max=i;printf(出现次数最多的字符是 : %cn, max + a);main(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 组织结构设计与岗位分类
- 工程管理背景知识试题及答案
- 工程经济理论巧用试题及答案
- 经济师考试常用公式试题及答案
- 如何评估项目投资风险试题及答案
- 冒险岛家族办公室设计
- 银行业务风险防控手册
- 酒店客房部服务质量手册
- 网络营销推广与广告投放协议
- 行政管理经济法概论考试记忆法与试题及答案
- 2025年底帮安全鞋项目可行性研究报告
- 《桃花源记》比较阅读91篇(历年中考语文文言文阅读试题汇编)(含答案与翻译)(截至2022年)
- 滩涂植被恢复策略-深度研究
- 国开2024年秋《心理健康教育》形考任务1-9
- 病种成本管理案例分享
- 网络施工服务合同范例
- 医院信息化建设与运维知识考核试卷
- 部编版五年级语文下册第二单元综合训练附答案
- 节约集约建设用地标准 DG-TJ08-2422-2023
- 危险化学品目录(2024版)
- 精密测量技术
评论
0/150
提交评论