江苏等级考试二级C语言上机真题汇编

上传人:lisu****2020 文档编号:160376869 上传时间:2022-10-10 格式:DOC 页数:22 大小:90.01KB
收藏 版权申诉 举报 下载
江苏等级考试二级C语言上机真题汇编_第1页
第1页 / 共22页
江苏等级考试二级C语言上机真题汇编_第2页
第2页 / 共22页
江苏等级考试二级C语言上机真题汇编_第3页
第3页 / 共22页
资源描述:

《江苏等级考试二级C语言上机真题汇编》由会员分享,可在线阅读,更多相关《江苏等级考试二级C语言上机真题汇编(22页珍藏版)》请在装配图网上搜索。

1、江苏省高等高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷二级 C语言 (本试卷完成时间 70分钟)一、改错题(16分)【程序功能】 输入两个正确日期且年份在1900-9999范围内,计算并输出两个日期之间间隔的天数。例如:2008-8-1和2009-8-1之间间隔的天数为365。 提示:被4整除并且不能被100整除的年份是闰年,能被400整除的年份也是闰年,其他年份则是平年。【测试数据与运行结果】 显示:first date: 输入:1980-2-1显示:second date: 输入:2009-8-1输出:10774 days【含有错误的源程序】#include#defin

2、e leap(int y) (y)%4=0&(y)%100!=0|(y)%400=0)struct d int y,m,d; ;int days(struct d d1, struct d d2) int mon213=0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31;int i; long td=0;for(i=d1.y;id2.y;i+) td=leap(i)?366:365;for(i=1;id1.m;i+) td- =monleap(d1.y)i;td-=d1.d-1;for(i=1;

3、id2.m;i+) td+=monleap(d2.y)i;td+=d2.d-1; return td;void main() struct d1,d2; puts(“n first date:”); scanf(“%d-%d-%d”,&d1.y,&d1.m,&d1.d); puts(“n second date:”); scanf(“%d-%d-%d”,&d2.y,&d2.m,&d2.d);printf(“%d days”,days(d1.y,d2.y); getch();【要求】1 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2 改错时,

4、可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句 ,也不能删去整条语句。3 改正后的源程序(文件名为myf1.c)保存在T:盘根目录中功阅卷使用,否则不予评分。/*二 编程题(24分)【程序功能】 输入两个自然数P和Q(PQ),找出满足下列条件的整数组(K,M,N)。(1) PKMQ(2) K*K+M*M=N*N【编程要求】1.编写函数int chlm(int p,int q,int a 3)实现以下功能:查找K,M在p,q范围内取值且满足以上条件的所有整数组(K,M,N)。若找到则将这些整数组保存到a指向的数组中,函数返回找到的整数组的组数。若

5、找不到则函数返回0。2.编写函数main实现以下功能:声明二维数组a和变量p、q,输入两个自然数并保存到p和q中(pq),调用chlm函数在p,q范围内查找满足以上条件的整数组。若找不到则在屏幕上输出“out found”,否则将查找结果保存到a数组中,输出a数组数据到屏幕及文件myf2.out中。最后将考生本人的准考证号输出到文件myf2.out中。【测试数据与运行结果】输入: p=12 q=38输出12 16 2012 35 37 15 20 2515 36 39 16 30 3418 24 3020 21 2921 28 3524 32 4024 36 45*/江苏省高等高等学校非计算机

6、专业学生计算机基础知识和应用能力等级考试上机试卷二级 C语言 (本试卷完成时间 70分钟)/*一 改错题(16分)【程序功能】函数dtoh实现将参数num的值表示为一个十六进制形式的字符串,并将该字符串存储在一个动态申请的存储区内,函数返回动态存储区的起始地址。【测试数据及运行结果】输入:1234输出:4d2含有错误的源程序*/#include#includechar dtoh(unsigned num) char digits=”0123456789abcdef”; char *s; int n=0; unsigned un=num; while(un) n+; un/=16; s=(cha

7、r*)malloc(n+1)*sizeof(char); if(s=null) printf (“Memory request failed!n”);exit(1); sn-=”0”;while(num) sn-=digitsnum/16; /*取一位十六进制数字字符*/ num/=16;return s;void main() char *p; unsigned n; scanf(“%u”,&n); p=dtoh(n); printf(“%s”,p);free(p); getch();【要求】1. 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修

8、改。2. 改错时,可以修改语句中的一部内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。3. 改正后的源程序(文件名myf1.c)保存在T:盘根目录共阅卷使用,否则不予评分。二、编程题(24分)【程序功能】在给定的范围内查找并输出所有满足以下条件的整数对(a,b)及与(a,b)关联的反序数对(c,d):(1)a小于b:(2)a和b的十进制表示均是三位数且各位上的数字互不相同;(3)a的反序数(记作c)和b的反序数(记作d)也都是三位数并且ab等于cd。例如,与整数对(302,406)关联的反序数对是(203,604),302406=203604,因

9、此(302,406)是满足上述条件的整数对。【编程要求】1. 编写函数int find(int x4,int m,int n)实现以下功能:若m和n的十进制表示不是三位数则函数返回0。否则,将取值在m,n范围内所有满足上述条件的整数对以及与这些整数对关联的反序数对保存到x指向的二维数组中,函数返回x数组中保存的数据行数。2. 编写函数main实现以下功能:声明一个100行4列的二维数组a,用a数组作实参调用find函数在300,450范围内查找,将找到的满足上述条件的整数对及关联的反序数对保存到a数组。按以下格式将a数组中数据输出到屏幕及文件myf2.out中。最后将考生本人准考证输出到文件m

10、yf2.out中。【测试数据与运行结果】输出: 301*309=103*903 302*406=203*604 304*403=403*304 306*402=603*204 312*426=213*624 314*413=413*314 321*369=123*963 324*423=423*324 402*408=204*804 412*428=214*824【要求】1. 源程序文件为myf2.c,输出结果文件名myf2.out。2. 数据文件的打开、使用、关闭均使用C语言标准库中缓冲文件系统操作函数实现。3. 源程序文件和运行结果均需要保存T:盘根目录中供阅卷使用。4. 不要复制扩展名为

11、obj和exe的文件到T:盘中。江苏省高等高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷二级 C语言 (本试卷完成时间 70分钟)一、改错题(16分)【程序功能】对一个二维数组中的数据排序。排序规则如下:将整个数组中值最小的元素所在行调整为数组第1行(行下标为0),将除第1行外剩余行中值最小的元素所在行调整为数组第2行,将除第1、2行外剩余行中值最小的元素所在行调整为数组第3行,其他依此类推。【测试数据与运行结果】数组初始化数据: 输出:3 4 5 6 8 2 1 08 2 1 0 1 2 3 4 5 4 3 2 5 4 3 21 2 3 4 3 4 5 6【含有错误的源程序

12、】#include “stdio.h”int getmin(int a,int n) int i,min=a0; for(i=1;imin) min=ai; return min;void lineswap(int a,int b,int *n) int i, t; for(i=0;in;i+) t=ai; ai=bi; bi=t; void main() int a4=3,4,5,6,8,2,1,0,5,4,3,2,1,2,3,4,i,j; for(i=0;i3;i+) for(j=1;j4;j+) if(getmin(aj,4)getmin(ai,4) lineswap(aj,int ai

13、,4); for(i=0;i4;i+) for(j=0;j4;j+)printf(“%d “,aij); printf”n”);getch();【要求】1. 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句 ,也不能删去整条语句。3. 改正后的源程序(文件名为myf1.c)保存在T:盘根目录中功阅卷使用,否则不予评分。二、编程题(24分)【程序功能】计算由两个整数生成的两个合法代码的码距。这里的合法代码定义为由16个二进制数字字符组成的

14、字符串。例如“0000000000100101”是一个合法代码。码距是指两个合法代码中对应位数字字符不同的位数。例如,合法代码”0000000000100101”和”0000000000001110”自又向左1、2、4、6位上具有不同数字字符,因此这两个合法代码的码距为4。【编程要求】1. 编写函数int hamming(int x,int y,chara ,char b )实现以下功能:先将形参x和y分别转换为2个合法代码并按从低位到高位的顺序分别保存2个合法代码到a和b指向的数组中(不足16位时高位补字符0)再计算a数组和b数组中的两个合法代码的码距,函数返回该码距。2. 编写函数main

15、 实现以下功能:声明字符数组a 、b和变量m、n,输入两个整数并保存到m和n中,若m、n的值在032767范围内则用m、n和数组a、b作实参调用hamming函数,计算由m和n生成的两个合法代码的码距,将a、b数组中存储的合法代码及这两个代码的码距输出到屏幕及文件myf2.out中。最后将考生本人的准考证输出到文件myf2.out中。.【测试数据与运行结果】输入:m=16 n=38输出: a:0000000000010000 b:0000000000001000 distance of 16 and 8 is 2【要求】1. 源程序文件为myf2.c,输出结果文件名myf2.out。2. 数据

16、文件的打开、使用、关闭均使用C语言标准库中缓冲文件系统操作函数实现。3. 源程序文件和运行结果均需要保存T:盘根目录中供阅卷使用。4. 不要复制扩展名为obj和exe的文件到T:盘中。江苏省高等高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷二级 C语言 (本试卷完成时间 70分钟)一、改错题(16分)【程序功能】将一个实数转换为二进制科学计数法表示并输出。二进制科学记数法是指将一个绝对值大于2或者小于1的实数记为a2n形式,其中尾数a是用二进制表示的实数且1|a|2, 指数中的n是用二进制表示的整数。例 如:0.125的科学计算法表示是1.02-11若用B代表基数2,则a2n

17、可表示为aBn 的形式。例如,1.02-11表示1.0B-11。【测试数据与运行结果】第一次运行时输入:0 输出:0.0B0第二次运行时输入:0.125 输出:1.0B-11第三次运行时输入:315 输出:1.00111011B+1000【含有错误的源程序】#include void outBinary(int x) if(x/2) outBinary(x/2); printf(“%d”,x%2);void outFloatBinary(float x) int e=0; if(x=0) puts(0.0B0);return; if(x=2.0) e+;x/=2; while(x0) prin

18、tf(“B+”); outBinary(e); else printf(“B-”); outBinary(-e); printf(“n”);void main() float a;scanf(“%f”,&a); outFloatBinary(a);getch();【要求】1. 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句 ,也不能删去整条语句。3. 改正后的源程序(文件名为myf1.c)保存在T:盘根目录中功阅卷使用,否则不予评分。

19、二、编程题(24分)【程序功能】求3000以内的亲密数对.如果A的全部真因子(包括1,不包括A自身)之和等于B;B的全部真因子之和等于A,则称整数A和B为一对亲密数。【编程要求】1. 编写函数int frinum(long s2,long n)实现如下功能:找到2n分范围内的所有亲密数对,将这些亲密数对保存到s指向的二维数组中。返回函数s数组中存储的亲密数对的对数。2. 编写函数main 实现以下功能:声明二维数组s和变量n,输入一个正整数并保存到n中,用二维数组s和变量n作为实参调用frinum函数,将n以内的所有的亲密数对输出到屏幕及文件myf2.out中。最后将考生本人的准考证输出到文件

20、myf2.out.【测试数据与运行结果】输入: n=3000输出: (220,284) (1184,1210) (2620,2924)【要求】1. 源程序文件为myf2.e,输出结果文件名myf2.out。2. 数据文件的打开、使用、关闭均使用C语言标准库中缓冲文件系统的文件操作函数实现。3. 源程序文件和运行结果均需要保存T:盘根目录中供阅卷使用。4. 不要复制扩展名为obj和exe的文件到T:盘中。江苏省高等高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷二级 C语言 (本试卷完成时间 70分钟)一、改错题(16分)【程序功能】函数replace的功能是用s2指向的字符串替

21、换s1指向的字符串中第n个字符(下标为n-1)之后到第m个字符(下标为m-1)之前的m-n-1个字符组成的字串(mn+1)。例如,若s1指向的字符串为“abcd”、s2指向的字符串为“xyz”、n=1、m=3,则执行替换操作后s1指向的字符串为“axyzcd”。【测试数据与运行结果】显示: s1=qwertyuiop s2=zxc input n,m;输入: 1 9输出: qzxcop【含有错误的源程序】#include #includevoid replace(char s1,int n,int m,char s2) char s80 int i,j,len1,len2,len;len1=s

22、trlen(s1); len2=strlen(s2);if(mn+1&nlen1&m=len1) for(i=0;in;i+) si=s1i; for(j=0;jlen2;j+,i+) si=s2j; si=0; len=strlen(s);for(i=0;s1m-1+i!=0;i+) slen+i= s1m-1+i;slen+i=0;for(i=0;si!=0;i+) si=s1i; s1i=0;void main() char s180=” qwertyuiop”,s220=”zxc”; int n,m; puts(“s1=%s s2=%sn”,s1,s2); puts(“input n,

23、m:”); scanf(“%d%d”,n,m); replace(s1,n,m,s2); puts(s1); getch();【要求】1. 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句 ,也不能删去整条语句。3. 改正后的源程序(文件名为myf1.c)保存在T:盘根目录中功阅卷使用,否则不予评分。二、编程题(24分)【程序功能】用乌勒姆公式an=n2-n+41(n=1,2,m)生成一个数列的前m项并找出其中的回文数。【编程要求】1.

24、 编写函数int numseq(long a,long b,int m)实现以下功能:用乌勒姆公式生成一个数列的前m项并保存到a指向的数组中,从a数组中找出所有回文数保存到b指向的数组中,函数返回b数组中回文数个数。2. 编写函数main 实现以下功能:声明一维数组a,b和变量m; 输入数列的项数并保存到m,用数组a、b和变量m作为实参调用numseq函数,将生成的数列前m项以及其中的回文数分别保存到a和b数组中;按每行10个数据的格式将a、b数组中的数据输出到屏幕及文件myf2.out中。最后将考生本人的准考证输出到文件myf2.out。【测试数据与运行结果】输入: m=20输出: a:41

25、 43 47 53 61 71 83 97 113 131 151 173 197 223 251 281 313 347 383 421 b:131 151 313 383【要求】1. 源程序文件为myf2.c,输出结果文件名myf2.out。2. 数据文件的打开、使用、关闭均使用C语言标准库中缓冲文件系统的文件操作函数实现。3. 源程序文件和运行结果均需要保存T:盘根目录中供阅卷使用。4. 不要复制扩展名为obj和exe的文件到T:盘中。江苏省高等高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷二级 C语言 (本试卷完成时间 70分钟)一、改错题(16分)【程序功能】已知指

26、针数组name保存了n个字符串的首地址。以下程序通过调整指针数组元素的值实现按字典序对n个字符串排序; 输出排序后指针数组各元素指向的字符串;删除指针数组中以元音字母开头的所有字符串首地址;输出指针数组各元素指向的字符串。【测试数据与运行结果】数组初始化数据: “Mary”,”George”,”Andy”,”Tom”,”Iris”输出: Andy George Iris Mary Tom George Mary Tom【含有错误的源程序】#include #include#includevoid sort(char*name,int n) char *ptr; int i,j,k;for(i=

27、0;in-1;i+) k=i; for(j=i+1;j0) k=j; if(k=i) ptr=namei,namei=namek,namek=ptr; int delstr(char *name,int n) int i,j,k; char c,s5=A,E,O,I,U,*P; for(i=0;in;i+) p=namei; c=p;c=toupper(c); /*toupper(c):若c是小写则返回对应大写字母,否则返回c原值*/ for(k=0;k=5) for(j=i;jn-1;j+)namej=namej+1; n-;i-;return n;void print(char*name,

28、int n) int i;for(i=0;in;i+)printf(“%s “,namei);printf(“n”);void main() int n=5; char *namen=“Mary”,”George”,”Andy”,”Tom”,”Iris”; sort(name,n); print (name,n); n=delstr(name,n); print(name,n); getch();【要求】1. 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命

29、令,但不能增加其他语句 ,也不能删去整条语句。3. 改正后的源程序(文件名为myf1.c)保存在T:盘根目录中功阅卷使用,否则不予评分。二、编程题(24分)【程序功能】输入两个正整数x和y(2x100,2y1000,找出所有满足下列条件的整数对(p,q):(1):p、q均为正整数;(2):p、q的最大公约数等于x且最小公倍数等于y。提示:p、q的最小公倍数等于(pq)/(p、q的最大公约数)。【编程要求】1. 编写函数int nucoup(int x,int y,int a2)实现如下功能:查找所有最大公约数是x并且2. 最小公倍数是y的整数对,若找到则保存这些整数对到a指向的的数组中,函数返

30、回找到的整数对的个数;若找不到则函数返回0。3. 编写函数main 实现以下功能:声明二维数组a变量x、y,输入两个整数并保存到x和y中,用x,y和a数组作为实参调用numcoup函数,若找不到满足以上条件的整数对则输出“not found”到屏幕,否则输出a数组中数据到屏幕及文件myf2.out中。最后将考生本人的准考证号输出到文件myf2.out。【测试数据与运行结果】输入: x=4 y=684输出: 4 68436 76 76 36684 4【要求】1. 源程序文件为myf2.e,输出结果文件名myf2.out。2. 数据文件的打开、使用、关闭均使用C语言标准库中缓冲文件系统操作函数实现

31、。3. 源程序文件和运行结果均需要保存T:盘根目录中供阅卷使用。4. 不要复制扩展名为obj和exe的文件到T:盘中。江苏省高等高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷二级 C语言 (本试卷完成时间 70分钟)一、改错题(16分)【程序功能】输入一个正确日期且年份在1900-9999范围内,计算并输出该日期是星期几。例如,若输入2008-8-8,应输出Fri(星期五)。提示:1900年1月1日是Mon(星期一)。能被4整除并且不能被100整除的年份是闰年,能被400整除的年份也是闰年,其他年份则是平年。【测试数据与运行结果】第一次运行显示:input a date: 输

32、入:1900-1-1 输出:Mon 第二次运行显示:input a date: 输入:2008-8-8输出:Fri 【含有错误的源程序】#include #define leap(y) (y)%4=0&(y)%400=0)|(y)%400=0)int week(int y,int m,int d) static int mon212=31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31; int yeard2=365,366,i; long td=0; for(i=1900;iy;i+)td+=yeard

33、leap(i); for(i=0;im;i+)td+=monleap(y)i; td+=d-1; return td%7.0;void main() int i,y,m,d; char wn7=Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”,”Sun”; puts(“n input a date:”); scanf(“%d-%d-%d”,&y,&m,&d);puts(wn(week(y,m,d); getch();【要求】1. 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2. 改错时,可以修改语句中的一部分内容,调整语

34、句次序,增加少量的变量说明或编辑预处理命令,但不能增加其他语句 ,也不能删去整条语句。3. 改正后的源程序(文件名为myf1.c)保存在T:盘根目录中供阅卷使用,否则不予评分。二、编程题(24分)【程序功能】实现包含一个变元x的多项式合并同类项操作。用结构数组存储一个多项式(一个数组元素存储多项式的一项)。结构数组元素的数据类型定义如下:typedef struct double coe; /* 系数 */ int exp; /* 变元x的指数*/TERM;例如:将多项式-3x2+5x+0.5x2+x-1-2x按如下形式存储到一个结构数组中。 coe-350.51-1-2exp212101【编

35、程要求】1. 编写函数int term(TERM a,TERM b,int n)实现以下功能:对a指向的数组中保存2. 的多项式实施合并同类项操作,n为a数组中多项式的项数。将合并同类项后得到的多项式保存到b指向的数组中。函数返回b数组中的多项式的项数。3. 算法提示:可以先对a数组按exp值排序后再做合并同类项操作。4. 编写函数main 实现以下功能:声明TERM型数组x和y,x数组用于保存合并同类项前多项式各项的系数和指数,y数组用于保存合并同类项后多项式各项的系数和指数。用x,y数组作为实参调用term函数。按所给输出格式将y数组中的数据输出到屏幕及文件myf2.out中。最后将考生本

36、人的准考证输出到文件myf2.out。【测试数据与运行结果】测试多项式:-3x2+5x+0.5x2+x-1-2x输出:-2.5x2+4.0x1-1.0【要求】1. 源程序文件为myf2.c,输出结果文件名myf2.out。2. 数据文件的打开、使用、关闭均使用C语言标准库中缓冲文件系统操作函数实现。3. 源程序文件和运行结果均需要保存T:盘根目录中供阅卷使用。4. 不要复制扩展名为obj和exe的文件到T:盘中。 2010年秋江苏二级C上机真题 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2010年秋) 二级C语言 (试卷代号C01) (本试卷完成时间70分钟)

37、一、改错题(16分) 【程序功能】 查找介于n1与n2(On1n232768)之间所有满足下列条件的整数:(1)该数的十进 制表示中有且仅有两个相同的数字位;(2)该数是素数。 【测试数据与运行结果】 测试数据:n1=900 n2=1200 屏幕输出: 911 919 929 977 991 997 1009 1013 1019 1021 1031 1033 1051 1061 1091 1103 1109 1123 1129 1153 1163 1187 1193 【含有错误的源程序】 #inelude #include int validate(int n) int i,j,k=0,num

38、5=0,size=0; do numsize=n%10; n=n/10; size+; while(n0); for(i=0;isize-1;i+) for(j=i+1;j1) return 1; else return 0; int prime(int) int i; for(i=2;i=(int)sqrt(n);i+) if(n%i=0)retum 0; return 1; void main() int i,count=0,n1,n2; scanf(%d%d,&n1,&n2); for(i=n1;i=n2;i+) if(validate(int i)&prime(int i) count

39、+; printf(%dt,i); if(count%8=0)printf(n); 【要求】 1. 将上述程序录入到文件myf1.C中,根据题目要求及程序中语句之间的逻辑关系对程序 中的错误进行修改。 2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预 处理命令,但不能增加其他语句,也不能删去整条语句。 3. 改正后的源程序(文件名myf1.c)保存在T:盘根目录中供阅卷使用,否则不予评分。 二、编程题(24分) 【程序功能】 字符串变换。 【编程要求】 1. 编写函数void change(char *a,char *b,char *c)。函数功能是首先把b指

40、向的字符串逆向存放,然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中,两个字符串中过长的剩余字符接在c指向数组的尾部。例如,当a指向的字符串为 abcdefg,b指向的字符串为1324时,C指向的数组中字符串应为a4b2c3dlefg。 2.编写main函数。函数功能是声明字符型数组s1、s2和t,用测试数据初始化数组s1和 s2,再用s1、s2和t作为实参调用函数change,将数组s1、s2和t中的字符串输出到屏幕及文件myf2.out中。最后将考生本人的准考证号字符串输出到文件myf2.out中。 【测试数据与运行结果】 测试数据:s1:abcdefg s2:132

41、4 屏幕输出:s1:abcdefg s2:4231 The result is:a4b2c3dlefg 【要求】 1.源程序文件名为myf2.c,输出结果文件名为myf2.out。 2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。 3.源程序文件和运行结果文件均需保存在T:盘根目录中供阅卷使用 4.不要复制扩展名为obj和exe的文件到T:盘中。2010春江苏二级C上机试题二级C语言上机试卷 (本试卷完成时间为70分钟) 一、改错题(16分) 【程序功能】 验证3(n范围内的任意两个相邻素数的平方之间至少存在4个素数。例如,5和7是两个相邻素数,52(25)与7

42、2(49)之间存在6个素数:29 31 37 41 43 47。 【测试数据与运行结果】 显示:input n: 输入:10 输出: 35k=5 1113 17 1923 57k=6 293137414347 【含有错误的源程序】 #include 样include int prime(int n) int i,flag=1; for(i=1;i=sqrt(n);i+) if(n%i=0)flag=0; return flag; int fun(int a,int n) int i,k=0; for(i=3;in) return 0; for(i=m*m;in*n;i+) if(prime(i

43、) bk+=i; return k; void main() int a50=0,b100=0,i,m,k,j,n; printf(input n:); scanf(%d,&n); m=fun(a,n); for(i=O;im-1;i+) k=fun1(a,ai+1,bO); printf(%d%dk=%d,a,ai+1,k); if(k4)printf(false);break; for(j=0;jk;j+) if(j%10=O)prinff(n); printf(%5d,bj); printf(n); getch(); 【要求】 1将上述程序录入到文件myf1.c中,根据题目要求及程序中语

44、句之间的逻辑关系对程序中的错误进行修改。 2改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。 3改正后的源程序(文件名myf1.c)保存在T:盘根目录中供阅卷使用,否则不予评分。 二、编程题(24分) 【程序功能】 在给定范围内查找k使得用公式k2+k+17生成的整数满足以下条件:该数的十进制表示中低3位数字相同,去掉低3位后的整数是回文数。例如,当k=461时用公式生成的整数 是212999,该数满足所给条件。 【编程要求】 1编写函数int findnum(int n1,int n2,long a2)实现以下功能

45、:k依次取n1n2范围 内的每个整数,分别用每个k及公式k2+k+17生成整数y,若y满足给定条件,则将k值及y 值保存到a指向的数组中,函数返回a数组中k的个数。 2编写函数main实现以下功能:声明二维数组a和变量n1、n2,输入两个整数并保存到 n1、n2中,用n1、n2及a数组作实参调用findnum函数,按所给格式输出a数组中的数据到屏 幕及文件myf2.out中。最后将考生本人的准考证号输出到文件myf2out中。 【测试数据与运行结果】 输入:n1=1,n2=10000 输出:knumber 461212999 586343999 383914741777 【要求】 1源程序文件

46、名为myf2c,输出结果文件名为myf2out。 2数据文件的打开、使用、关闭均用c语言标准库中缓冲文件系统的文件操作函数实现。 3源程序文件和运行结果文件均需保存在T:盘根目录中供阅卷使用。 4不要复制扩展名为obj和exe的文件到T:盘中。 参考答案 一、改错题 for(i=1;i=sqrt(n);i+)改为i=2 void fun1(int m,int n,int b)改为int k=fun1(a,ai+1,b0);改为b if(j%10=0)printf(n);改为j%10=0 二、编程题 #include int findnum(int n1,int n2,long a2) int

47、i=0,j; long x1,x2,x3,y,k; for(k=n1;k0) x3=x3*10+x1%10;x1=x1/10; if(x2=x3&y%10=y/10%10&y%10=y/100%10) a0=k;ai+1=y; return i; main() int i,j;long a102,n1,n2;FILE *fp; fp=fopen(Myf2.out,w); scanf(%d%d,&n1,&n2); j=findnum(n1,n2,a); printf(n kt number); for(i=0;ij;i+)prinff(n%ldt%ld,a0,a1); fprintf(fp,n k t number); for(i=0;ij;i+) fprintf(fp,n%ldt%ld,a0,a1); fprintf(fp,n My exam number is :0112400123); fclose(fp);getch();

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!