2010~2012年江苏省计算机二级C上级考试试题及答案上机
- 格式:doc
- 大小:102.50 KB
- 文档页数:14
2010年(秋季)江苏省计算机等级考试二级笔试试卷C语言程序设计(考试时间120分钟,满分60分)一、选择题((1)~(30)每小题1分,共30分)1.微电子技术是信息技术领域中的关键技术,它以集成电路为核心.下列有关集成电路的敘述中,错误的是A.现代集成电路使用的半导体材料只能是硅(si),不能使用其它任何半导体材料B.集成度是指集成电路包含的电子元件数目,可分为SSI、MSI、VLSI等C.moore定律指出,单块集成电路的集成度平均18~24个月翻一番D.我国第二代身份证中嵌入了集成电路芯片,可以实现电子防伪和数字管理功能2. 数据传输速率是数据通信中重要的性能指标。
Gb/s是数据传输速率的计量单位之一,其正确含义是A.每秒兆位B.每秒千兆位C.每秒百兆位D.每秒百万位3,所谓"变号操作"是指格一个整数变成绝对值相同但符号相反的另一个整数。
假设使用补码表示的8位整数x=,则经过变号操作后结果为A. B. C. D.4. 下列有关PC机主拔的敘述中,错误的是A.主板的物理尺寸没有标准,各厂家均可自行定义B.主板上包含芯片组,它是PC机各组成部分相互连接和通信的枢纽C.主拔上包含BIOS和CMOS芯片D.主板上包含CPU插座、内存条插槽及其他类型的插槽5. 下列有关PC机中央处理器(CPU)和内存(内存条)的叙述中,正确的是A.PC机所采用的CPU都是intel公司生产的pentium系列芯片,其它厂商生产的CPU都与之不兼容B.目前已有双核的微处理器(例如Core2Duo),但还没有四核的微处理器C.通常来说,DRAM的速度比SRAM的存取速度慢D.一般来说,一个内存条上仅有一个DRAM或SRAM芯片6. 下列有关PC机I/O总线与I/O接口的叙述中,错误的是A. 目前PC机中协调与管理总线操作的总线控制器包含在主板上的芯片组中B.总线最重要的性能是数据传输率,其单位通常为MB/s或GB/sC.SATA接口的数据传输速率通常低于USB2.0的数据传输速率D.UCB连接器有4个引脚,其中一个脚引连接+5V电源7. 下列有关PC机常用I/0设备的叙述中,错误的是A.目前台式机键盘通常有一百零几个按键,笔记本电脑的键盘有八十几个按键B.目前流行的鼠标是光电鼠标,其与主机的接口有PS/2与USB两种C.宽屏LCD显示器的宽高比为16:9或16:10D.打印速度是打印机的重要性能指标,速度单位通常为dpi8. 下列有关PC机外存储器的叙述中,错误的是A.目前的硬盘片大多为35、25或1.8英寸,一个硬盘中可有一个或多个盘片B.目前有些U盘可以模拟硬盘和光盘存储器启动操作系统C.目前光盘存储器主要分为CD、DVD和BD三种,它们均采用红外激光进行读写D.目前光驱的速率通常用多少倍速表示9.下列有关计算机软件的叙述中,错误的是A.软件一般是指程序及其相关的数据和文档资料B.从软件的用途考虑,软件可分为系统软件和应用软件,主要的系统软件有操作系统、语言处理系统和数据库处理系统等。
2010年计算机等级考试二级C语言上机习题汇总一、改错题【分析】:改错题的错误一般可分为两类,一类是语法错误,这类错误可通过调试程序改正,较容易;另一类是逻辑错误,这类错误程序能运行,但结果不正确,这类错误相对较难,修改前必须要看懂和理解程序。
#include"stdio.h"#define n 4 #define m 3 /*语法错,#define m 3需另起一行*/int a[n][m],s[m];p(int j)/*此函数的功能为:找出a数组中第j列的最小元素的值及行号,函数成功运行后,i中即为j列的最小元素的行号,s[j]中即为j列的最小元素的值*/{intk,i,x;x=a[0][j];i=0; /*逻辑错,从函数的功能可知,a[0][j]也应赋值给s[j],所以x=a[0][j]应改为s[j]=x=a[0][j]*/for(k=1;k<N;K++)< p>if(a[k][j]<X)< p>{i=k;s[j]=x=a[k][j];}return i;}main(){int index[m],i,j,k;for(i=0;i<N;I++)< p>for(j=0;j<M;J++)< p>scanf("%d",a[i][j]);/*语法错,但编译时不会报错,scanf语句的一般形式为scanf(格式控制,地址表列),所以a[i][j]应改为&a[i][j])*/for(j=0,j<M;J++)< p>printf("a[%d,%d]=%d\n",index[j],j,s[j]);}i=s[1];k=0; /*逻辑错,数组s中存放的是a数组中每一列的最小值,比较时应从数组的第0个元素开始,而下面的for循环是从第1个元素开始的,所以i=s[1]应改为i=s[0]*/for(j=1;j<>if(s[j]<I)< p>{i=s[j];k=j;}printf("min=a[%d,%d]=%d",index[k],k,i); }二、编程题【分析】:本题的主要功能是建立一个3行8列的二维数组,并给其元素赋值,其中第1、2行的值可通过递推公式xi+1=(25*xi+357)%1024得到,第三行的值取前两行同列元素的最大公约数,所以编程时可用一个函数来实现求公约数的算法。
2012年9月全国计算机考试上机题库100套第01套:给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
例如,输入一个数:27638496,新的数:为739。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include <stdio.h>void fun(unsigned long *n){ unsigned long x=0, i; int t;i=1;while(*n){ t=*n % __1__;if(t%2!= __2__){ x=x+t*i; i=i*10; }*n =*n /10;}*n=__3__;}main(){ unsigned long n=-1;while(n>99999999||n<0){ printf("Please input(0<n<100000000): "); scanf("%ld",&n); }fun(&n);printf("\nThe result is: %ld\n",n);}解题思路:第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。
第二处:判断是否是奇数,所以应填:0。
第三处:最后通形参n来返回新数x,所以应填:x。
给定程序MODI1.C中函数fun 的功能是:计算n!。
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include <stdio.h> double fun ( int n ){ double result = 1.0 ;if n = = 0return 1.0 ;while( n >1 && n < 170 )result *= n--return result ;}main ( ){ int n ;printf("Input N:") ;scanf("%d", &n) ;printf("\n\n%d! =%lf\n\n", n,fun(n)) ;}解题思路:第一处:条件语句书写格式错误,应改为:if (n==0)。
江苏省计算机二级c语言机考试题及答案一、选择题1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级语言B. C语言是一种面向过程的语言C. C语言源于B语言D. C语言是一种解释型语言答案:D. C语言是一种解释型语言2. 在C语言中,可以用于定义宏的命令是:A. #ifB. #defineC. #includeD. #endif答案:B. #define3. 在C语言中,标识符的命名规则中,不允许使用的符号是:A. 下划线(_)B. 感叹号(!)C. 加号(+)D. 美元符号($)答案:B. 感叹号(!)4. C语言中的运算符中,以下优先级最高的是:A. 关系运算符B. 逻辑运算符C. 赋值运算符D. 算术运算符答案:C. 赋值运算符5. 下列程序中,有语法错误的是:A.```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```B.```c#include <stdio.h>int main() {printf("Hello, World!\n") return 0;}```C.```c#include <stdio.h>int main() {printf("Hello, World!\n"); return;}```D.```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;```答案:B.```c#include <stdio.h>int main() {printf("Hello, World!\n")return 0;}```二、填空题1. 下列程序的输出结果是______:```c#include <stdio.h>int main() {int a = 5;printf("%d", a++);printf("%d", ++a);return 0;}```答案:562. 下列程序的输出结果是______:```c#include <stdio.h>int main() {int a = 2;int b = 3;int c = a | b;int d = a & b;printf("%d\n", c);printf("%d\n", d);return 0;}```答案:3, 2三、编程题编写一个程序,输出1~100之间所有能同时被3和5整除的数,并计算这些数的平均值。
计算机二级C上机考试题库及答案一、单项选择题(每题1分,共10分)1. 在C语言中,以下哪个选项是正确的字符串定义方式?A. char str[] = "Hello, World!";B. char str[] = {'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};C. char str[] = {"Hello, World!"};D. char str[] = "Hello, World!";答案:A2. 下列哪个函数用于将字符串s1复制到s2中?A. strcat(s1, s2);B. strcpy(s1, s2);C. strcmp(s1, s2);D. strncpy(s1, s2, n);答案:B3. 在C语言中,以下哪个关键字用于声明一个函数?A. intB. voidC. returnD. function答案:A4. 如果一个变量被声明为static int,那么这个变量的生命周期是?A. 只在函数调用期间B. 程序运行期间C. 只在程序启动时D. 只在程序结束时答案:B5. 在C语言中,以下哪个运算符用于计算两个整数的差?A. +B. -C. *D. /答案:B6. 以下哪个选项不是C语言中合法的标识符?A. _myVarB. my_varC. 2ndVarD. var$name答案:C7. 在C语言中,以下哪个选项是正确的数组定义方式?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5] = {1, 2, 3};D. int arr[] = {1, 2, 3, 4};答案:A8. 以下哪个选项是正确的C语言注释方式?A. /* This is a comment */B. // This is a commentC. //* This is a commentD. /* This is a comment */答案:A9. 在C语言中,以下哪个选项是正确的多行字符串定义方式?A. char str[] = "Line1\nLine2";B. char str[] = 'Line1\nLine2';C. char str[] = "Line1\nLine2";D. char str[] = "Line1\nLine2";答案:A10. 在C语言中,以下哪个选项是正确的结构体定义方式?A. struct Student {int id;char name[50];};B. struct Student {int id;char name[];};C. struct Student {int id;char name[50] = "John Doe";};D. struct Student {int id;char name[];};答案:A二、填空题(每题2分,共20分)1. 在C语言中,使用________运算符可以对变量进行自增操作。
江苏省计算机c语言二级考试试题及答案一、选择题(每题2分,共40分)1. 下列哪个选项是C语言中合法的变量名?A. 2variableB. variable2C. variable-nameD. variable name答案:B2. 在C语言中,以下哪个关键字用于声明函数?A. classB. functionC. voidD. int答案:D3. 若有以下代码片段:```cint a = 3, b = 5;printf("%d", a + b);```输出结果是什么?A. 8B. 35C. 53D. 3+5答案:A4. 在C语言中,哪个运算符用于计算两个数的乘积?A. +B. -C. *D. /答案:C5. 以下哪个选项是C语言中合法的数组声明?A. int array[10];B. int array[];C. int array[10][];D. int array[10][10];答案:A6. C语言中,哪个函数用于输入一个字符?A. scanf()B. getchar()C. printf()D. puts()答案:B7. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. %D. +=答案:A8. 在C语言中,哪个关键字用于声明一个结构体?A. structB. unionD. typedef答案:A9. 若有以下代码片段:```cint x = 10;printf("%d", x++);```输出结果是什么?A. 10B. 11C. 9D. 无法确定答案:A10. 在C语言中,哪个函数用于输出一个字符串?A. scanf()B. printf()C. gets()D. puts()答案:D11. 下列哪个选项是C语言中合法的指针声明?A. int *pointer;B. int pointer[];C. int pointer[10];D. int *pointer[10];答案:A12. 在C语言中,哪个关键字用于声明一个枚举?B. unionC. structD. typedef答案:A13. 若有以下代码片段:```cint a = 10, b = 20;printf("%d", a > b ? a : b);```输出结果是什么?A. 10B. 20C. 30D. 无法确定答案:B14. 在C语言中,哪个函数用于计算两个数的绝对值?A. abs()B. fabs()C. sqrt()D. pow()答案:A15. 下列哪个选项是C语言中合法的函数声明?A. int function();B. void function();C. int function(int x);D. All of the above答案:D16. 在C语言中,哪个关键字用于声明一个联合体?A. unionB. structC. enumD. typedef答案:A17. 若有以下代码片段:```cint a = 10, b = 20;printf("%d", a < b ? a : b);```输出结果是什么?A. 10B. 20C. 30D. 无法确定答案:A18. 在C语言中,哪个函数用于计算两个数的指数?A. pow()B. sqrt()C. fabs()D. abs()答案:A19. 下列哪个选项是C语言中合法的宏定义?A. #define PI 3.14159B. #define PI = 3.14159C. #define PI "3.14159"D. #define PI 3.14159答案:A20. 在C语言中,哪个关键字用于声明一个宏?A. defineB. macroC. constD. typedef答案:A二、填空题(每题2分,共20分)1. C语言中,用于定义一个整型变量的关键字是________。
江苏计算机等级考试二级C语言上机真题2012年10月(总分:40.00,做题时间:70分钟)1.改错题【程序功能】函数fun的功能是将str所指向的一行包含若干单词的文本(单词之间用空格隔开)依次拆分成长度不超过20个字符的若干文本行,单词不跨行,且使拆分出的行数最少,再将拆分出的每行字符以字符串的形式存储到page指向的二维数组的一行中,函数返回拆分出的行数【测试数据与运行结果】测试数据:A great discovery solves a greate problem. 屏幕输出: A great disconvery solves a great problem 【含有错误的源程序】以下源程序已保存在T盘myf1.c文件内,考生可直接打开该文件调试程序#include #include #include int fun(char str[],char pag[][]) {int i,k=0,j,flag=1; while(*str && flag) {if(strlen(str)(分数:14.00)__________________________________________________________________________________________ 正确答案:((1) char pag[][] 改为 char pag[][21] (2) pag[k]=str; 改为 strcpy(pag[k],str) (3) pag[k][j]=str[i] 修改为 pag[k][j]=str[j] (4) char str[80]={A great discovery solves a great problem.}; 修改为char str[80]={“A great discovery solves a great problem.”};)解析:2.编程题(24分) 【程序功能】寻找所有水仙花数(水仙花数是指一个三位数中各位数字的立方之和等于该三位数自身。
2012秋江苏省计算机二级C考试真题及答案-副本2012秋江苏省计算机二级C考试真题2012秋江苏省计算机二级C考试真题本试卷的视频请登录/doc/bc14166376.html,查看绝密★启用前2012年秋江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试二级试卷试卷语种:C语言说明:1.本试卷包括计算机基础知识部分和程序设计部分,考试时间共12 0分钟;2.本试卷满分为60分,分选择题和填空题,试卷不分A、B类型;3.计算机基础知识部分全部是选择题(20分),程序设计部分分为选择题(1 0分)和填空题(30分)两种;4.选择题用答题卡答题。
每一项有A、B、C、D四个可供选择的答案,请选择其中一个你认为正确的答案,用HB铅笔涂写在答题卡的相应答题号内。
每选对一项得1分,不选或选错不得分;5.填空题用答题纸答题。
请将答案用蓝、黑色钢笔或圆珠笔填写在答题纸的相应答题号内,每个答案只占一行,不得换行。
每填对一个答案得1分,不填或填错不得分;6.请认真填写并仔细核对答题卡和答题纸上的学校名称、准考证号和姓名是否填写正确。
7.考试结束时将试卷、答题卡和答题纸放在桌上,不得带走。
待监考人员收毕清点后,方可离场。
第一部分计算机基础知识一、选择题(用答题卡答题,答案依次填在1--20题号内)1.下列关于信息、信息技术、信息产业与信息化的叙述中。
错误的是___1___ 。
A.世间一切事物都在运动,都具有一定的运行状态,因而都在产生信息B.现代信息技术的主要特征之一是以数字技术为基础C.信息产业特指利用信息设备进行信息处理与服务的行业,它不包括任何生产制造行业D.信息化是一个推动人类社会从工业社会向信息社会转变的社会转型的过程2.下列关于数字技术与微电子技术的叙述中,错误的是___2___ 。
A.数字技术的处理对象是"比特",它只有两种取值,即数字0和数字1B.数据通信和计算机网络中传输二进制信息时,传输速率的度量单位通常为B/s、KB/s、MB/s等C.微电子技术是实现电子电路和电子系统超小型化及微型化的技术,它以集成电路为核心D.Intel公司创始人之一摩尔曾发表论文预测,单块集成电路的集成度平均每18~24个月翻一番3.以下选项中,数值相等的一组数是___3___ 。
2010秋江苏省计算机二级C++上机1(总分:40.00,做题时间:70分钟)1.改错题(20分) 【题目】以下程序的功能是:根据字符串str中是否包含子串substr,决定如何将字符串str1插入到str的不同位置。
插入方法是:如果str中包含子串substr,则将str1插入到str中首次出现的子串substr之后;否则,插入到str的尾部。
正确程序的输出如下: 原字符串:aabcd12345 子字符串:abcd 插入字符串:ABC 新字符串:aabcdABC12345 含有错误的源程序如下: #include #include char *find(char *str,char *substr) { unsigned lent=strlen(str); for(char*p1=str,*p2=substr;strlen(p1)>=len;p1++){ for(unsigned i=0;ilen) return p1+len; } return 0; } char *insert(char *str,char *substr,char *str1) { char p=find(str,substr); if(p)strcat(str,str1); else{ char *tmp=new char[strlen(str)+strlen(str1)+1]; strcpy(tmp,str1) strcat(tmp,p); strcpy(p,tmp); delete []tmp; } return str; } void main() { char *str=newchar[80],substr[]="abcd",str1[]="ABC"; strcpy(str,"aabcdl2345"); ’ co ut<<"原字符串:"<<str<<"子字符串:"<<substr<<"插入字符串:"<<str1<<<"新字符串:"<<str<(分数:20.00)__________________________________________________________________________________________正确答案:( unsigned len=strlen(str); str改为substr if(i>len) 改为i>=len char p=find(str,substr); char p改为char *p if(p) p改为p==0或!p)解析:2.编程题(20分) 【题目】试定义一个类Array,将4行5列二维数组的各列前3个元素依次拼接成一个整数,再将该整数赋值给相应列的最后一个元素。
江苏省计算机等级考试二级C上机考试模拟试题试题 1一、改错题(18分)【题目】函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上各元素之和,返回此和数。
含有错误的程序如下:#include <conio.h>#include <stdio.h>#define M 5int fun(int n,int xx[][]){ int i,j,sum;printf("\nThe %d x %d matrix:\n",M,M);for(i=0;i<M;i++){ for(j=0;j<M;j++)printf("%f",xx[i][j]);printf("\n");}for(i=0;i<n;i++)sum+=xx[i][i]+xx[i][n-i];return(sum);}main( ){int aa[M][M]={ {1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};clrscr( );printf ("\nThe sum of all elements on 2 diagnals is %d.",fun(M,aa));}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译处理命令,但不能增加其他语句,也不能删去整条语句。
3.改正后的源程序(文件名myf1.c)必须放在考试软盘的根目录下,供阅卷用,否则不予评分。
二、编程题(22分)【题目】1.编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符平移到字符串的最后,把第m+1到最后的字符串移到字符串的前部。
2012春江苏省高校计算机等级考试二级C语言上机试卷1(本试卷完成时间为70分钟)一、改错题(16分)【程序功能】以下程序中函数void csort(char str[][N],int n)对str指向的二维数组前n行中存储的n个字符串分别作如下处理:从中间将字符串一分为二,左半部分字符子串按字符的ASCII码值从大到小排序(若字符串的长度为奇数,则中间字符不参加排序)。
【测试数据与运行结果】测试字符串:"abcdefgh","123498765"屏幕输出:dcbaefgh432198765【含有错误的源程序】以下源程序已保存在T盘myf1.c文件内,考生可直接打开该文件的调试程序。
1 #include<stdio.h>2 #include<string.h>3 #include<conio.h>4 #define N 805 void csort(char str[][N],int n);6 void main()7 {char s[2][N]="abcdefgh","123498765";8 int i;9 csort(s,2);10 for(i=0;i<2;i++)11 puts(s);12 getch();13 }14 void csort(char str[][N],int n)15 { int i,j,k,len,half;16 char temp;17 for(i=0;i<n;i++)18 {len=strlen(str[i][0]);19 half=len/2;20 for(j=0;j<half-1;j++)21 for(k=j+1;k<half-1;k++)22 if(str[i][j]<str[i][k])23 {temp=str[i][j];24 str[i][j]=str[i][k];25 str[i][k]=temp;26 }27 }28 }【要求】1.打开T盘中myf1.c文件或将上述程序录入到myf1.c文件中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
3.将改正后的源程序(文件名myf1.c)保存在T盘中供阅卷使用,否则不予评分。
二、编程题(24分)【程序功能】对于所给的一个自然数n,查找并输出所有满足以下条件的等差数列:(1)公差为1;(2)数列中各项数值之和等于n。
【编程要求】1.编写函数int found(int a[][30],int n)。
函数的功能:查找满足上述条件的所有等差数列并依次将其保存到a指向的数组中(一行保存一个数列),函数返回找到的数列个数。
2.编写函数main()。
函数的功能:声明一个二维整型数组用于保存查找结果,输入一个整数并保存到变量n中(n≤600)。
用n和整型数组作实参调用found函数,将找到的所有等差数列输出到屏幕及数据文件myf2.out中。
最后将考生本人的准考证号输出到文件myf2.out中。
【测试数据与运行结果】输入:n=500屏幕输出:8 9 10 11 12 13 14 15 16 17 18 19 20 2l 22 23 24 25 26 27 28 29 30 31 3259 60 6l 62 63 64 65 6698 99 100 101 102500【要求】1.源程序文件名为myf2.c,输出结果文件名为myf2.out。
2.数据文件的打开、使用、关闭均用C语言标准库中的文件操作函数实现。
3.源程序文件和运行结果文件均需保存在T盘中供阅卷使用。
4.不要复制扩展名为obj和exe的文件到T盘中。
参考答案一、改错题第7行 {char s[2][N]="abcdefgh","123498765"; 改为{"abcdefgh","123498765"}第11行 puts(s); 改为puts(s[i])第18行 {len=strlen(str[i][0]); 改为str[i]第21行 for(k=j+1;k<half-1;k++) 改为k<half二、编程题#include<stdio.h>#include<conio.h>int found(int a[][30],int n) ’{ int i,k=0,s=0,j,count,l=0;for(i=1;i<=n;i++){ for(s=0,j=i;s<n;j++)s=s+j;if(s==n){count=0;for(k=i;k<j;k++)a[1][count++]=k;l++;}}return l;}void main(){int i,j,n,m,a[10][30]={0};FILE *fp;fp=fopen("myf2.out","w");printf("input n:");scanf("%d",&n);m=found(a,n);for(i=0;i<m;i++){for(j=0;a[i][j];j++){printf("%d",a[i][j]);fprintf(fp,"%d",a[i][j]);printf("\n");fprintf(fp,"\n");}fprintf(fp,"My exam number is:0012400124"); fclose(fp); getch();}2011春江苏省二级C上机考试真题第2套江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷(2011年春)二级C语言 (试卷代号C02)(本试卷完成时间70分钟)一、改错题(16分)【程序功能】统计一个字符串中包含的字母串个数并找出其中最长的字母串。
所谓字母串是指一个连续的字母序列(不区分大小写),字母串之间用非字母字符分隔。
函数count的功能是统计p指向的字符串中包含的字母串个数,找出的最长字母串存放在pmax指向的数组中,函数返回字母串的个数。
【测试数据与运行结果】测试数据:you are teaeher234too.屏幕输出:a=you are teacher234too.number is 4max string is:teacher【含有错误的源程序】#include <stdio.h>#include <string.h>#include <ctype.h>int count(char p[],char pmax[]){ int j=0,k,m=0;char temp[100];while(*p){ while((!isalpha(*p)) && *p) p++;k=0;if(*p!='\0') m++;while(isalpha(*p))temp[k++]=*p++;temp[k]="\0";if(k<j){ j=k;pmax=temp;}}return m;}void main(){ char a[100]="you are teacher234too.",max[100];int i;i=count(a[],max[]);if(i==0)printf("a=%S: No letter strings!\n",a);elseprinff("a=%s\nnumber is %d\nmax string is:%s\n",a,i,max);}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
3.改正后的源程序(文件名myf1.c)保存在T:盘根目录中供阅卷使用,否则不予评分二、编程题(24分)【程序功能】将一个二维数组中的若干行数据按要求插入到另一个二维数组中。
【编程要求】1.定义符号常量N代表42.编写函数int insert_row(int a[][N],int n,int b[][N],int m)。
已知形参a指向的二维数组(简称a数组)前n行数据已按每行数据之和升序排列,形参b指向的二维数组中有m行数据。
insert_row函数实现将b数组中m行数据插入到a数组中,完成插入操作后a数组中所有行的数据仍按每行数据之和升序排列。
函数返回a数组中有效数据的行数。
3.编写main函数。
函数功能是声明两个二维数组x和y并用测试数据初始化,用x和y数组作为实参调用insert_row函数将y数组中的两行数据插入到x数组中。
输出x数组中全部数据到屏幕及文件myf2.out中。
最后将考生本人的准考证号字符串输出到文myf2.out中。
【测试数据与运行结果】测试数据:x数组原数据:2 23 49 10 11 12y数组数据:1 3 5 75 10 15 20屏幕输出:2 23 41 3 5 79 10 11 125 10 15 20【答案】改错1:将第13行 "temp[0]="\0" 修改为 temp[0]='\0'改错2:将第 14行 if(k<j) 修改为 if(k>j)改错3:将第16行 pmax=temp,修改为 strcpy(pmax,temp);改错4:将第24行i=count(a[],max[])修改为i=count(a,max);2011春江苏省计算机二级C上机真题1二级C语言上机试卷(本试卷完成时间为70分钟)一、改错题(16分)【程序功能】对存储在string数组内的英文句子中所有以a开始并以e结尾的单词做加密处理。
加密规则:若单词长度为偶数个字符,则将组成该单词的所有字母循环左移一次;否则循环右移一次。
例如,单词able经循环左移一次后变为blea;单词abide经循环右移一次后变为eabid。
【测试数据与运行结果】测试数据:she is able to abide her.屏幕输出:she is blea to eabid her.【含有错误的源程序】#include <stdio.h>#include <ctype.h>void wordchange(char str[]){ int i,j,k,m;char c;for(i=0;str[i];i++){for(j=i,k=i;isalpha(str[k]);k++);if(str[j]=='a' || str[k-1]=='e'){if((k-j)%2=0){c=str[j];for(m=k-1;m>j;m--)str[m]=str[m+1];str[k-1]=c;}else{c=str[k-1];for(m=k-1;m>j;m--)str[m]=sty[m-1];str[j]=c;}}i=k;} 。