2007春C语言上机考试题8套.doc_第1页
2007春C语言上机考试题8套.doc_第2页
2007春C语言上机考试题8套.doc_第3页
2007春C语言上机考试题8套.doc_第4页
2007春C语言上机考试题8套.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

2007春C语言上机考试题8套发表时间:2007-10-19 2007年(春)上机试卷(01)一、改错题(18分)程序功能 下列程序中函数fun的功能是: 首先将s数组中的字符串按以下规则复制到t数组:对于下标值为偶数位置上的字符复制n次(n=下标值+1),对于下标值为奇数位置上的字符只复制一次;其次将t数组中的字符串按字符编码从小到大的顺序排序。测试数据与运行结果当s中的字符串为“abcdefg”时,程序运行结果应为“abcccdeeeeefggggggg”当s中的字符串为“136254”时,程序运行结果应为“123455555666”含有错误的源程序*/#include stdio.h#include conio.hvoid fun(char *s,char *t)int i,j,k,n=0; char temp;for(i=0;si!=0; +i) if(i%2=0) for(k=0;ki+1;+k) tn=si; n+; else tn=si;tn=0;for(i=0;in-1;i+)k=i; for(j=0;jn;j+) if(tjtk) k=j; if(k!=i) temp=ti; ti=tk; tk=temp; main()char s20,t100;printf(nPlease enter string s:); gets(s);fun(s);printf(The result is: %s,t);getch();/*二、编程题(22分)程序功能 验证对于任意一个不超过9位的自然数按下列步骤经过有限次的变换得到的新数最终转换成123并(1)统计该数中偶数数字的个数a(0被当作偶数对待),该数中奇数数字的个数b,该数的总位数c。(2)用a,b,c按以下规则组成一个新数:当a!=0时,a为百位,b为十位,c为个位;当a=0时,b为百位,a为十位,c为个位。(3)当这个新数不等于123时,对这个新数重复上述操作。经过多次重复,新数最终转换成123。数学上称123为陷阱数。编程要求1、编写函数int fun(long n,long a),对给定的一个长整型数n根据上述规则作变换,直到新生成的数等于123。在转换过程中,把n及转换过程中生成的所有数依次保存到数组a中,函数返回a数组中数据个数。2、编写main函数,从键盘输入n的值,调用函数fun判断n是否转换成123,将n及转换过程中生成的所有数依次输出到屏幕并用写文件函数保存保存到结果文件myf2.out,最后将考生本人的准考证号字符串也保存到结果文件myf2.out中。测试数据与运行结果当n=12345678时输出结果为: 12345678,448,303,123 my exam number is :考生本人准考证号字符串2007年(春)上机试卷(02)一、改错题(18分)程序功能 找到并输出2100之间的所有互逆素数对。互逆素数对:若一个素数的反序数也是素数,则称该素数和其反序数为互逆素数对。例如,13是素数,13的反序数31也是素数,故(13,31)是互逆素数对。算法提示:函数prime的功能是先用筛选法求出保存在a指向的结构数组元素的成员i中2n范围内的所有素数,再从中选出大于11的互逆素数对。存放互逆素数对的方法是:将互逆素数对分别存放于同一结构数组的i和flag成员中。例如,13和31是互逆素数对,故a13.i=13,a13.flag=31;a31.i=31,a31.flag=13。测试数据与运行结果运行结果2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 9713, 3117, 7131, 1337, 7371, 1773, 3779, 9797, 79含有错误的源程序#include#define N 101struct PR int i;int flag; ;void prime(struct PR a,int n) int i,j; for(i=2;isqrt(n);i+) if(ai.i) for(j=i+1;jn;j+) if(aj.i & aj.i%ai.i=0) aj.i=0; for(i=12;i=n;i+) if(ai.i) int k=i,s=0; while(k) s=s*10+k%10;k/=10; if(as.i) ak.flag=i;ai.flag=k; main() struct PR aN=0;int i; clrscr(); for(i=2;iN;i+) ai=i; prime(a,N); for(i=2;iN;i+) if(ai.i) printf(%3d,ai.i); printf(n); for(i=10;iN;i+) if(ai.flag) printf(%4d,%4dn,ai.i,ai.flag); getch();要求:1、将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2、改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。3、改正后的源程序(文件名myf1.c)保存在考试软盘的根目录中供阅卷使用,否则不予评分。二、编程题(22分)程序功能字符串变换编程要求1 编写函数void conv(char *ss),其功能是:从左到右依次扫描字符串ss,把小写字母o左边的所有字符移到该串的右边,并把该小写字母o删除,继续扫描字符串ss并做上述操作,直到字符串ss中所有的小写字母o被删除为止。2 编写main函数,声明一个长度为80的字符数组并用测试数据初始化该数组,调用conv函数对数组中的字符串作上述变换,将变换后的结果字符串输出到屏幕并用写文件函数保存到结果文件myf2.out中,最后将考生本人的准考证号字符串也保存到结果文件myf2.out中。测试数据与运行结果测试数据:You can create an index on any field.输出结果:n any field.Yu can create an indexMy exam number is: 考生本人准考证号字符串要求1 源程序文件名必须取为myf2.c,输出结果文件名必须取为myf2.out。2 数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。3 源程序文件和运行结果文件均须保存在考试盘的根目录下,供阅卷用。4 不要复制扩展名为OBJ和EXE的文件到考试盘上。2007年(春)上机试卷(03)一、改错题(18分)程序功能 验证:在72000之间的所有素数中存在这样的两个素数,它们的差恰好是1898。算法提示:main函数先将72000之间的所有素数放入a数组中,然后调用fun 函数验证命题。若命题成立,则fun函数将找到的两个素数所在的数组元素下标保存到x和y指向的两个变量中,fun函数返回1,否则返回0。main函数根据fun函数的返回值,输出满足条件的这两个素数,或输出“not found!”。测试数据与运行结果运行结果为:1951-53=1898含有错误的源程序#include#includeint prime(int n) int i; for(i=2;i=n/2;i+) if(n%i=0) return 0; else return 1;int fun(int a,int n,int *x,int *y) int i,j; for(i=0;in-1;i+) for(j=1;jn;j+) if(aj-ai=1898) x=i,y=j; return 1; return 0;main() int a1000=0;int i,k=0,flag,m,n; for(i=7;i2000;i+=2) if(prime(i) ak+=i; flag=fun(a,k,m,n); if(flag) printf(%d-%d=%dn,an,am,an-am); else printf(not found!n); getch();要求:1、将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2、改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。3、改正后的源程序(文件名myf1.c)保存在考试软盘的根目录中供阅卷使用,否则不予评分。二、编程题(22分)程序功能以矩阵的行作为排序的交换单位,使得排序后的矩阵按指定列的元素值递减有序。编程要求1编写函数void sort(int x4,int n,int col)。函数功能:对x指向的二维数组(该数组中保存了一个n4矩阵)以行作为交换单位,按照下标为col的列元素值做递减排序。2编写main函数。函数功能:声明一个3行4列二维数组并用测试数据初始化该数组,调用 sort 函数对该数组中保存的矩阵按第3列(列下标为2)排序,将排序后二维数组中的矩阵输出到屏幕并用写文件函数保存到结果文件myf2.out中。最后将考生本人的准考证号字符串也保存到结果文件myf2.out中。测试数据与运行结果测试数据: 101 80 60 90 102 70 90 50 103 60 70 80运行结果(按第3列排序后):102 70 90 50103 60 70 80101 80 60 90My exam number is: 考生本人准考证号字符串要求1 源程序文件名必须取为myf2.c,输出结果文件名必须取为myf2.out。2 数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。3 源程序文件和运行结果文件均须保存在考试盘的根目录下,供阅卷用。4 不要复制扩展名为OBJ和EXE的文件到考试盘上。2007年(春)上机试卷(04)一、改错题(18分)程序功能 下列程序中fun函数的功能是:从键盘接收若干个字符串(不超过10个),将它们依次连接并保存到string数组中,直到输入的字符串为“done”为止(不连接字符串“done”)。统计连接的字符串个数并存放到n指向的变量中。main函数中首先将字符串“0422400110”存储到结构变量str的成员number中,然后调用fun函数,把连接的字符串个数存放结构变量str的count成员中,最后将string数组起始地址保存到结构变量str的string成员中。测试数据与运行结果 输入的字符串依次为:abxyz1234done 代表回车 输出结果为:0422400110,3 abxyz1234含有错误的源程序#include stdio.h#include string.h#include conio.htypedef structchar number12; char *string; int count; CAR;char string100;void fun(int *n)char p10,*strp; int limit=0; strp=string; gets(p); while(limit10) if(p=done) break; strcat(strp,p); strp+=strlen(p); *n+; gets(p); limit+; main()CAR str=0,0,0;str.number=0422400110;fun(str.count);str.string=string;printf(%s,%dn,str.number,str.count); printf(%sn,str.string);getch();二、编程题(22分)程序功能 求级数前n项之和编程要求1、编写函数double(fun(double eps),其功能是计算下列正项级数的部分和,当级数某项的值小于eps时,函数返回计算结果。 s=1/2+2/2*3+3/2*3*5+.+n/p1*p2*p3*.*pn 其中:pi(i=1,2,3,.n)是500以内素数序列中的第i个素数。 500以内素数序列为:2,3,5,6,11,13,17,.2、编写main函数,接收键盘输入的eps值,调用函数fun计算级数前n项的和,将计算结果输出到屏幕并用写文件函数保存到结果文件myf2.out中,最后将考生本人的准考证号字符串也保存到结果文件myf2.out中。测试数据与运行结果测试数据: 键盘输入1e-7输出结果:s=0.954760 my exam number is:考生本人准考证号字符串要求1、源程序文件名必须取为myf2.c,输出结果文件名为myf2.out。2、数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。3、源程序文件和运行结果文件均需保存在考试盘根目录中供阅卷使用。4、不要复制扩展名为obj和exe的文件到考试盘上。2007年(春)上机试卷(05)一、改错题(18分)程序功能下列程序完成对n阶矩阵(n为奇数)的变换,将原矩阵左下角n/2阶子块中的数据与矩阵右上角n/2阶子块中的数据作交换,显示交换过子块后的n阶矩阵。测试数据与运行结果n=5原矩阵:0 1 2 3 45 6 7 8 910 11 12 13 1415 16 17 18 19 20 21 22 23 24变换后的矩阵:0 1 2 15 165 6 7 20 2110 11 12 13 143 4 17 18 19 8 9 22 23 24含有错误的源程序#include #include #define M 10void swap(int x,int y)int t;t=*x; *x=*y; *y=t; void change(int aM,int n)int i,j,c;for(i=0;in/2;i+) for(j=n/2+1;jn;j+) swap(&aij,&ai+n/2+1j-n/2+1);void print(int aM,int n)int i,j;printf(n);for(i=0;in;i+) for(j=0;jn;j+) printf(%5d,aij); printf(n); void main()int aMM,i,j,n=0;printf(nINPUT N (N=10|n%2=0) printf(Cant do it ); getch(); return; for(i=0;in;i+) for(j=0;jn;j+) aij=i*n+j;print(a,n);change(a);print(a,n);getch();二、编程题(22分)程序功能 解密 密文由若干个8进制数形式的字符串组成,相邻两个8进制数形式的字符串之间用字符8分隔,每个8进制数形式的字符串对应的8进制数是一个字符的ASCII码,ASCII码对应的字符是解密后的明文字符。 例如:密文为“10181248124810181038113840810181248408104810181278116” 则明文为“ATTACK AT DAWN”编程要求1、编写函数void fun(char *s,char *c),其功能是将s指向的密文解密,并将明文保存到c指向的数组中。2、编写main函数,声明字符数组s和c,用测试数据初始化s数组,调用函数fun对s数组中的密文解密,将解密后得到的明文输出到屏幕并用写文件函数保存到结果文件myf2.out中,最后将学生本人的准考证号字符串也保存到结果文件myf2.out中。测试数据与运行结果测试数据:10181248124810181038113840810181248408104810181278116输出结果:ATTACK AT DAWN my exam number is : 考生本人准考证号字符串2007年(春)上机试卷(06)一、改错题(18分)程序功能 合并两个整系数多项式,输出合并后的多项式。main函数中将两个多项式中每一项的系数和指数分别保存于结构数组a和b中,结构的成员a用于存入多项式中某一项的系数,成员n用于存入该项的指数,结构数组a和b存储的数据按降幂次序排列。merge函数合并存储在a、b数组中的两个多项式,并将合并后多项式中每一项的系数和指数保存于C数组中。测试数据与运行结果输入两个多项式分别是5x6-4x4-7x3+1 和 4x4+3x3+5x2+4x则输出结果为+5x6-4x3+5x2+4x1+1含有错误的源程序#include#includestruct pint a;int n;int merge(struct p *a,struct p *b,struct p *c) int i=0,j=0,k=0; while(ai.a!=0 & bj.a!=0) if(ai.n=bj.n) if(ai.a+bj.a=0) ck.a=ai.a+bj.a; ck.n=ai.n; k+;i+;j+; else i+,j+; if(ai.nbj.n) ck+=ai+; else if(ai.nbj.n) ck+=bj+; if(ai=0) while(bj.a!=0) ck+=bj+; else while(ai.a!=0) ck+=ai+; return k;main() struct p a20=5,6,-4,4,-7,3,1,0; struct p b20=4,4,3,3,5,2,4,1,c20=0; int i,k; k=merge(*a,*b,*c); for(i=0;ik;i+) printf(%+d,ci.a); if(ci.n=0) printf(n); else printf(x%d,ci.n); getch();要求:1、将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2、改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。3、改正后的源程序(文件名myf1.c)保存在考试软盘的根目录中供阅卷使用,否则不予评分。二、编程题(22分)程序功能查找指定范围内的互满数对。如果数a的真因子之和等于数b,且数b的真因子之和等于数a,则称(a,b)为一对互满数。例如,(220,284)是一对互满数,因为220的真因子之和为284(1+2+4+5+10+11+20+22+44+55+110=284),且284的真因子之和为220(1+2+4+71+142=220)编程要求1 编写函数int ampairs(int m,int n,int a2),其功能是找出m,n之间的所有互满数对,并将它们依次保存到二维数组a中,函数返回找到的互满数对的个数。2编写main函数。从键盘输入m和n的值,调用函数ampairs查找m,n范围内的互满数对,把找到的互满数对输出到屏幕并用写文件函数保存到结果文件 myf2.out中,最后将考生本人的准考证号字符串也保存到结果文件myf2.out中。测试数据与运行结果测试数据: m=200,n=10000输出结果:(220,284)(1184,1210)(2620,2924)(5020,5564)(6232,6368)My exam number is: 考生本人准考证号字符串要求1 源程序文件名必须取为myf2.c,输出结果文件名必须取为myf2.out。2 数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。3 源程序文件和运行结果文件均须保存在考试盘的根目录下,供阅卷用。4 不要复制扩展名为OBJ和EXE的文件到考试盘上。2007年(春)上机试卷(07)一、改错题(18分)程序功能 下列程序中函数fun的功能是:在N名学生中按学习成绩从高到低的顺序排出前m名学生(m10),并将这些学生的数据存放在一个动态分配的连续存储区中,函数返回此存储区的首地址。测试数据与运行结果测试数据:“A01”,81,“A02”,89,“A03”,66,“A04”,87,“A05”,77,“A06”,90,“A07”,79,“A08”,61,“A09”,80,“A10”,91,m=5时,输出结果为:A10 91 A06 90 A02 89 A04 87 A01 81含有错误的源程序#include#include#include#define N 10typedef struct ss char num10;int s; STU;STU *fun(STU a,int m) STU bN,*t; int i,j,k; t=(STU *)malloc(sizeof(STU); for(i=0;iN;i+) bi=ai; for(k=0;km;k+) for(i=j=0;ibj.s) j=i; tk=bj;bj.s=0; return t;main() STU aN=A01,81,A02,89,A03,66,A04,87,A05,77, A06,90,A07,79,A08,61,A09,80,A10,91; STU *porder;int i,m=5; porder=fun(a,m); for(i=0;im;i+) printf(%s %dn,porderi.num,porderi.s); getch();要求:1、将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2、改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。3、改正后的源程序(文件名myf1.c)保存在考试软盘的根目录中供阅卷使用,否则不予评分。二、编程题(22分)程序功能在一组数据中先删除重复出现的数据,再对剩余的数据排序。编程要求1 编写函数void delArray(int a,int n)。函数功能:对于形参a指向的一维数组中的前n个整数,若有重复出现的整数,则保留第一个,删除其后所有与其相同的整数;再对该数组中剩余的整数做递减排序,函数返回该数组中数据的个数。2 编写main函数。函数功能:定义一个整型数组a,用测试数据初始化a数组,调用delArray函数对a数组中的数据做处理,再将a数组中的数据输出到屏幕并用写文件函数保存到结果文件myf2.out中。最后将考生本人的准考证号字符串也保存到结果文件myf2.out中。测试数据与运行结果测试数据: 1,2,1,5,6,6,1,9,8,1运行结果:9,8,6,5,2,1My exam number is: 考生本人准考证号字符串要求1 源程序文件名必须取为myf2.c,输出结果文件名必须取为myf2.out。2 数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。3 源程序文件和运行结果文件均须保存在考试盘的根目录下,供阅卷用。4 不要复制扩展名为OBJ和EXE的文件到考试盘上。2007年(春)上机试卷(08)一、改错题(18分)程序功能 下列程序的功能是:找到并输出所有满足下列条件的2行3列表:将1、2、3、4、5、6填入2行3列的表中,要求表中数字各不相同,并使得每一列下面的数字比上面的数字大,每一行右边的数字比左边的数字大。在实现时用一个一维数组存储按上述要求生成的2行3列表,前三个元素表示第一行,后三个元素表示第二行。在主函数中先初始化数组,再生成符合要求的2行3列表,每生成一个表,均调用jud函数,判断表中是否有相同数字,若无相同数字,则输出表中数据。测试数据与运行结果The possible table satisfied above conditions are:No.1 No.2 No.3 No.4 No.51 2 3 1 2 4 1 2 5 1 3 4 1 3 54

温馨提示

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

评论

0/150

提交评论