ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:32.72KB ,
资源ID:7805505      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7805505.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言上机模拟试题共10卷.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c语言上机模拟试题共10卷.docx

1、c语言上机模拟试题共10卷试卷一、1. 填空题下列给定程序中,函数fun()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入Ab,cD,则输出ab,cd。试题程序:#include #include #include char 【1】fun(char tt) int i; for(i=0;tti;i+) if(tti=A)&(tti=【2】) tti+=32; return(tt);main() char tt81; printf(nPlease enter a string: ); gets(tt); printf(nThe result string is

2、: n%s,fun(【3】);1. 填空题【1】* 【2】Z 【3】tt【解析】填空1:由return语句可以看出,该函数的返回值类型是指向字符串的指针,所以应该使用符号*。填空2:从ASCII码表中可以看出,小写字母的ASCII码值比对应大写字母的ASCII码值大32,根据ASCII码值判断该字母是不是大写字母,判断的标准是ASCII码值是否介于A和Z之间。填空3:根据题目的意思这里应该调用函数fun对字符串tt进行转换,所以应该使用tt作为函数的参数。2. 改错题下列给定程序中,函数fun()的功能是逐个比较a,b两个字符串对应位置中的字符,把ASCII值小或相等的字符依次存放到c数组中,

3、形成一个新的字符串。例如:a中的字符串为fshADfg,b中的字符串为sdAEdi,则c中的字符串应为fdAADf。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include void fun(char *p,char *q,char *c) int k=0; while(*p|*q)/*found*/ if (*p=*q) ck=*q; else ck=*p; if(*p) p+; if(*q) q+ ;/*found*/ k+ main() char a10=fshADfg,b10=sdAEdi,c

4、80=0; fun(a,b,c); printf(The string a:); puts(a); printf(The string b:); puts(b); printf(The result :); puts(c);2. 改错题(1)错误: if (*p=*q)(2)错误:k+正确:k+;【解析】错误1:依题意,把ASCII值小或相等的字符存放到c数组中,故if语句的关系运算符应为=。错误2:C语言规定,每个语句要用分号结束。3 . 编程题请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十

5、位和个位数依次放在c数的百位和千位上。例如,当a=16,b=35,调用该函数后,c=5361。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#includevoid fun(int a ,int b,long *c)main() int a,b; long c; clrscr(); printf(Input a,b;); scanf(%d%d,&a, &b); fun(a,b,&c); printf(The result is:%ldn,c);3. 编程题void fun(int a ,int b,long *c

6、) *c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10; 【解析】语句*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;是将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。注意/和%的用法。试卷二、1. 填空题下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4

7、个元素求平均值。试题程序:#include #define SIZE 20fun (double *s,double *w) int k,i; double sum; for(k=2,i=0;iSIZE;i+) si=k;k+=2; sum=0.0; for(k=0,i=0;iSIZE;i+) sum+=si; if(i+1)【1】5=0) wk=sum/5; sum=0;k+; 【2】 k;main() double aSIZE,bSIZE/5; int I, k; k=fun(a,b); printf(The original data:n); for(i=0;iSIZE;i+) if(i

8、%5=0) printf(n); printf(%4.0f,ai); printf(nnThe result:n); for(i=0;ik;i+) printf(%6.2f,【3】); printf(nn);1填空题【1】% 【2】return 【3】bi【解析】填空1:根据题目的意思,这里是执行按顺序对每5个元素求一个平均值的操作,所以应该使用取余符号%,如果是5的倍数,则该式子的值为零。填空2:根据C语言的规定,除了使用关键字void的任何一个子函数都应该有返回值,所以应该使用关键字return把变量k的值返回主函数。填空3:由题目的意思可知这里是把存在数组b中的内容依次循环输出,所以后面

9、的变量名应该使用bi 。2. 改错题下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。y=1-1/(22)+1/(33)-1/(44)+例如:m中的值为5,则应输出是1-1/4+1/9-1/16+1/25=0.838611。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include double fun(int m) double y=1.0;/*found*/ int j=1; int I; for(i=2; i=m; i+) j=-1*j;/*found*/ y+=1/(I *

10、 i); return(y);main() int n=5; clrscr(); printf(nThe result is %lfn ,fun(n);2. 改错题(1)错误:int j=1; 正确:double j=1.0;(2)错误:y+=1/(i * i); 正确:y+=j/(i * i);【解析】错误1:为了做后面的除法运算,j要定义为实型数,否则除得的结果将为整数。错误2:题中公式是加减相间的运算,通过j来实现。3. 编程题请编一个函数void fun(int ttMN, int ppN), tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。

11、二维数组中的数已在主函数中给出。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #define M 3#define N 4void fun(int ttMN,int ppN)main() int tMN=68, 32, 54, 12,14, 24, 88, 58,42, 22, 44, 56; int pN,i,j,k; clrscr(); printf(The riginal data is:n); for(i=0;iM;i+) for(j=0;jN;j+) printf(%

12、6d,tij); printf(n); fun(t,p); printf(nThe result is:n); for(k=0;kN;k+) printf(%4d,pk); printf(n);3. 编程题void fun(int ttMN,int ppN) int I,j,max; for(j=0;jN;j+) max=tt0j; /*假设各列中的第一个元素最大*/ for(i=0;imax) /*如果各列中的其他元素比最大值还大, 则将这个更大的元素看作当前该列中最大的元素*/ max=ttij; ppj=max; /*将各列的最大值依次放入pp数组中*/ 试卷三、1. 填空题给定程序中,

13、函数fun的功能是:将形参n中各位上为偶数的数取出,按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。例如,从主函数输入一个整数27638496,函数返回值为26846。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include unsigned long fun(unsigned long n)unsigned long x=0,s,i;int t;s=n;i= 【1】;while( 【2】 )t=s%10;if(t%2=0)x=x+t*i; i= 【3】 ;s=s/10;return x;main()unsig

14、ned long n=-1;while(n99999999|n0)printf(input(0n0或s!=0或s 【3】i*10【解析】填空1:从x=x+t*I;语句,可以看到i是将t放到正确数位上的幂指数,相当于t*10n,空1给i赋初值,连乘的初值为1,因此应填入:1或1L。填空2:空2是考查对循环条件表达式的判断,由于是取s每一位上的数给t,判断是否为偶数,同时s除以10,显然s的值越来越小,当s不为零时,继续循环,因此应填入:s0或s!=0或s。填空3:空3是对i进行操作,由于随着循环的进行,所取出的数t的幂指数越来越大,每次增大10,因此应填入:i*10。2、改错题 给定程序中,函数

15、fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如,当字符串中的内容为“abcdabfabcdx”、t中的内容为“ab”时,输出结果应是abcdx。当字符串中的内容为“abcdabfabcdx”、t中的内容为“abd”时,则程序输出未找到信息not be found!。请改正程序中的错误,使其能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include #include char *fun(char *s,char *t)char *p,*r,*a;

16、/*found*/a=Null;while(*s) p=s;r=t; while(*r)/*found*/ if(r=p) r+;p+; else break; if(*r=0) a=s; s+;return a ;main()char s100,t100,*p;printf(nPlease enter string S :);scanf(%s,s);printf(nPlease enter substring t :);scanf(%s,t);p=fun(s,t);if(p) printf(nThe result is :%sn,p);else printf(nNot found !n);2

17、. 改错题(1)错误:a=Null; 正确:a=NULL;(2)错误:if(r=p) 正确:if(*r=*p)。【解析】错误1:二级C是区分大小写的,在仔细阅读程序后,发现Null是一个错误的标识符。给a指针赋空值,空值的宏定义符号是NULL,因此应该改为:a = NULL;错误2:按照语义是判断r和p指针是否相等,显然是错误的。因为本题是判断子串t是否在串s中出现,应该判定r和p所指内存中字符是否相同,因此应该改为if(*r=*p)。3. 编程题函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中

18、。例如,若s所指字符串中的内容为“ABCDEFG 123456”,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后,t所指的数组中的内容应是“246”。注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include #include void fun(char *s, char t)int i, j;for(i=j=0;istrlen(s) i+); if(i%

19、2)=0&(si%2)=0) tj+=si; tj=0;/*此处将0改成0也是一样的*/main()char s100,t100;printf(nPlease enter string S:);scanf(%s, s);fun(s,t);printf(nThe result is: %sn,t);3. 编程题(1)本题主要考查对奇偶数的判断以及库函数strlen的使用。根据题意可知,只保留下标为偶数、同时ASCII值也为偶数的字符,这就需要用循环变量k将字符串查看一遍,逐个字符判断是否满足条件k%2= 0 & sk%2=0,并将满足条件的字符复制到t中,再设一个计数器变量n,统计复制到t的字符

20、数。复制完毕,在串尾设字符串结束符0。(2)按上述解析写出的函数是:void fun(char *s,char t)int k,n=0;for(k=0;kstrlen(s);k+)if(k%2=0 & sk%2=0)tn+=sk;tn= 0;试卷四、1、填空题给定程序中,函数fun的功能是:找出NN矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include #define N 4void fun(int(*a)N,int *b)int i,j;for(i=

21、0; iN; i+) bi=【1】; for(j=1;jN;j+) if(bi 【2】 aji) bi= aji;main()int xNN=12,5,8,7,6,1,9,3, 1,2,3,4,2,8,4,3,yN,i,j;printf(nThe matrix :n);for(i=0;iN;i+) for(j=0; jN; j+) printf(%4d,xij); printf(n); fun( 【3】 );printf(nThe result is:);for(i=0; iN; i+) printf(%3d,yi);printf(n);1填空题【1】a0i 【2】 或 = 【3】x,y 【解

22、析】填空1:b是一维数组,存放NN矩阵中每列元素中的最大值,循环开始,第i列的bi应该首先赋值为每列的第一个元素a0i,再循环与本列其他元素比较,最后找出每列元素中的最大值。因此空1中应该填入:a0i。填空2:for(j=1;jN;j+)循环是要找出每列元素中的最大值,当biaji时,bi=aji;因此空2中应该填入: 或 =。填空3:空3是调用函数fun,由上下文可知,应该填入:x, y。2、改错题给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正程序中的错误,使其能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的

23、结构!#include voidfun(char *s)int i,j;for(i=0,j=0;si!=0;i+)if(si=0&si=0& si=9),含义是当si是数字时保留,形成新字符串,覆盖原来的字符串。j是新字符串的字符个数计数器,每次赋值应该加1,因此sj=si;应该改为sj+=si;。错误2:由于j是新字符串的字符个数计数器,这里是给新字符串输入一个结束符,应该是0而不是0,因此应该改为sj= 0;。3、编程题请编写函数fun,其功能是:比较两个字符串的长度,函数返回较长的字符串。若两个字符串长度相等,则返回第1个字符串(不得使用C语言提供的求字符串长度的函数)。例如,输入bei

24、jingshijiazhuang(为回车键),函数将返回shijiazhuang。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#includechar *fun(char *s,char *t) main()char a20,b10,*p,*q;int I;printf(Input 1th string: );gets(a);printf(Input 2th string: );gets(b);printf(%s,fun(a,b);3、编程题(1)本题主要考查for循环语句的概念。根据题意知,需要使用两个循环来实现,即第1个for循环的作用是求字符串s中字符的个数;第2个for循环的作用是求字符串t中字符的个数。然后进行比较即可。由于任何for循环都要控制一条语句,因此在每个for循环条件后面必须要加一个分号。(2)按上述解析写出的函数是:char *fun(char *s,char *t)int i,j;for(i=0;si!=0;i+);/*求字符串s的长度*/for(j=0;tj!=0;j+);/*求字符串t的长度*/if(i=j)re

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

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