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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

计算机二级C语言上机题库及答案解析.docx

1、计算机二级C语言上机题库及答案解析2013年计算机二级C语言上机题库及答案解析填空题给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#includevoid fun(char *s, char

2、 *p) int i, j, n, x, t;n=0;for(i=0; si!=0; i+) n+;for(i=1; i_1_;for(j=_2_+2 ; jif(stsj) t=j;if(t!=i) x=si; si=st; st=x; for(i=1,j=0; i/pj=_3_;main() char s80=baawrskjghzlicda, p50;printf(nThe original string is : %sn,s);fun(s,p);printf(nThe result is : %sn,p);解题思路:第一处:取外循环的控制变量,所以应填:t=i。第二处:内循环的起始变量

3、,应该是i+2,所以应填:i。第三处:新字符串处理完后应添加字符串结束符,所以应填:0。改错题给定程序MODI1.C中函数 fun 的功能是:用下面的公式求的近似值,直到最后一项的绝对值小于指定的数(参数num )为止: 1 1 11 - + - + .4 3 5 7例如, 程序运行后, 输入0.0001, 则程序输出3.1414。请改正程序中的错误,使它能输出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#includefloat fun ( float num ) int s ;float n, t, pi ;t = 1 ;

4、pi = 0 ; n = 1 ; s = 1 ;while(t = num)pi = pi + t ;n = n + 2 ;s = -s ;t = s % n ;pi = pi * 4 ;return pi ;main( ) float n1, n2 ;printf(Enter a float number: ) ;scanf(%f, &n1) ;n2 = fun(n1) ;printf(%6.4fn, n2) ;解题思路:第一处:要判断t的最后一项绝对小于指定的数,由于t是实数,那么应改为while(fabs(t)=num)。第二处:t是s除以n的值,而不是取余数,所以应改t=s/n;。编程

5、题请编写一个函数void fun (char a,char b,int n),其功能是:删除一个字符串中指定下标的字符。其中, a指向原字符串, 删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符串: World,然后输入3,则调用该函数后的结果为: Word。注意: 部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#define LEN 20void fun (char a, char b, int n) main( ) char str1

6、LEN, str2LEN ;int n ;printf(Enter the string:n) ;gets(str1) ;printf(Enter the position of the string deleted:) ;scanf(%d, &n) ;fun(str1, str2, n) ;printf(The new string is: %sn, str2) ;NONO() ;解题思路:本题是利用字符串拷贝和字符串连接来生成新的字符串。参考答案:void fun (char a, char b, int n)strncpy(b, a, n) ;bn = 0 ;strcat(b, a +

7、n + 1) ;填空题给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数, 存放在形参n所指的存储单元中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#define N 8typedef struct list int data;struct list *next; SLIST;SLIST *creatlist(int *a);void outlist(SLIST *);void fun( SLIST *h, int

8、 *n) SLIST *p;_1_=0;p=h-next;while(p) (*n)+;p=p-_2_;main() SLIST *head;int aN=12,87,45,32,91,16,20,48, num;head=creatlist(a); outlist(head);fun(_3_, &num);printf(nnumber=%dn,num);SLIST *creatlist(int a) SLIST *h,*p,*q; int i;h=p=(SLIST *)malloc(sizeof(SLIST);for(i=0; i q=(SLIST *)malloc(sizeof(SLIST

9、);q-data=ai; p-next=q; p=q;p-next=0;return h;void outlist(SLIST *h) SLIST *p;p=h-next;if (p=NULL) printf(The list is NULL!n);else printf(nHead );do printf(-%d,p-data); p=p-next; while(p!=NULL);printf(-Endn);解题思路:本题是要求统计出带有头结点的单向链表中结点的个数。第一处:对n所指的存储单元进行初始化,所以应填:*n。第二处:指向p的下一个结点,所以应填:next。第三处:函数调用,在主函

10、数中已经给出了head,所以应填:head。改错题给定程序MODI1.C中函数fun的功能是:求出s所指字符串中最后一次出现的t 所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串; 若未找到,则函数值为NULL。例如,当字符串中的内容为:abcdabfabcdx,t中的内容为:ab时,输出结果应是:abcdx。 当字符串中的内容为:abcdabfabcdx,t中的内容为:abd时, 则程序输出未找到信息:not be found!。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include#in

11、cludechar * fun (char *s, char *t )char *p , *r, *a;a = Null;while ( *s ) p = s; r = t;while ( *r )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,

12、 t );if ( p ) printf(nThe result is : %sn, p);else printf(nNot found !n );解题思路:第一处:指向空指针错误,Null应NULL。第二处:比较指针位置的值是否相等,所以应改为:if(*r=*p)。编程题函数fun的功能是: 将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为:ABCDEFG123456,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也

13、应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是:246。注意: 部分源程序存在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includevoid fun(char *s, char t)main() www.Examda.CoMchar s100, t100;printf(nPlease enter string S:); scanf(%s, s);fun(s, t);printf(nThe result is: %

14、sn, t);NONO();解题思路:本题是从一个字符串按要求生成另一个新的字符串。我们使用for循环语句来解决这个问题。参考答案:void fun(char *s, char t)int i, j = 0 ;for(i = 0 ; i strlen(s) ; i += 2)if(si % 2 = 0) tj+ = si ;tj = 0 ;填空题给定程序中,函数fun的功能是:在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。ss所指字符串数组中共有N个字符串,且串长小于M。程序中库函数strstr(s1, s2)的功能是在 s1串中查找s

15、2子串,若没有,函数值为0,若有,为非0。请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#define N 5#define M 15void fun(char (*ss)M, char *substr) int i,find=0;for(i=0; i _1_ ; i+)if( strstr(ssi, _2_) != NULL ) find=1; puts(ssi); printf(n); if (find=_3_) printf(nD

16、ont found!n);main() char xNM=BASIC,C langwage,Java,QBASIC,Access,strM;int i;printf(nThe original stringnn);for(i=0;iprintf(nEnter a string for search : ); gets(str);fun(x,str);解题思路:本题是根据给定的字符串数组中查找指定的字符串,如果存在,则显示。第一处:利用for循环,从几个字符串中进行查找,程序中已经给定了N个字符串,所以应填:N。第二处:查找子串,子串由形参substr传递,所以应填:substr。第三处:试题要

17、求,若没有找到,函数值为0,所以应填:0。改错题给定程序MODI1.C中函数fun的功能是:求三个数的最小公倍数。例如,给主函数中的变量x1、x2、x3分别输入15 11 2,则输出结果应当是:330。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#includefun(int x, y, z ) int j,t ,n ,m;j = 1 ;t=j%x;m=j%y ;n=j%z;while(t!=0|m!=0|n!=0) j = j+1;t=j%x;m=j%y;n=j%z;return i;main( ) int x1,x2

18、,x3,j ;printf(Input x1 x2 x3: ); scanf(%d%d%d,&x1,&x2,&x3);printf(x1=%d, x2=%d, x3=%d n,x1,x2,x3);j=fun(x1,x2,x3);printf(The minimal common multiple is : %dn,j);解题思路:第一处: 函数中形参的定义不正确,应改为:fun(int x,int y, int z)。第二处: 程序中三个数的最小公倍数是用j处理的,所以应返回j的值。编程题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之

19、间的*号都不删除。形参n给出了字符串的长度, 形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:A*BC*DEF*G。注意: 部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoid fun( char *a, int n,int h,int e )main() char s81,*t,*f; int m=0, tn=0, fn=0;pri

20、ntf(Enter a string:n);gets(s);t=f=s;while(*t)t+;m+;t-;while(*t=*)t-;tn+;while(*f=*)f+;fn+;fun( s , m,fn,tn );printf(The string after deleted:n);puts(s);NONO();解题思路:本题是考察对字符串的操作。1. 求出字符串的长度。2. 利用循环把字符串中字符按要求仍存放在原字符串首址开始的位置上。参考答案:void fun( char *a, int n,int h,int e )char *p=a ;int j=0,len=0;while(*p)

21、 p+; len+;while(jaj=ah+j;j+;aj=0;填空题给定程序中,函数fun的功能是建立一个NN的矩阵。 矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,依次类推。例如,若N=5,生成的矩阵为:1 1 1 1 11 2 2 2 11 2 3 2 11 2 2 2 11 1 1 1 1请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#define N 7void fun(int (*a

22、) _1_) int i,j,k,m;if(N%2=0) m=N/2 ;else m=N/2+1;for(i=0; ifor(j= _2_ ; jaij=aN-i-1j=i+1;for(k=i+1; kaki=akN-i-1= _3_;main() int xNN=0,i,j;fun(x);printf(nThe result is:n);for(i=0; i for(j=0; jprintf(n);解题思路:第一处:建立一个NN的矩阵,所以应填:N。第二处:j的起始变量值应i。第三处:也应该填写i+1。改错题给定程序MODI1.C中函数 fun 的功能是: 将十进制正整数m转换成k(2k9)

23、 进制数, 并按高位到低位顺序输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。请改正 fun 函数中的错误,使它能得出正确的结果。注意:不要改动 main 函数。不得增行或删行,也不得更改程序的结构!给定源程序:#include#includevoid fun( int m, int k )int aa20, i;for( i = 0; m; i+ )aai = m/k;m /= k; for( ; i; i- )printf( %d, aa i );main()int b, n;printf( nPlease enter a number and a b

24、ase:n );scanf( %d %d, &n, &b );fun( n, b );printf(n);解题思路:第一处:应该取模而不是整除,所以应为:aai=m%k;。第二处:输出aa的位置不正确,所以应为:printf(%d,aai-1);。编程题编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意: 主函数中用*作为结束输入的标志,函数fun中给出的语句仅供参考。)注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includefun

25、(char(*a)81,int num,char *max)int i,k=0,len, maxlen; /* k为a数组中最长串所在元素的下标,初始为0,maxlen为其串长 */ maxlen=strlen(ak);for(i=1;inum;i+)/num;i+)/* 以下完成查找最长串 */*max=ak;main()char ss1081,*ps;int n,i=0;printf(输入若干个字符串:);gets(ssi);puts(ssi);while(!strcmp(ssi,*)=0)i+;gets(ssi);puts(ssi);n=i;fun(ss,n,&ps);printf(nmax=%sn,ps);NONO();解题思路:本题是考察考生怎样从已输入的字符串中找出长度最大的字符串。求字符串的长度可以使用strlen函数。参考答案:fun(char(*a)81,int num,char *max)int i,k=0,maxlen; /* k为a数组中最长串所在元素的下标,初始为0,maxlen为其串长 */

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

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