四川省二级C语言31次机试试题.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
四川省二级C语言31次机试试题

(第一套) (60分钟) 一、程序调试题(文件名为test1-1.c) (40分) fun函数的功能是:检查字符串str1中是否包含有子串str2,如果有则返回其子串出现的次数,并记录每个子串出现的起始位置。 在main函数中从文件test1-1.dat中分别输入两个字符串str1和str2,调用fun函数,然后输出子串在母串中出现的次数,以及每个子串出现的起始位置。 例如:当str1为“the day the month the year”,str2“the”时,输出为:出现3次,起始位置分别是:0,8,18。 请改正程序中的错误,使它能得出正确结果。 注意:不得增行或删行,也不得更改程序结构。 源程序如下: #include stdio.h #include string.h #include stdlib.h #define N 80 void main() { char str1[N],str2[N]; int i,j,locat[10]; int fun(char *,char *,int *); FILE *fp; if((fp=fopen(test1-1.dat,r))=NULL) { printf(Cannot open the file.\n); exit(0); } fgets(str1,fp); fgets(str2,N-1,fp); printf(str1:%s\nstr2:%s\n,str1,str2); fclose(fp); fun(str1,str2,locat); printf(arisen times: %d\n,start place:,i); for(j=0;ji;j++) printf(%d, ,locat[j]); printf(\n); } int fun(char *p,char *q,int locat[]) { int len,i=0,posit=0; char *str; str=q; len=strlen(q); do { if(*p=*q) { p++; posit++; } else { while((*q!=\0)||(*q==*p)) { q++; p++; posit++; } if(*q==\0) { locat[i]=posit-len; i++; } } q=str; }while(*p!=\0); return i; } 二、编写程序(程序文件名命为test1-2.c)(60分) (1)编写函数fun,其功能是将所有满足如下条件的四位整数存放到形参数组a中: 将四位整数的千位和十位构成一个两位数s,将百位和个位构成另一个两位数t,注意,这里不考虑两位数十位为0的特殊情况,即不将01,02,03等视为两位数。如果s是t的5倍,则将此四位数存放到形参数组a中。 例如:对于整数6102,按照上述要求组成的两个两位数分别为60和12,而60=12*5,因此6102满足条件,将其存放到数组a中,存放到数组a中的整数的个数作为函数值返回。 (2)编写函数main,在main函数中调用fun函数,并将数组a中存放的整数按一行5个输出到屏幕上。 (第二套) (60分钟) 一、程序调试题(文件名为test2-1.c) (40分) 在main函数中,从文本文件test2-1.dat中读出N个长度为5的字符串,调用fun函数,判断字符串s是否为回文串,是返回1,不是则返回0。在main函数中输出是回文的字符串及其个数。 说明:回文串是指一个字符串正读反读都一样。例如:level是回文串。 请改正程序中的错误,使它能得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构。 源程序如下: #include stdio.h #include string.h #include stdlib.h #define N 5 int fun(char s) { int i,j; j=strlen(s); for(i=0,j--;ij;i++,j++) if(s[i]=s[j]) return 0; return 1; } void main( ) { char s[20]; FILE *fp; int i=0,j=0; if((*fp=fopen(test2-1.dat,r))==NULL) { printf(Cannot open the f

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档