2010~2012年江苏省计算机二级C上级考试试题及答案上机
- 格式:doc
- 大小:102.00 KB
- 文档页数:13
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整除的数,并计算这些数的平均值。
2010年9月全国计算机二级C语言笔试试题(11)以下关于结构化程序设计的叙述中正确的是A)一个结构化程序必须同时由顺序、分支、循环三种结构组成B)结构化程序使用goto语句会很便捷C)在C语言中,程序的模块化是利用函数实现的D)由三种基本结构构成的程序只能解决小规模的问题(12)以下关于简单程序设计的步骤和顺序的说法中正确的是A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构(13)以下叙述中错误的是A) C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数(14)有以下定义:int a; long b;double x,y;则以下选项中正确的表达式是A)a%(int)(x-y)B)a=x!=y;C)(a*y)%bD)y=x+y=x(15)以下选项中能表示合法常量的是A)整数:1,200B)实数:1.5E2.0C )字符斜杠:‘\’D)字符串:"\007" (16)表达式a+=a-=a=9的值是A)9B)_9C)18D)0(17)若变量已正确定义,在if (W)printf (“%d\n,k”);中,以下不可替代W的是A)a<>b+cB)ch=getchar()C)a==b+cD)a++(18)有以下程序#include<stdio.h>main(){int a=1,b=0;if(!a) b++;else if(a==0)if(a)b+=2;else b+=3;printf(”%d\n”,b);}程序运行后的输出结果是A)0B)1C)2D)3(19)若有定义语句int a, b;double x;则下列选项中没有错误的是A)switch(x%2) B)switch ((int)x/2.0{case 0: a++;break; {case 0: a++; break;case 1: b++;break; case 1: b++; break;default : a++;b++; default : a++; b++;}}C)switch((int)x%2) D)switch((int)(x)%2){case 0: a++;break; {case 0.0: a++; break;case 1: b++;break; case 1.0:b++; break;default : a++;b++; default : a++; b++;}}(20)有以下程序#include <stdio.h>main(){int a=1,b=2;while(a<6){b+=a;a+=2;b%二10;}printf(”%d,%d\n”,a,b);}程序运行后的输出结果是A)5,11B)7,1C)7,11D)6,1(21)有以下程序#include<stdio.h>main(){int y=10;while(y--);printf(”Y=%d\n”,Y);}程序执行后的输出结果是A)y=0B)y= -1C)y=1D)while构成无限循环(22)有以下程序#include<stdio .h>main(){char s[」=”rstuv";printf(”%c\n”,*s+2);}程序运行后的输出结果是A)tuvB)字符t的ASCII码值C)tD)出错(23)有以下程序#include<stdio.h>#include<string.h>main(){char x[]=”STRING”;x[0」=0;x[1]=’\0’;x[2」=’0’;printf(”%d %d\n”,sizeof(x),strlen (x));}程序运行后的输出结果是A)6 1B)7 0C)6 3D)7 1(24)有以下程序#include<stdio.h>Int f(int x);main(){int n=1,m;m=f(f(f(n)));printf(”%d\n”,m);}int f(int x){return x*2;}程序运行后的输出结果是A)1B)2C)4D)8(25)以下程序段完全正确的是A)int *p; scanf("%d",&p);B)int *p; scanf(“%d”,p);C)int k, *p=&k; scanf("%d",p);D)int k, *p:; *p= &k; scanf(“%d”,p);(26)有定义语句:int *p[4];以下选项中与此语句等价的是A)int p[4];B)int **p;C)int *(p「4」);D)int (*p)「4」;(27)下列定义数组的语句中,正确的是A)int N=10;B)#define N 10int x[N]; i nt x[N];C)int x[0..10]; D)int x[];(28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是A)int a[5]=﹛0﹜;B)int b[]={0,0,0,0,0};C)int c[2+3];D)int i=5,d[i];(29)有以下程序#include<stdio.h>void f(int *p);main(){int a[5]={1,2,3,4,5},*r=a;f(r);printf(”%d\n”;*r);}void f(int *p){p=p+3;printf(”%d,”,*p);}程序运行后的输出结果是A)1,4B)4,4C)3,1D)4,1(30)有以下程序(函数fun只对下标为偶数的元素进行操作)# include<stdio.h>void fun(int*a;int n){int i、j、k、t;for (i=0;i<n一1;1+=2){k=i;‘for(j=i;j<n;j+=2)if(a[j]>a〔k])k=j;t=a〔i];a〔i]=a[k];a〔k]=t;}}main(){int aa「10」={1、2、3、4、5、6、7},i;fun(aa、7);for(i=0,i<7; i++)printf(”%d,”,aa [i]));printf(”\n”);}程序运行后的输出结果是A)7,2,5,4,3,6,1B)1,6,3,4,5,2,7C)7,6,5,4,3,2,1D)1,7,3,5,6;2,1(31)下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST"要求的是A)if(strcmp(s2,s1)==0)ST;B)if(sl==s2)ST;C)if(strcpy(s l ,s2)==1)ST;D)if(sl-s2==0)ST;(32)以下不能将s所指字符串正确复制到t 所指存储空间的是A)while(*t=*s){t++;s++;}B)for(i=0;t[i]=s[i];i++);C)do{*t++=*s++;}while(*s);D)for(i=0,j=0;t[i++]=s[j++];);(33)有以下程序( strcat函数用以连接两个字符串)#include<stdio.h>#include<string .h>main(){char a[20]=”ABCD\OEFG\0”,b[]=”IJK”;strcat(a,b);printf(”%s\n”,a);}程序运行后的输出结果是A)ABCDE\OFG\OIJKB)ABCDIJKC)IJKD)EFGIJK(34)有以下程序,程序中库函数islower (ch)用以判断ch中的字母是否为小写字母#include<stdio.h>#include<ctype.h>void fun(char*p){int i=0;while (p[i]){if(p[i]==’ ’&& islower(p「i-1」))p[i-1]=p[i-1]-‘a’+‘A’;i++;}}main(){char s1[100]=”ab cd EFG!”;fun(s1); printf(”%s\n”,s1);}程序运行后的输出结果是A)ab cd EFG!B)Ab Cd EFg!C)aB cD EFG!D)ab cd EFg!(35)有以下程序#include<stdio.h>void fun(int x){if(x/2>1)fun(x/2);printf(”%d”,x);}main(){fun(7);printf(”\n”);}程序运行后的输出结果是A)1 3 7B)7 3 1C)7 3D)3 7(36)有以下程序#include<stdio.h>int fun(){static int x=1;x+=1;return x;}main(){int i;s=1;for(i=1;i<=5;i++)s+=fun();printf(”%d\n”,s);}程序运行后的输出结果是A)11B)21C)6D)120(37)有以下程序#inctude<stdio.h>#include<stdlib.h>Main(){int *a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}程序运行后的输出结果是A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3(38)有以下程序#include<stdio.h>main(){int s,t,A=10;double B=6;s=sizeof(A);t=sizeof(B);printf(“%d,%d\n”,s,t);}在VC6平台上编译运行,程序运行后的输出结果是A)2,4 B)4,4 C)4,8 D)10,6(39)若有以下语句Typedef struct S{int g; char h;}T;以下叙述中正确的是A)可用S定义结构体变量B)可用T定义结构体变量C)S是struct类型的变量D)T是struct S类型的变量(40)有以下程序#include<stdio.h>main(){short c=124;c=c_______;printf(“%d\n”、C);}若要使程序的运行结果为248,应在下划线处填入的是A)>>2 B)|248 C)&0248 D)<<I二、填空题(每空2分,共30分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
2010年春江苏省计算机等级二级C考试试题第一部分计算机基础知识1.下面关于通信技术的叙述中,错误的是___1_d_ 。
A.任何一个通信系统都有信源、信道和信宿这三个基本组成部分,B.为了实现远距离传输信息,在模拟通信和数字通信中均采用载波技术C.为了降低传输信息的成本,在通信中广泛采用多路复用技术D.数字通信系统的一个主要性能参数是信道带宽,它指实际进行数据传输时单位时间内传输的二进位数目2.在下列有关集成电路及其应用的叙述中,错误的是___2__b 。
A.集成电路的制造工序繁多,工艺复杂且技术难度高B.经过抛光后的硅片称为晶圆,每个晶圆最多可以制成一个合格的集成电路芯片C.IC卡分为接触式IC卡和非接触式IC卡,后者通常又称为射频卡或感应卡D.集成电路应用十分广泛,目前我国第2代居民身份证中就有集成电路芯片3.在下列有关数字技术的一些叙述中,错误的是_____3c____ 。
A.数字技术是采用有限个状态(例如"0"和"1")来表示、处理、存储和传输信息的B.在逻辑代数中,1与1进行逻辑加(V)和逻辑乘(^)的结果相同C.任何一个十进制数,均可以精确地转换成等值的二进制数D.在PC机中,通常用原码表示正整数、用补码表示负整数4.在下列有关PC机主机的叙述中,错误的是___4b__ 。
A.BIOS和CMOS存储器安装在主板上,普通用户一般不能自己更换B.由于PC机主板的物理尺寸等没有标准化,所以不同PC机的主板均不能互换C.芯片组是PC机各组成部分相互连接和通信的枢纽,一般由2块VLSI芯片组成D.芯片组决定了主板上所能安装的内存最大容量、速度及可使用的内存条类型5.在下列4个Intel微处理器产品中,采用双核结构的是_____5a_____ 。
A. Core 2 Duo B.Pentium PRO C.Pentium III D.Pentium 46.在下列四种PC机主存储器类型中,目前常用的是_____6__d___ 。
计算机二级C上机考试题库及答案一、选择题1. 在C语言中,以下哪个选项是正确的整型常量表示?A. 0x12B. 0.123C. 1.2e3D. 0b1010答案:A2. 若有以下定义:```cint a=1, b=2, c;```则执行语句 `c = a + b;` 后,变量 `c` 的值是多少?A. 0B. 1C. 3D. 4答案:C3. 在C语言中,以下哪个关键字用于声明一个函数?A. structB. unionC. staticD. void答案:D二、填空题1. 在C语言中,`printf` 函数用于输出,其对应的输入函数是________ 。
答案:scanf2. 若定义 `char str[10] = "Hello";`,则 `str` 数组的第7个元素是 ________ 。
答案:\03. 在C语言中,声明一个指向整型的指针变量 `p`,其正确的声明方式是 ________ 。
答案:int *p;三、编程题1. 编写一个C程序,计算并输出以下数列的前10项之和:1, 1/2, 1/3, 1/4, ...```c#include <stdio.h>int main() {double sum = 0.0;for (int i = 1; i <= 10; i++) {sum += 1.0 / i;}printf("The sum of the series is: %f\n", sum);return 0;}```2. 给定一个字符串,编写一个C程序,将字符串中的所有小写字母转换为大写字母。
```c#include <stdio.h>int main() {char str[] = "Hello, World!";for (int i = 0; str[i] != '\0'; i++) {if (str[i] >= 'a' && str[i] <= 'z') {str[i] -= 'a' - 'A';}}printf("%s\n", str);return 0;}```结束语:以上是计算机二级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个元素依次拼接成一个整数,再将该整数赋值给相应列的最后一个元素。
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;} 。