您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 江苏等级考试二级C语言上机真题汇编
11江苏省高等高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷二级C语言(本试卷完成时间70分钟)一、改错题(16分)【程序功能】输入两个正确日期且年份在1900-9999范围内,计算并输出两个日期之间间隔的天数。例如:2008-8-1和2009-8-1之间间隔的天数为365。提示:被4整除并且不能被100整除的年份是闰年,能被400整除的年份也是闰年,其他年份则是平年。【测试数据与运行结果】显示:firstdate:输入:1980-2-1显示:seconddate:输入:2009-8-1输出:10774days【含有错误的源程序】#includestdio.h#defineleap(inty)((y)%4==0&&(y)%100!=0||(y)%400==0)structd{inty,m,d;};intdays(structdd1,structdd2){intmon[2][13]={{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}};inti;longtd=0;for(i=d1.y;id2.y;i++)td=leap(i)?366:365;for(i=1;id1.m;i++)td-=mon[leap(d1.y)][i];td-=d1.d-1;for(i=1;id2.m;i++)td+=mon[leap(d2.y)][i];td+=d2.d-1;returntd;}voidmain(){structd1,d2;puts(“\nfirstdate:”);scanf(“%d-%d-%d”,&d1.y,&d1.m,&d1.d);puts(“\nseconddate:”);scanf(“%d-%d-%d”,&d2.y,&d2.m,&d2.d);printf(“%ddays”,days(d1.y,d2.y));getch();2}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。3.改正后的源程序(文件名为myf1.c)保存在T:盘根目录中功阅卷使用,否则不予评分。二编程题(24分)【程序功能】输入两个自然数P和Q(PQ),找出满足下列条件的整数组(K,M,N)。(1)P≤KM≤Q(2)K*K+M*M=N*N【编程要求】1.编写函数intchlm(intp,intq,inta[][3])实现以下功能:查找K,M在[p,q]范围内取值且满足以上条件的所有整数组(K,M,N)。若找到则将这些整数组保存到a指向的数组中,函数返回找到的整数组的组数。若找不到则函数返回0。2.编写函数main实现以下功能:声明二维数组a和变量p、q,输入两个自然数并保存到p和q中(pq),调用chlm函数在[p,q]范围内查找满足以上条件的整数组。若找不到则在屏幕上输出“outfound”,否则将查找结果保存到a数组中,输出a数组数据到屏幕及文件myf2.out中。最后将考生本人的准考证号输出到文件myf2.out中。【测试数据与运行结果】输入:p=12q=38输出121620123537152025153639163034182430202129212835243240243645【要求】1.源程序文件为myf2.c,输出结果文件名myf2.out。2.数据文件的打开、使用、关闭均使用C语言标准库中缓冲文件系统操作函数实现。3.源程序文件和运行结果均需要保存T:盘根目录中供阅卷使用。4.不要复制扩展名为obj和exe的文件到T:盘中。32江苏省高等高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷二级C语言(本试卷完成时间70分钟)一改错题(16分)【程序功能】函数dtoh实现将参数num的值表示为一个十六进制形式的字符串,并将该字符串存储在一个动态申请的存储区内,函数返回动态存储区的起始地址。【测试数据及运行结果】输入:1234输出:4d2含有错误的源程序#includestdio.h#includestdlib.hchardtoh(unsignednum){chardigits[]=”0123456789abcdef”;char*s;intn=0;unsignedun=num;while(un){n++;un/=16;}s=(char*)malloc((n+1)*sizeof(char));if(s==null){printf(“Memoryrequestfailed!\n”);exit(1);}s[n--]=”\0”;while(num){s[n--]=digits[num/16];/*取一位十六进制数字字符*/num/=16;}returns;}voidmain(){char*p;unsignedn;scanf(“%u”,&n);p=dtoh(n);printf(“%s”,p);free(p);getch();}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。43.改正后的源程序(文件名myf1.c)保存在T:盘根目录共阅卷使用,否则不予评分。二、编程题(24分)【程序功能】在给定的范围内查找并输出所有满足以下条件的整数对(a,b)及与(a,b)关联的反序数对(c,d):(1)a小于b:(2)a和b的十进制表示均是三位数且各位上的数字互不相同;(3)a的反序数(记作c)和b的反序数(记作d)也都是三位数并且a×b等于c×d。例如,与整数对(302,406)关联的反序数对是(203,604),302×406=203×604,因此(302,406)是满足上述条件的整数对。【编程要求】1.编写函数intfind(intx[][4],intm,intn)实现以下功能:若m和n的十进制表示不是三位数则函数返回0。否则,将取值在[m,n]范围内所有满足上述条件的整数对以及与这些整数对关联的反序数对保存到x指向的二维数组中,函数返回x数组中保存的数据行数。2.编写函数main实现以下功能:声明一个100行4列的二维数组a,用a数组作实参调用find函数在[300,450]范围内查找,将找到的满足上述条件的整数对及关联的反序数对保存到a数组。按以下格式将a数组中数据输出到屏幕及文件myf2.out中。最后将考生本人准考证输出到文件myf2.out中。【测试数据与运行结果】输出:301*309=103*903302*406=203*604304*403=403*304306*402=603*204312*426=213*624314*413=413*314321*369=123*963324*423=423*324402*408=204*804412*428=214*824【要求】1.源程序文件为myf2.c,输出结果文件名myf2.out。2.数据文件的打开、使用、关闭均使用C语言标准库中缓冲文件系统操作函数实现。3.源程序文件和运行结果均需要保存T:盘根目录中供阅卷使用。4.不要复制扩展名为obj和exe的文件到T:盘中。53江苏省高等高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷二级C语言(本试卷完成时间70分钟)一、改错题(16分)【程序功能】对一个二维数组中的数据排序。排序规则如下:将整个数组中值最小的元素所在行调整为数组第1行(行下标为0),将除第1行外剩余行中值最小的元素所在行调整为数组第2行,将除第1、2行外剩余行中值最小的元素所在行调整为数组第3行,其他依此类推。【测试数据与运行结果】数组初始化数据:输出:34568210821012345432543212343456【含有错误的源程序】#include“stdio.h”intgetmin(inta[],intn){inti,min=a[0];for(i=1;in;i++)if(a[i]min)min=a[i];returnmin;}voidlineswap(inta[],intb[],int*n){inti,t;for(i=0;in;i++){t=a[i];a[i]=b[i];b[i]=t;}}voidmain(){inta[4]={{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(a[j],4)getmin(a[i],4)lineswap(a[j],,inta[i],4);}}for(i=0;i4;i++){for(j=0;j4;j++)printf(“%d“,a[i][j]);printf”\n”);}getch();}6【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。3.改正后的源程序(文件名为myf1.c)保存在T:盘根目录中功阅卷使用,否则不予评分。二、编程题(24分)【程序功能】计算由两个整数生成的两个合法代码的码距。这里的合法代码定义为由16个二进制数字字符组成的字符串。例如“0000000000100101”是一个合法代码。码距是指两个合法代码中对应位数字字符不同的位数。例如,合法代码”0000000000100101”和”0000000000001110”自又向左1、2、4、6位上具有不同数字字符,因此这两个合法代码的码距为4。【编程要求】1.编写函数inthamming(intx,inty,chara[],charb[])实现以下功能:先将形参x和y分别转换为2个合法代码并按从低位到高位的顺序分别保存2个合法代码到a和b指向的数组中(不足16位时高位补字符0)再计算a数组和b数组中的两个合法代码的码距,函数返回该码距。2.编写函数main实现以下功能:声明字符数组a、b和变量m、n,输入两个整数并保存到m和n中,若m、n的值在0~32767范围内则用m、n和数组a、b作实参调用hamming函数,计算由m和n生成的两个合法代码的码距,将a、b数组中存储的合法代码及这两个代码的码距输出到屏幕及文件myf2.out中。最后将考生本人的准考证输出到文件myf2.out中。.【测试数据与运行结果】输入:m=16n=38输出:a:0000000000010000b:0000000000001000distanceof16and8is2【要求】1.源程序文件为myf2.c,输出结果文件名myf2.out。2.数据文件的打开、使用、关闭均使用C语言标准库中缓冲文件系统操作函数实现。3.源程序文件和运行结果均需要保存T:盘根目录中供阅卷使用。4.不要复制扩展名为obj和exe的文件到T:盘中。74江苏省高等高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷二级C语言(本试卷完成时间70分钟)一、改错题(16分)【程序功能】将一个实数转换为二进制科学计数法表示并输出。二进制科学记数法是指将一个绝对值大于2或者小于1的实数记为a×2±n形式,其中尾数a是用二进制表示的实数且1≤|a|2,指数中的n是用二进制表示的整数。例如:0.125的科学计算法表示是1.0×2-11若用B代表基数2,则a×2±n可表示为aB±n的形式。例如,1.0×2-11表示1.0B-11。【测试数据与运行结果】第一次运行时输入:0输出:0.0B0第二次运行时输入:0.125输出:1.0B-11第三次运行时输入:315
本文标题:江苏等级考试二级C语言上机真题汇编
链接地址:https://www.777doc.com/doc-2281276 .html