[IT认证]三级上机练习册.doc

上传人:sccc 文档编号:4648627 上传时间:2023-05-03 格式:DOC 页数:59 大小:357KB
返回 下载 相关 举报
[IT认证]三级上机练习册.doc_第1页
第1页 / 共59页
[IT认证]三级上机练习册.doc_第2页
第2页 / 共59页
[IT认证]三级上机练习册.doc_第3页
第3页 / 共59页
[IT认证]三级上机练习册.doc_第4页
第4页 / 共59页
[IT认证]三级上机练习册.doc_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《[IT认证]三级上机练习册.doc》由会员分享,可在线阅读,更多相关《[IT认证]三级上机练习册.doc(59页珍藏版)》请在三一办公上搜索。

1、泽天经典教材-三级C语言上机题及标准答案第1套【试题要求】程序prog1.c的功能是:计算500-800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,计算其间隔减、加之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数的值sum。请编写countValue( )实现程序的要求,最后main()函数调用函数writeDAT( )把结果cnt和sum,输出到文件out.dat中。注意:部分源程序存放在文件prog1.c中请勿改动主函数main()和输出数据函数writeDAT的内容 【标准答案】void countValue()int n,i;for(n=800;n=500

2、;n-)for(i=2;in-1) cnt+;if(cnt%2!=0) sum=sum+n; else sum=sum-n;第2套【试题要求】程序prog1.c的功能是:计算出自然数six和nine满足条件six+six+six=nine+nine的个数cnt,以及满足条件所有的six与nine的和sum。请编写函数countValue( )实现程序的要求,最后main( )函数调用函数writeDAT( )把结果cnt和sum,输出到文件out.dat中。其中的s,I,x,n,e各代表一个十进制数字,允许代表的数字相同,但s和n不能为0。例如:944+944+944=1416+1416注意:

3、部分源程序存放在文件prog1.c中请勿改动主函数main()和输出数据函数writeDAT的内容 【标准答案】void countValue()int six,nine;int m,n,p,q;for(six=100;six=1000&nine=9999&3*six=2*nine) sum=sum+six+nine;cnt+;第3套【试题要求】请编写函数void countValue(int *a,int *n),它的功能是:求出1到1000之间能被7或11整除但不能同时被7和11整除的所有整数,其结果按从小到大的顺序放在数组a中,并通过形式参数n传递这些数的个数。注意:部分源程序存放在文件

4、prog1.c中请勿改动主函数main()和输出数据函数writeDAT的内容 【标准答案】void countValue(int *a, int *n)int m,cnt=0;for(m=1;m1000;m+)if(m%7=0|m%11=0)&m%77!=0) acnt=m;cnt+;*n=cnt;第4套【试题要求】已知数据文件in.dat中存有300个四位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsValue( ),其功能是:求出千位数上的数加百位数上数等于十位数上的数加个位数上的数的个数cnt,再把所有有满足此条件的四位数依次存入数组b中,然后对数组b的四

5、位数按从大到小的顺序进行排序。最后main( )函数调用写函数writeDat( )把数组b中的数输出到文件out.dat中。例如:7153,7+1=5+3,则该数满足条件存放数组b中,且个数cnt=cnt+1。 8129,8+1!=2+9,则该数不满足条件忽略。注意:部分源程序存在文件prog1.c文件中。程序中已定义数组:a300,b300,已定义变量:cnt请勿改动数据文件in.dat中的任何数据、主函数main( )、读函数readDat( )和写函数writeDat( )的内容。【解题思路】 第1步,对a数组中第1个元素到第300个元素依次执行如下操作:求出千位数;求出百位数字;求出

6、十位数字;求出个位数字;基于千位、百位、十位、个位判断是否符合条件,如果符合条件则将其存到以bcnt元素中,同时使个数cnt的值加1。注,本步功能是将a数组中符合条件的数存放到数组b中,同时求出符合条件数的个数cnt。本步对应程序为如下。for(i=0;i300;i+) /*循环变量i用于表示数组a中第1个元素至第300个元素的下标*/ m=ai/1000; /*求出ai的千位数字并且赋给变量m*/ n=ai%1000/100; /*求出ai的百位数字并且赋给变量n*/ p=ai%100/10; /*求出ai的十位数字并且赋给变量p*/ q=ai%10; /*求出ai的个位数字并且赋给变量q*

7、/ if(m+n=p+q) bcnt=ai;cnt+; /*如果千位数字加百位数字等于十位数字加个位数字,则将ai赋给bcnt,并且使cnt的值加1*/第2步,对b数组中b0至bcnt-1的cnt个元素进行降序排序。【标准答案】jsValue() int i,m,n,p,q; for(i=0;i300;i+) m=ai/1000; n=ai%1000/100; p=ai%100/10; q=ai%10; if(m+n=p+q) bcnt=ai;cnt+; for(i=0;icnt-1;i+) for(m=0;mcnt-1-i;m+) if(bm0,则该数满足条件,参加计算平均值pjz1,且个数

8、cnt=cnt+1. 8129,9-8-1-20,则该数不满足条件,参加计算平均值pjz2.注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a300,已定义变量:cnt,pjz1,pjz2请勿改动数据文件IN.DAT中的任何数据,主函数main(),读函数readDat()和写函数WriteDat()的内容。 【标准答案】jsvalue() int i,m,n,p,q; double sum1=0,sum2=0; for(i=0;i0) sum1=sum1+ai;cnt+; else sum2=sum2+ai; pjz1=sum1/cnt; pjz2=sum2/(300-cnt

9、);第6套【试题要求】函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数SortCharA(),其函数的功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文件OUT.DAT中。例:原文:dAe,BfC. CCbbAA结果:, .ABCdef AACCbb原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在PORG1.C中。请勿改动主函数main(),读数据函数ReadDat()和输出数据函数Write

10、Dat()的内容。 【标准答案】void SortCharA(void)unsigned int m,i,j,str;char t;for(m=0;mmaxline;m+)str=strlen(xxm);for(i=0;istr-1;i+)for(j=0;jxxmj+1) t=xxmj;xxmj=xxmj+1;xxmj+1=t;第7套【试题要求】函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数SorOR(),其函数的功能是:以该文章中的行为单位依次扫描一行字符串中的小写字母o,每次将小写字母o的左右字符串部分作交叉换位,即左边字符串移到小写字母o

11、的右边,而原先右边的则反之,并把小写字母o删除,依次直至这一行中的小写字母o处理完,之后把已处理的字符串仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文件OUT.DAT中。例如原文:you have the correct record.第一个o : u have the correct record.y第二个o :rrect record.yu have the c第三个o : rd.yu have the crrect rec 提示:对于每一行字符串数组处理有如下一种递归调用算法可供参考:查找字符串中首个小写字母o的位置;没有找到o,则结束

12、递归调用;找到o,则按题意对字符串进行处理,形成新的字符串,然后返回,继续进行递归调用。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在PROG1.C中。请勿改动主函数main(),读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【标准答案】void StrOR(void)int m,i,j,k,str;char t80;for(m=0;mmaxline;m+)for(;)str=strlen(xxm);for(i=0;istr;i+)if(xxmi=o) break;if(istr)k=0;for(j=i+1;jstr;j

13、+)tk=xxmj;k+;for(j=0;ji;j+)tk=xxmj;k+;tk=0;strcpy(xxm,t);elsebreak;第8套【试题要求】函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到无符号字符串数组xx中;请编制函数ChA( ),其函数的功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新的值,存入数组单元xxi 0中(其中:i是文章中的某行)。第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的值,存入数组单元xxi 1 中。以此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字

14、符的ASCII值,得到最后一个新的值,存放在原字符串对应的位置上,之后把已处理的字符串逆转后仍按行重新存入无符号字符串数组xx中。最后main()函数调用函数writeDat()把结果xx输出到OUT.DAT文件中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。并也按它的ASCII值作以上处理。注意:部分源程序存放在PORG1.C中。请勿改动主函数main(),读数据函数ReadDat()和输出数据函数WriteDat()的内容。【标准答案】void ChA(void) int i,j,k,str; unsigned char t; for(i=0;imaxline;

15、i+) str=strlen(xxi); t=xxi0; for(j=0;jstr-1;j+) xxij=xxij+xxij+1; xxistr-1=xxistr-1+t; for(j=0,k=str-1;jk;j+,k-) t=xxij; xxij=xxik; xxik=t; 第9套【试题要求】已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录有产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj (整形),数量sl(整形),金额je(长整形)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()读取这100个销售记录并存入结构数据sell中.请编制

16、函数sortDat(),其功能要求:按金额从大到小进行排列,若金额相等,则按照产品代码从小到大进行排列,最终排列结果仍存入数组sell中。最后main()函数调用函数WriteDat()把结果输出到文件OUT.DAT中。提示:若中间变量为PRO temp,则可以直接使用结构赋值语句进行解题。例如:selli=temp;注意:部分源程序存放在PORG1.C中。请勿改动主函数main(),读数据函数ReadDat()和输出数据函数WriteDat()的内容。【标准答案】void SortDat() int i,j; PRO t; for(i=0;i99;i+) for(j=0;j99-i;j+)

17、if(sellj.je0) t=sellj;sellj=sellj+1;sellj+1=t;第10套【试题要求】已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录有产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj (整形),数量sl(整形),金额je(长整形)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()读取这100个销售记录并存入结构数据sell中.请编制函数sortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按照金额从小到大进行排列,最终排列结果仍存入数组sell中。最后main()函数调用函数WriteDat

18、()把结果输出到文件OUT.DAT中。提示:若中间变量为PRO temp,则可以直接使用结构赋值语句进行解题;产品名称比较请用函数strcmp进行解题。例如:selli = temp;注意:部分源程序存放在PORG1.C中。请勿改动主函数main(),读数据函数ReadDat()和输出数据函数WriteDat()的内容。【标准答案】void SortDat() int i,j; PRO t; for(i=0;i99;i+) for(j=0;j99-i;j+) if(strcmp(sellj.mc,sellj+1.mc)sellj+1.je) t=sellj;sellj=sellj+1;sell

19、j+1=t;第11套【试题要求】函数ReadDat()实现从文件IN.DAT中读取一篇英文文章,存入到无符号字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,其替代值仍存入数组xx所对应的位置上,最后调用函数WriteDat()把结果xx输出到OUT.DAT中。替代关系:f(p)=p*11 mod 256,mod为取余运算,p是数组xx中某一个字符的ASCII值,f(p)是计算后的无符号整形值(注意:中间变量定义成整形变量),如果计算后f(p)的值小于等于32或大于130,则该字符不变,否则用f(p)替代所对应的字符。注意:部分源程序存放在

20、PORG1.C中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。并也按此替代关系进行处理。请勿改动主函数main(),读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【标准答案】void encryptChar() int i,j,str; unsigned int val; for(i=0;imaxline;i+) str=strlen(xxi); for(j=0;jstr;j+) val=xxij*11%256; if(!(val130) xxij=val; 第12套【试题要求】函数ReadDat( )实现从文件IN.DAT中读取一篇英文文

21、章,存入到无符号字符串数组xx中;请编制函数encryptChar( ), 按给定的替代关系对数组xx中的所有字符进行替代,其替代值仍存入数组xx所对应的位置上,最后调用函数WriteDat()把结果xx输出到OUT.DAT中。替代关系:f(p)=p*11 mod 256,mod为取余运算,p是数组xx中某一个字符的ASCII值,f(p)是计算后的无符号整形值(注意:中间变量定义成整形变量),如果计算后f(p)的值小于等于32或f(p)对应的字符是小写字母,则该字符不变,否则用f(p)替代所对应的字符。注意:部分源程序存放在PORG1.C中。原始数据文件存放的格式是:每行的宽度均小于80个字符

22、,含标点符号和空格,并也按此替代关系进行处理。请勿改动主函数main(),读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【标准答案】void encryptChar() int i,j,str; unsigned int val; for(i=0;imaxline;i+) str=strlen(xxi); for(j=0;jstr;j+) val=xxij*11%256; if(!(val=a&val=z) xxij=val; 第13套【试题要求】函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章,存入到无符号字符串数组xx中;请编制函数encryptC

23、har( ), 按给定的替代关系对数组xx中的所有字符进行替代,其替代值仍存入数组xx所对应的位置上,最后调用函数WriteDat()把结果xx输出到OUT.DAT中。替代关系:f(p)=p*11 mod 256,mod为取余运算,p是数组xx中某一个字符的ASCII值,f(p)是计算后无符号整形值(注意:中间变量定义成整形变量),如果原字符是数字字符0至9或计算后f(p)的值小于等于32,则该字符不变,否则用f(p)替代所对应的字符。注意:部分源程序存放在PORG1.C中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。并也按此替代关系进行处理。请勿改动主函数main

24、(),读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【标准答案】void encryptChar() int i,j,str; unsigned int val; for(i=0;imaxline;i+) str=strlen(xxi); for(j=0;j=0&xxij=9|val=32) xxij=val; 第14套【试题要求】将文件IN.DAT中的200个整数读至数组xx中。请编制jsValue()函数,要求:求出数组xx中最大数max及最大数的个数cnt和数组xx中的元素值能被3整除或能被7整除的所有数的算术平均值pj。结果max,cnt,pj输出到OUT.D

25、AT中。注意:部分源程序存放在PORG1.C文件中。请勿改动数据文件IN.DAT中的任何数据,主函数main(),读函数Read-Dat()和输出数据函数WriteDat()的内容。【标准答案】void jsValue()int i,k=0;float sum=0;max=xx0;for(i=1;imax) max=xxi;for(i=0;i200;i+)if(xxi=max) cnt+;if(xxi%3=0|xxi%7=0) sum=sum+xxi;k+;pj=sum/k;第15套【试题要求】已知数据文件IN1.DAT和IN2.DAT中分别存有100个两位十进制数,并且已调用读函数ReadD

26、at()把这两个文件中的数存入数组a和 b中,请考生编制一个函数jsVal(),实现的功能是依次对数组a和b中的数按条件重新组成一个新数并依次存入数组c中,再对数组c中的数按从小到大的顺序进行排序,最后调用输出函数writeDat()把结果c输出到文件OUT.DAT中。组成新数的条件:如果数组a和b中相同下标位置的数必须符合一个是偶数,另一个是奇数,则数组a中的数按二进制数左移八位后再加上数组b对应位置上的数,把这样组成的新数依次存入数组c中。例如:a: 12 33 24 15 21 b: 32 35 17 15 18 c: 6161 5394排序后c: 5394 6161注意:部分源程序存放

27、在文件PORG1.C文件中。程序中已定义:a100,b100,c100.请勿改动数据文件IN1.DAT和IN2.DAT中的任何数据,主函数main(),读函数ReadDat()和写数据函数WriteDat()的内容。 【标准答案】void jsVal() int i,j,t,cnt=0; for(i=0;i100;i+) if(ai%2=0&bi%2!=0|ai%2!=0&bi%2=0) ccnt=(ai8)+bi;cnt+; for(i=0;icnt-1;i+) for(j=0;jcj+1) t=cj;cj=cj+1;cj+1=t;第16套【试题要求】程序PROG1.C的功能是:把s字符串中

28、所有英文字母改写成该字母的下一个字母,字母z改写成字母a,字母Z改写成字母A,其它字符不做改变。请考生编写函数chg(char*s) 实现程序要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。例如:s字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为:No.123Ayz.注意:部分源程序存放在文件PORG1.C文件中。请勿改动数据文件in.dat中的任何数据,主函数main()和输出数据函数readWriteDat()的内容。 【标准答案】void chg(char *s) int i,str; str=strlen(s); for(i=0;i=a&

29、si=A&si=Y) si=si+1; else if(si=z|si=Z) si=si-25;第17套【试题要求】程序PROG1.C的功能是:选出大于100小于1000范围内所有个位数字与十位数字之和被10除所得余数恰是百位数字的所有素数(如293)。计算并输出上述这些素数的个数cnt以及这些素数值的和sum。请考生编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件out.dat中。注意:部分源程序存放在文件PORG1.C文件中。请勿改动主函数main()和输出数据函数WriteDat()的内容。 【标准答案】void countVa

30、lue()int num,i,m,n,p;for(num=101;num1000;num+)m=num/100;n=num%100/10;p=num%10;if(n+p)%10=m)for(i=2;inum-1) sum=sum+num;cnt+;第18套【试题要求】程序PROG1.C的功能是:在三位整数(100至999)中寻找符合下面条件的整数,并依次从小到大存入数组b中。条件如下:某数既是完全平方数,又有两位数字相同,例如144,676等。请考生编制函数int jsValue(int bb) 实现此功能,满足该条件的整数的个数通过所编制的函数返回。最后调用函数writeDat()把结果输出

31、到文件out.dat中。注意:部分源程序存放在文件PORG1.C中。请勿改动主函数main()和写函数WriteDat()的内容。 【标准答案】int jsValue(int bb) int n,m,a,b,c,cnt=0; for(n=10;n=31;n+) m=n*n; a=m/100; b=m%100/10; c=m%10; if(a=b|a=c|b=c) bbcnt=m;cnt+; return cnt;第19套【试题要求】函数readDat()是从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数功能是:以行为单位对

32、字符串变量的下标为奇数的位置上的字符按其ASCII值从小到大的顺序进行排序,下标为偶数的位置上的字符仍按照原来位置存放,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到out.dat文件中。例如:位置 0 1 2 3 4 5 6 7源字符串 h g f e d c b a则处理后的字符串 h a f c d e b g 注意:部分源程序存在文件PROG1.C文件中。请勿改动数据文件in.dat中的任何数据,主函数main(),读函数readDat()和写函数WriteDat()的内容。 【标准答案】void jsSort()int m,i,j,str

33、;char t;for(m=0;m20;m+)str=strlen(xxm);for(i=0;istr/2-1;i+)for(j=1;jxxmj+2) t=xxmj;xxmj=xxmj+2;xxmj+2=t;第20套【试题要求】在文件in.dat中已存有200个正整数,且每个数均在1000至9999之间。函数readDat()是读取这200个数存放到数组aa中。请编制函数jsSort(),其函数功能是:要求按每个数的后三位的大小进行降序排列,如果出现后三位相等的数值,则对这些数值按原始4位数据进行升序排列,将排序后的前10个数存入数组bb中。最后调用函数writeDat()把结果bb输出到文件

34、out.dat 中。例如:处理前:9012 5099 6012 7025 8088 处理后:5099 8088 7025 6012 9012注意:部分源程序存在文件PROG1.C文件中。请勿改动数据文件in.dat中的任何数据、主函数main()、读函数readDat()和写函数WriteDat()的内容。 【标准答案】void jsSort() int i,j,t; for(i=0;i199;i+) for(j=0;j199-i;j+) if(aaj%1000aaj+1) t=aaj;aaj=aaj+1;aaj+1=t; for(i=0;i10;i+) bbi=aai;第21套【试题要求】已

35、知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数位置上的值减去百位数位置上的值再减去十位数位置上的值最后减去个位数位置上的值,如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PORG1.C文件中。程序中已定义数组:a200, b200, 已定义变量:cnt.请勿改动数据文件IN.DAT中的任何数

36、据,主函数main(),读函数ReadDat()和写函数WriteDat()的内容。【试题解题】第1步,对a数组中第1个元素到第200个元素依次执行如下操作:求出千位数;求出百位数字;求出十位数字;求出个位数字;基于千位、百位、十位、个位判断是否符合条件,如果符合条件则将其存到以bcnt元素中,同时使个数cnt的值加1。注,本步功能是将a数组中符合条件的数存放到数组b中,同时求出符合条件数的个数cnt。本步对应程序为如下。for(i=0;i=0&ai%2!=0) bcnt=ai;cnt+; /*如果千位数字减百位数字减十位数字减个位数字大于等于0并且ai是奇数,则将ai赋给bcnt,并且使cn

37、t的值加1*/第2步,对b数组中b0至bcnt-1的cnt个元素进行升序排序。【标准答案】 jsValue() int i,m,n,p,q; for(i=0;i=0&ai%2!=0) bcnt=ai;cnt+; for(i=0;icnt-1;i+) for(m=0;mbm+1) n=bm;bm=bm+1;bm+1=n;第22套【试题要求】已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数位置上的值加上个位数位置上的值恰好等于百位数位置上的值加上十位数位置上的值,而且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号