三级数据库上机好题.doc_第1页
三级数据库上机好题.doc_第2页
三级数据库上机好题.doc_第3页
三级数据库上机好题.doc_第4页
三级数据库上机好题.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题目57:设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请考生编制函数Josegh()实现此功能并调用函数WriteDat()把结果p输出到文件OUT.DAT中。设n=100,s=1,m=10.(1)将1到n个人的序号存入一维数组p中;(2)若第i个人报数后出圈,则将pi置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;(3)重复第(2)步直至圈中只剩下p1为止。部分源程序已给出。-void Josegh(void) /*标准答案*/int I,j,k,s1,w;s1=s;for(I=1;I=2;I-)s1=(s1+m-1)%I;if (s1=0) s1=I;w=ps1-1;for(j=s1;j=I-1;j+) pj-1=pj;pI-1=w;题目64:下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数cnt以及这些I之和sum。请编写函数countvalue()实现程序要求,最后调用函数writeDat()把结果cnt和sum输出到文件out.dat中。 -类型:素数。void countValue() /*标准答案*/int I,count=0,xx30; int j,k,m; cnt=0; sum=0; for(I=1;I=90;I+) if(isPrime(I) xxcount=I;count+; for(I=0;Icount;I+) if (isPrime(xxI+4)&isPrime(xxI+10) cnt+;sum+=xxI;题目71:函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。例如:位置012345678源字符串a b c d h g f e 1 2 3 4 9 8 7 6 5则处理后字符串 d c b a e f g h 4 3 2 1 9 5 6 7 8类型:字符串左右排序和比较。注:要注意当要进行右半部分排序时,一定要判断原字符串个数是否为奇数,若是则要half加1,本题对右半部分采用选择法对其进行升序排序。void jsSort() /*标准答案*/int I,j,k,strl,half; char ch; for(I=0;I20;I+) strl=strlen(xxI); half=strl/2; for(j=0;jhalf-1;j+) for(k=j+1;khalf;k+) if (xxIjxxIk) ch=xxIj;xxIj=xxIk;xxIk=ch;if (strl%2) half+; for(j=half;jstrl-1;j+) for(k=j+1;kxxIk) ch=xxIj; xxIj=xxIk; xxIk=ch; 函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置012345678源字符串d c b a h g f e 4 3 2 1 9 8 7 6 5 则处理后字符串 h g f e a b c d 8 7 6 5 9 1 2 3 4 A b c d h g f e 1 2 3 4 9 8 7 6 5 void jsSort() int i,j,k,strl,half; char temp; for(i=0;i20;i+) strl=strlen(xxi); half=strl/2; for(j=0;jhalf-1;j+) for(k=j+1;kxxik) temp=xxij; xxij=xxik; xxik=temp; for(j=half-1,k=strl-1;j=0;j-,k-) temp=xxij; xxij=xxik; xxik=temp; 下列程序的功能是:将一正整数序列K1,K2,.,K9重新排列成一个新的序列。新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。要求编写函数jsValue()实现此功能,最后调用writeDat()函数将新序列输出到文件out.dat中。 说明:在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a109中,分别求出这10个新序列。 例:序列6,8,9,1,2,5,4,7,3 经重排后成为3,4,5,2,1,6,8,9,7 jsValue(int a109) int i,j,k,val,num; for(i=0;i10;i+) val=ai0; for(j=0;j9;j+) if(aij0;k-) aik=aik-1; ai0=num; 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOR( ),其函数的功能是:以行为单位依次把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文件OUT5.DAT中void StrOR(void)int i,righto,j,s,k; char tem80; for(i=0;i=0;j-) k=0; memset(tem,0,80);/初始化数组tem; if(xxij=o) righto=j; for(s=righto+1;sstrlen(xxi);s+) temk+=xxis; for(s=0;srighto;s+) if(xxis!=o) temk+=xxis; strcpy(xxi,tem); else continue; *书上答案*void StrOR(void) int i,j,k,index,strl; char ch; for(i=0;imaxline;i+) strl=strlen(xxi); index=strl; for(j=0;jstrl;j+)if(xxij=o) for(k=j;k=index;j-) ch=xxistrl-1; for(k=strl-1;k0;k-) xxik=xxik-1; xxi0=ch; 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT6.DAT中。 例如:原文:You He Me I am a student.结果:Me He You student a am I void StrOL(void) int i,j,k,s,m,strl; char str80; for(i=0;i=0;j-) if(isalpha(xxij) k+; else for(m=1;m=k;m+) strs+=xxij+m; k=0; if(!isalpha(xxij) strs+= ; for(m=1;m=k;m+) strs+=xxij+m;strs=0; strcpy(xxi,str); 函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS2.DAT中。替代关系:f(p)=p*13 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar() int i,j; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) if(xxij*13%256=32|(xxij*13%256)%2=0) continue; else xxij=xxij*13%256;题目35:某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1.下列程序的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn=M,这里Sn=A1+A2+.+An,并依次把n值存入数组单元b0,b1和b2中,请编制jsvalue()函数来实现此功能, 最后调用函数writeDat()把数组b中的值输出到out.dat文件中。void jsvalue() /*标准答案*/int a1=1,a2=1,n=1,an; int sum0,sum; sum0=a1+a2; while(1)an=a1+a2*2; sum=sum0+an; a1=a2; a2=an; n+; if (sum0100) b0=n; if (sum01000) b1=n; if (sum010000) b2=n; break; sum0=sum;jsvalue()int a1=1,a2=1,a12,sn,k=2;sn=a1+a2;while(1)a12=a1+2*a2;if(sn=100) b0=k;if(sn=1000) b1=k;if(sn=10000) b2=k;break;sn=sn+a12;a1=a2;a2=a12;k+;编写一个函数findStr(char *str,char *substr),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为asd asasdfg asd as zx67 asd mklo,子字符串为as,函数返回值是6。(表明了返回值是整数型) 函数ReadWrite()实现从文件in.dat中读取两个字符串,并调用函数findStr(),最后把结果输出到文件out.dat中。 int findStr(char *str,char *substr) int i,j,len1,len2,cnt=0,flag; len1=strlen(str); len2=strlen(substr); for(i=0;ilen1;i+) for(j=0;jlen2;j+) if(stri+j=substrj) flag=1; else flag=0;break; if(flag=1) cnt+; return cnt;int findStr(char *str,char *substr) int n; char *p , *r; n=0; while ( *str ) p=str; r=substr; while(*r) if(*r=*p) r+; p+; else break; if(*r=0)n+; str+; return n; 题目79:请编写函数void countvalue(int *a, int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数放在数组a中,并通过n返回这些数的个数。 -void countValue(int *a,int *n) /*标准答案*/int I;*n=0;for(I=1;I=1000;I+) if(I%7=0&I%11)*a=I;*n=*n+1;a+; else if(I%7&I%11=0) *a=I;*n=*n+1;a+;函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT6.DAT中。 例如:原文:You He Me I am a student.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论