江苏二级C模拟题1
江苏省计算机等级考试二级C上机考试模拟试题
江苏省计算机等级考试二级C上机考试模拟试题C01一、改错题(18分)【程序功能】下列程序中函数fun的功能是:首先将s数组中的字符串按以下规则复制到t数组:对于下标值为偶数位置上的字符复制n次(n=下标值+1),对于下标值为奇数位置上的字符只复制一次;其次将t数组中的字符串按字符编码从小到大的顺序排序。
【测试数据与运行结果】当s中的字符串为“abcdefg”时,运行结果应为“abcccdeeeeefggggggg”当s中的字符串为“”时,运行结果应为“6”【含有错误的源程序】#include "stdio.h"#include "conio.h"void fun (char *s, char *t){ int i,j,k,n=0; char temp;for(i=0;s[i]!='\0';++i)if(i%2=0)for(k=0;k<i+1;++k){ t[n]=s[i]; n++; }else t[n]=s[i];t[n]='\0';for (i=0;i<n-1;i++){k=i;for (j=0;j<n;j++)if(t[j]<t[k])k=j;if(k!=i){ temp=t[i]; t[i]=t[k]; t[k]=temp; }}}main(){ char s[20], t[100];printf("\nPlease enter string s:"); gets(s);fun(s);printf("The result is: %s\n", t);getch();}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。
国家二级C语言(数据结构与算法)机试模拟试卷1(题后含答案及解析)
国家二级C语言(数据结构与算法)机试模拟试卷1(题后含答案及解析)题型有:1. 选择题选择题1.算法具有五个特性,以下选项中不属于算法特性的是A.有穷性B.简洁性C.可行性D.确定性正确答案:B解析:算法的五个特性分别是:有穷性、可行性、确定性、输入和输出。
知识模块:数据结构与算法2.算法的有穷性是指A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用正确答案:A解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。
知识模块:数据结构与算法3.算法的时间复杂度是指A.算法的执行时间B.算法所处理的数据最C.算法程序中的语句或指令条数D.算法在执行过程中所需要的基本运算次数正确答案:D解析:算法的时间复杂度,是指执行算法所需要的计算工作量。
算法的工作量可以用算法在执行过程中所需基本运算的执行次数来度量。
知识模块:数据结构与算法4.对存储器按字节进行编址,若某存储器芯片共有10根地址线,则该仔储器芯片的存储容量为A.1kbB.2kbC.4kbD.8kb正确答案:A解析:10根地址线,每根地址线有0和1两种情况,地址范围就是2的10次方=1024=1K。
知识模块:数据结构与算法5.磁盘处于写保护状态时其中的数据A.不能读出,不能删改B.可以读出,不能删改C.不能读出,可以删改D.可以读出,可以删改正确答案:B解析:磁盘处于写保护状态时其中的数据可以读出来,但是不能修改和删除。
知识模块:数据结构与算法6.在Windows环境下,单击当前窗口中的按钮“”,其功能是A.讲当前应用程序转为后台运行B.退Windows后再关机C.终止当前应用程序的运行D.退出Windows后重新启动计算机正确答案:C解析:在Windows中,单击窗口中的按钮“”表示关闭当前运行的程序。
知识模块:数据结构与算法7.下列描述中正确的是A.数据的逻辑结构与存储结构必定是一一对应的B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C.程序设计语言中的数据一般是顺序存储结构,因此,利用数组只能处理线性结构D.以上三种说法都不对正确答案:D解析:数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。
江苏省二级C笔试模拟练习题(1)
江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试二级C语言全真模拟试卷(1)(本试卷包括计算机基础知识部分和程序设计部分,考试时间共120分钟)说明:1.本试卷满分为60分,分选择题和填空题,试卷不分A、B类型。
2.选择题用答题卡答题。
每一项有A、B、C、D四个可供选择的答案,请选择其中一个你认为正确的答案,用HB铅笔涂写在答题卡的相应答题号内。
每选对一项得1分,不选或选错不得分。
3.填空题用答题纸答题。
请将答案填写在答题纸的相应答题号内,每个答案只占一行,不得换行。
每填对一个答案得1分,不填或填错不得分。
4.请认真填写并仔细核对答题卡和答题纸上的学校名称、准考证号和姓名是否填写正确。
第一部分计算机基础知识1.信息处理系统是综合使用信息技术的系统。
下面有关信息处理系统的叙述中错误的是____1____。
A.信息处理系统从自动化程度来看,有人工的、半自动化的和全自动化的B.应用领域很广泛。
例如银行是一种以感知与识别为主要目的的系统C.信息处理系统是用于辅助人们进行信息获取、传递、存储、加工处理及控制的一种系统D.从技术手段上来看,有机械的、电子的和光学的;从通用性来看,有专片和通用的2.下面关于集成电路的叙述中,错误的是2。
A.集成电路是20世纪50年代出现的B.现代集成电路使用的半导体材料通常是硅或砷化镓C.集成电路的许多制造工序必须在恒温、恒湿、超洁净的无尘厂房内完成D.集成电路按用途可分为通用和专用两大类。
微处理器和存储器芯片都属于专用集成电路3.在通信系统的性能指标中,3是指数据传输中出错数据占被传输数据总数的比例。
A.信道带宽B.误码率C.数据率D.端-端延迟4.以下数据最大的是4。
A.01110110B B.120D C.7DH D.177Q 5.从逻辑功能上来讲,计算机硬件主要包括中央处理器(CPU)、内存储器、外存储器、输入设备和输出设备等,它们通过5互相连接。
A.总线B.控制线C.数据线D.地址线6.6接口是一种新的I/O接口,它是一种可以连接多个设备的总线式串行接口,2.0版的数据传输速率可高达480Mb/s(60MB/s),最多可以连接127个设备。
计算机等级考试二级C语言模拟试题(1)及答案
⼀、选择题(每题2分,共计70分)1.栈和队列的共同特点是A)都是先进先出B)都是先进后出C)只允许在端点处插⼊和删除元素D)没有共同点2.已知⼆叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是A)acbedB)decabC)deabcD)cedba3.链表不具有的特点是A)不必事先估计存储空间B)可随机访问任⼀元素C)插⼊删除不需要移动元素D)所需空间与线性表长度成正⽐4.结构化程序设计的3种结构是A)顺序结构、选择结构、转移结构B)分⽀结构、等价结构、循环结构C)多分⽀结构、赋值结构、等价结构D)顺序结构、选择结构、循环结构5.为了提⾼测试的效率,应该A)随机选取测试数据B)取⼀切可能的输⼊数据作为测试数据C)在完成编码以后制定软件的测试计划D)集中对付那些错误群集的程序6.算法的时间复杂度是指A)执⾏算法程序所需要的时间B)算法程序的长度C)算法执⾏过程中所需要的基本运算次数D)算法程序中的指令条数7.软件⽣命周期中所花费⽤最多的阶段是A)详细设计B)软件编码C)软件测试D)软件维护8.数据库管理系统DBMS中⽤来定义模式、内模式和外模式的语⾔为A)CB)BasicC)DDLD)DML9.下列有关数据库的描述,正确的是A)数据库是⼀个DBF⽂件B)数据库是⼀个关系C)数据库是⼀个结构化的数据集合D)数据库是⼀组⽂件10.下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独⽴性是指当数据的逻辑结构改变时,数据的存储结构不变C)关系中的每⼀列称为元组,⼀个元组就是⼀个字段D)如果⼀个关系中的属性或属性组并⾮该关系的关键字,但它是另⼀个关系的关键字,则称其为本关系的外关键字11.以下叙述中正确的是A)C语⾔⽐其他语⾔⾼级B)C语⾔可以不⽤编译就能被计算机识别执⾏C)C语⾔以接近英语国家的⾃然语⾔和数学语⾔作为语⾔的表达形式D)C语⾔出现的最晚,具有其他语⾔的⼀切优点12.C语⾔中⽤于结构化程序设计的3种基本结构是A)顺序结构、选择结构、循环结构B)if,switch,breakC)for,while,do-whileD)if,for,continue13.C语⾔中最简单的数据类型包括A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)字符型、实型、逻辑型14.若变量已正确定义并赋值,以下符合C语⾔语法的表达式是A)a:=b+1B)a=b=c+2C)int 18.5%3D)a=a+7=c+b15.下列可⽤于C语⾔⽤户标识符的⼀组是A)voiddefineWORDB)a3_b3_123CarC)For-abcIFCaseD)2aDOsizeof16.若变量a,i已正确定义,且i已正确赋值,合法的语句是A)a==1B)++i;C)a=a++=5;D)a=int(i);17.已知int t=0;while (t=1){...}则以下叙述正确的是A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对18.有如下程序main(){int x=1,a=0,b=0;switch(x){case 0: b++;case 1: a++;case 2: a++;b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=219.有以下程序main(){ int i=1,j=1,k=2;if((j++||k++)&& i++)printf("%d,%d,%d\n",i,j,k);}执⾏后输出结果是A)1,1,2B)2,2,1C)2,2,2D)2,2,320.有如下程序main(){ int n=9;while(n>6){n--; printf("%d",n);}}该程序的输出结果是A)987B)876C)8765D)987621.在下列选项中,没有构成死循环的是A)int i=100;while(1){ i=i0+1;if(i>100)break;}B)for(;;);C)int k=10000;do{ k++; }while(k>10000);D)int s=36;while(s)--s;22.若已定义的函数有返回值,则以下关于该函数调⽤的叙述中错误的是A)函数调⽤可以作为独⽴的语句存在B)函数调⽤可以作为⼀个函数的实参C)函数调⽤可以出现在表达式中D)函数调⽤可以作为⼀个函数的形参23.有以下程序float fun(int x,int y){ return(x+y);}main(){ int a=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运⾏后的输出结果是A)编译出错B)9C)21D)9.024.若有以下调⽤语句,则不正确的fun函数的⾸部是main(){ …int a[50],n;…fun(n, &a[9]);…}A)void fun(int m, int x[])B)void fun(int s, int h[41])C)void fun(int p, int *s)D)void fun(int n, int a)25.设有以下说明语句struct stu{ int a;float b;} stutype;则下⾯的叙述不正确的是A)struct是结构体类型的关键字B)struct stu是⽤户定义的结构体类型C)stutype是⽤户定义的结构体类型名D)a和b都是结构体成员名26.若运⾏时给变量x输⼊12,则以下程序的运⾏结果是main(){ int x,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%d\n",y);}A)0B)22C)12D)1027.以下说法正确的是A)C语⾔程序总是从第⼀个的函数开始执⾏B)在C语⾔程序中,要调⽤函数必须在main()函数中定义C)C语⾔程序总是从main()函数开始执⾏D)C语⾔程序中的main()函数必须放在程序的开始部分28.有以下程序#define F(X,Y)(X)*(Y)main(){ int a=3, b=4;printf("%d\n", F(a++, b++));}程序运⾏后的输出结果是A)12B)15C)16D)2029.下列程序执⾏后的输出结果是void func(int *a,int b[]){ b[0]=*a+6; }main(){ int a,b[5]={0};a=0; b[0]=3;func(&a,b); printf("%d\n",b[0]);}A)6B)7C)8D)930.若有下⾯的程序段char s[]="china";char *p; p=s;则下列叙述正确的是A)s和p完全相同B)数组s中的内容和指针变量p中的内容相等C)s数组长度和p所指向的字符串长度相等D)*p与s[0]相等31.以下程序中函数sort的功能是对a数组中的数据进⾏由⼤到⼩的排序void sort(int a[],int n){ int i,j,t;for(i=0;ifor(j=i+1;jif(a[i]}main(){ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序运⾏后的输出结果是A)1,2,3,4,5,6,7,8,9,10,B)10,9,8,7,6,5,4,3,2,1,C)1,2,3,8,7,6,5,4,9,10,D)1,2,10,9,8,7,6,5,4,3,32.以下程序的运⾏结果是#include "stdio.h"main(){ struct date{ int year,month,day;}today;printf("%d\n",sizeof(struct date));}A)6B)8C)10D)1233.若执⾏下述程序时,若从键盘输⼊6和8时,结果为main(){ int a,b,s;scanf("%d%d",&a,&b);s=a;if(as=b;s*=s;printf("%d",s);}A)36B)64C)48D)以上都不对34.下列关于C语⾔数据⽂件的叙述中正确的是A)⽂件由ASCII码字符序列组成,C语⾔只能读写⽂本⽂件B)⽂件由⼆进制数据序列组成,C语⾔只能读写⼆进制⽂件C)⽂件由记录序列组成,可按数据的存放形式分为⼆进制⽂件和⽂本⽂件D)⽂件由数据流形式组成,可按数据的存放形式分为⼆进制⽂件和⽂本⽂件35.有以下程序void ss(char *s,char t){ while(*s){ if(*s==t)*s=t-′a′+′A′;s++;}}main(){ char str1[100]="abcddfefdbd",c=′d′;ss(str1,c); printf("%s\n",str1);}程序运⾏后的输出结果是A)ABCDDEFEDBDB)abcDDfefDbDC)abcAAfefAbAD)Abcddfefdbd⼆、填空题(每空2分,共计30分)1.算法的基本特征是可⾏性、确定性、【1】和拥有⾜够的情报。
江苏省计算机二级模拟考试(VC++)(试卷1)
}
void main()
{
char *str1="abababa", *str2="aba";
int num=0, t=0,t1, result[10];
while(1){
if((t1=index(str1+t1, str2))==-1) // index(str1+t, str2)
4'
break;
cout<<x<<endl; } private: int x; }; class B:public A{ public: B(int i):A(i+10){
x=i; } void displayB(){
displayA(); cout<<x<<endl; } private: int x; }; int main() { A a(3); a.displayA(); B b(2); b.displayB(); return 0; } 程序输出的第一行是__________,第二行是__________,第三行是__________。
【答案:B 】
2.[题号:127](单选题) (知识点:构造函数) 分值:2 在C++中,能实现对象初始化功能的是__________。
A. 析构函数 B. 数据成员 C. 构造函数 D. 静态成员函数
【答案:C 】
3.[题号:128](单选题) (知识点:类的继承与派生) 以下对于派生类的描述中,错误的是__________。
if(s1[i+j]==s2[j])
break;
if(j==len2)
return i+1;
二级计算机C语言
全国计算机等级考试二级C语言笔试模拟试题(1)第1题若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是A.a,point,*&a B.&*a,&a,*point C.*&point,*point,&a D.&a,&*point,point 第2题现有如下程序段#include"stdio.h"main(){int k[30]={12,324,45,6,768,98,21,34,453,456};int count=0,i=0;while(k[i]){if(k[i]%2==0‖k[i]%5==0)count++;i++;}printf("%d,%d\n",count,i);}则程序段的输出结果为A.7,8B.8,8C.7,10D.8,10第3题树是结点的集合,它的根结点数目是A.有且只有1B.1或多于1C.0或1D.至少2第4题数据库、数据库系统和数据库管理系统之间的关系是A.数据库包括数据库系统和数据库管理系统B.数据库系统包括数据库和数据库管理系统C.数据库管理系统包括数据库和数据库系统D.3者没有明显的包含关系第5题当k的值不为0时,在下列选项中能够将k的值赋给变量m,n的是A.m=k=n B.(m=k)&&(n=k)C.(m=k)||(n=k)D.(k=m)&&(n=k)第6题设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是A.x&&y B.x<=y C.x||++y&&y-z D.!(x第7题以下不正确的定义语句是A.double x[5]={2.0,4.0,6.0,8.0,10.0};B.int y[5.3]={0,1,3,5,7,9};C.char c1[]={′1′,′2′,′3′,′4′,′5′};D.char c2[]={′\x10′,′\xa′,′\x8′};第8题阅读下面程序段,则执行后的结果为#include"stdio.h"main(){int m=4,n=2,k;k=fun(m,n);printf("%d\n",k);}fun(int m,int n){return (m*m*m-n*n*n);}A.64B.8C.56D.0第9题软件工程的理论和技术性研究的内容主要包括软件开发技术和A.消除软件危机B.软件工程管理C.程序设计自动化D.实现软件可重用第10题以下叙述中不正确的是A.在不同的函数中可以使用相同的名字的变量B.函数中的形式参数是局部变量C.在一个函数内定义的变量只在本函数范围内有效D.在一个函数内的复合语句中定义的变量在本函数范围内有效第11题函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是A.文件开始B.文件末尾C.文件当前位置D.以上都不对第12题C语言结构体类型变量在程序执行期间A.所有成员一直驻留在内存中B.只有一个成员驻留在内存中C.部分成员驻留在内存中D.没有成员驻留在内存中第13题以下对结构体类型变量的定义中,不正确的是A.typedef struct aa{int n;float m;}AA;AA tdl;B.#define AA struct aa AA{int n;float m;}tdl;C.struct{int n;float m;}aa;struct aatdl;D.struct{int n;float m;}tdl;第14题有如下程序main(){char ch[2][5]={"6937","8254"},*p[2];int i,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>′\0′;j+=2)s=10*s+p[i][j]-′0′;printf("%d\n",s);}该程序的输出结果是A.69825B.63825C.6385D.693825第15题以下程序的输出结果是main(){int a=21,b=11;printf ("%d\n",--a+b,--b+a);}A.30B.31C.32D.331-5:D,D,A,B,B6-10:D,B,C,B,D11-15:B,AC,C,A第16题下列程序的输出结果是main(){double d=3.2;int x,y;x=1.2;y=(x+3.8)/5.0;printf("%d\n",d*y);}A.3B.3.2C.0D.3.07第17题若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)第18题数据库设计包括两个方面的设计内容,它们是A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计第19题表达式0x13^0x17的值是A.0x04B.0x13C.0xE8D.0x17第20题检查软件产品是否符合需求定义的过程称为A.确认测试B.集成测试C.验证测试D.验收测试16-20:CBAAA第21题下列关于字符串的说法中错误的是A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志B.′\0′作为标志占用存储空间,计入串的实际长度C.在表示字符串常量的时候不需要人为在其末尾加入′\0′D.在C语言中,字符串常量隐含处理成以′\0′结尾第22题以下不能对二维数组a进行正确初始化的语句是A.int a[2][3]={0};B.int a[][3]={{1,2},{0}};C.int a[2][3]={{1,2},{3,4},{5,6}}; D.int a[][3]={1,2,3,4,5,6};第23题阅读下列程序,程序的输出结果是#include"stdio.h"main(){int m,n; float k;for(m=6;m>2;m--){k=0;for(n=m;n>1;n--)k=k+m*n;}printf("%f \n",k);}A.5.000000B.15.000000C.25.000000D.35.000000第24题下面程序段的运行结果是char a[]="lanuage",*p;p=a;while(*p!=′u′){printf("%c",*p-32);p++;}A.LANGUAGE B.language C.LAN D.langUAGE第25题阅读下面程序,则执行后的结果为#include"stdio.h"main(){char *str="abcdefghijklmnopq";while(*str++!=′e′);printf("%c\n",*str);} A.f B.a C.e D.q21-25:B,CBCA第26题设有数组定义:char array[]="China";则数组array所占的空间为A.4个字节B.5个字节C.6个字节D.7个字节第27题若变量c为char类型,能正确判断出c为小写字母的表达式是A.′a′<=c<=′z′B.(c>=′a′)||(c<=′z′)C.(′a′<=c)and(′z′>=c)D.(c>=′a′)&&(c<=′z′)第28题假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为A.log2n B.n2C.O(n1.5)D.n(n-1)/2第29题下列合法的整型常量的表示是A.098B.oXde C.32767D.0xDG第30题下列函数的运行结果是main(){int i=2,p;int j,k;j=i;k=++i;p=f(j,k); printf("%d",p);}int f(int a,int b){int c;if(a>b)c=1;else if(a==b)c=0;else c=-1;return(c);}A.-1B.1C.2D.编译出错,无法运行26-30:CDDCA第31题已知int a=6;则执行a+=a-=a*a;语句后,a的值为A.36B.0C.-24D.-60第32题一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。
江苏省二级C语言上机模拟试卷1及参考答案
江苏省二级C语言上机考试试卷-1(本试卷完成时间 70分钟)一、改错题(16分)【程序功能】合并两个一维升序数组,合并后的数组仍然保持升序。
【测试数据与运行结果】测试数据:数组1: 5,9,19数组2: 12,24,26,37,48运行结果:合并后的数组:5,9,12,19,24,26,37,48【含有错误的源程序】#include<stdio.h>void sort(int array[],int n){int i,j,t;for(i=1;i<n;i++){t=array[i];for(j=i;t<array[j]&&j>=0;j--)array[j+1]=array[j];array[j]=t;}}void merge(int *a1,n1,*a2,n2,*a3){int i=j=k=0;while(i<n1&&j<n2)if(a1[i]>a2[j])a3[k++]=a2[j++];elsea3[k++]=a1[i++];while(i<n1)a3[k++]=a1[i++];while(j<n2)a3[k++]=a2[j++];}int main(void){int s1[3],i,s2[5],s3[8];for(i=0;i<3;i++)scanf("%d",&s1[i]);for(i=0;i<5;i++)scanf("%d",&s2[i]);sort(s1,3);sort(s2,5);merge(s1,3,s2,5,s3);for(i=0;i<8;i++)printf("%3d", s3[i]);}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
江苏省二级C语言考试模拟试题1(注只有C部分,没有公共基础部分)
江苏省二级C语言考试模拟试题1〔注只有C局部,没有公共根底局部〕江苏省二级C语言考试模拟试题1(注:只有C局部,没有公共根底局部)-、选择题[请用答题卡答题,答案依次填在(21)-(30)答题号内] 21.有声明语句int x=8,那么以下表达式中,值为2的是(21). A.x+=x-=x B.x%=x-2C.x>8?x=0:x++D.x/=x+x 22.以下关于函数的表达中正确的选项是(22)A.在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值B.在函数体中至少必须有一个return语句C.在函数体中可以定义另一个函数D.在函数体中可以调用函数自身23.假设有声明语句\那么以下对数组元素赋值的操作中,不会出现越界访问的是(23)A.a[-1]=0B.a[10]=0C.b[3][O]=0D.b[0][3]=024.数组和链表都可以用于存储一组彼此有关联的数据,以下说法中不正确的选项是(24) A.数组占用一块连续的存储区域,链表可能占用假设干块不连续的存储空间 B.数组和链表所占用的存储区域均不能在程序运行期间动态地分配 c.数组中的数据可以随机存取或顺序存取,链表中的数据只能顺序存取 D.数组的长度是固定的,链表的长度是不固定的 25.设有定义和声明语句: typedef struct dtype {int a;struct dtype *b; }node;static node x[3]={5,&x[1],7,&x[2],9,'\\0'},*prt= 以下选项中,表达式值不为5的是(25) A.x[1].b->a-2 B.ptr->b->a-2 C.(ptr+1)->a-2 D.ptr->a 26.在以下程序中,需要在main函数之后定义-个函数,以下选项中(26)可以用做该函数的名字#define p 3.14 int y; main() {int a=1; 函数名(a);... /*假设干执行语句*/ }int 函数名(int x) {return x*x;}A.mainB.yC.pD.print27.假设有声明语句\以下语句中有语法错误的选项是 (27) A.(*pc)++;B.ch+=-'a'+'A';C.toupper(ch)=ch;D.ch++;28.有语句\如果需要将变量x的值以文本形式保存到一个磁盘文件out.dat中,那么以下函数调用形式中正确的选项是(28) A.fprintf(\C.fprintf(\29.有声明语句\以下语句中(29)不能正确输出a数组全部元素的值A.for(p=a,i=0;i int convert(char s1[],char s2[]) { int i=0,j,s; char tab[8][4]={\ for(i=0,j=O;s1!='\\0';i++,j=j+3)strcpy(&s2[j],tab[s1-'0']); for(i=0,s=O;i #include void loop(int s,int m,int n,char *str); main() {char buf[81]; strcpy(buf,\loop(1,2,2,buf);puts(buf); } void loop(int s,int m,int n,char*str) { char c;int k;int i,len; len=strlen(str); for(i=O;i long invert(long x); main() {long n,c=0; printf(\ scanf(\ while((20)) {printf(\ n=n+invert(n);c++; while((21)) {n=n+invert(n);c++;} printf(\ } long invert(long x) /*生成并返回x的反序数*/ {long s; for(s=0;x>0; ( 22 ) ) s=s*10+x ; return s; } 14.某链表中结点的数据结构定义如下: struct node {int x; struct node*next; }; 函数find_del的功能是:在参数head指向的链表中查找并删除x值最大的结点,如有多个相同的x值最大的结点,删除第一个结点,保存该结点的地址到pm指向的指针变量中, 函数返回链表首结点的指针 struct node*find_del(struct node *head,struct node **pm) {struct node*p1,*p2,*pmax,*pre; if(head==NULL)return NULL; pmax=( 23 );p2=p1=pmax; while(p1) {if(p1->x>( 24 )) {pre=p2;pmax=p1;} p2=p1:p1=p1->next; }if(pmax==head)head=pmax->next; else ( 25 ) =pmax->next; ( 26 )=pmax; return head; } 15.以下程序对一组点坐标(x,y)按升序进行排序,要求:先按x 的值排序,假设x的值相同,那么按y的值排序,排序算法为选择法 #include #define N 5 typedef struct {int x,y;}POINT; void point_sort( (27) *x,int n) {POINT t; int i,j,k; for(i=0;i(x[j].x))k=j; elseif((30)&&x[k].y>x[j].y)k=j; if(k!=i)t=x,x=x[k],x[k]=t; } } main() {POINT a[N]={0}; int i=0; while(i (5)a的地址 (6)6 (7)1 (8)1 (9)2 (10)1 (11)2 (12)3 (13)13 (14)001101 (15)The result is:365 (16)s (17)len (18)k+m (19)str[k] (20)nx (25)pre->next (26)*pm (27)POINT (28)k=i (29)i+1 (30)x[k].x==x[j].x。
江苏省计算机二级C(试题+答案)
江苏省计算机等级考试二级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到最后的字符串移到字符串的前部。
全国计算机二级C语言模拟测试【含详细解析】 (1)
全国计算机二级C语言模拟测试卷【附带详细解析】@乡村教师胡劲1.下列叙述中正确的是A. 栈与队列都只能顺序存储B. 循环队列是队列的顺序存储结构C. 循环链表是循环队列的链式存储结构D. 栈是顺序存储结构而队列是链式存储结构正确答案:B你的答案:解析:【解析】栈是所有的插入与删除都限定在表的同一端进行的线性表;队列是指允许在一端进行插入,而在另一端进行删除的线性表,二者均即可以顺序存储也可以链式存储。
为了充分地利用数组的存储空间,把数组的前端和后端连接起来,形成一个环形的表,称为循环队列,因此循环队列是队列的一种顺序存储结构,B选项正确。
2.设某二叉树的前序序列为ABC,中序序列为CBA,则该二叉树的后序序列为A. BCAB. CBAC. ABCD. CAB正确答案:B你的答案:解析:【解析】二叉树遍历可以分为3种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。
前序序列为ABC,则A为根节点。
中序序列为CBA,则C和B均为左子树节点或右子树节点,且C为B父节点,可知后序序列为CBA,B选项正确。
3.下列排序方法中,最坏情况下时间复杂度最小的是A. 冒泡排序B. 快速排序C. 堆排序D. 直接插入排序正确答案:C你的答案:解析:【解析】在最坏情况下,对长度为n的线性表排序,冒泡排序、快速排序、直接插入排序的时间复杂度均为O(n^2),堆排序时间复杂度为O(nlog2n),复杂度最小。
C选项正确。
4.为了对有序表进行对分查找,则要求有序表A. 只能顺序存储B. 只能链式存储C. 可以顺序存储也可以链式存储D. 任何存储方式正确答案:A你的答案:解析:【解析】二分法查找也称拆半查找,是一种高效的查找方法。
能使用二分法查找的线性表必须满足两个条件:用顺序存储结构;线性表是有序表。
A选项正确。
江苏省高校等考(CCT)二级(Office 高级应用)模拟试卷1(题后含答案及解析)
江苏省高校等考(CCT)二级(Office 高级应用)模拟试卷1(题后含答案及解析)题型有:1. 单项选择题 2. 填空题单项选择题下列各题的备选答案中,只有一个是符合题意的。
1.当前使用的个人计算机中,在CPU内部,比特的两种状态是采用________示的。
A.电容的大或小B.电平的高或低C.电流的有或无D.灯泡的亮或暗正确答案:B 涉及知识点:Office高级应用2.若A=1100,B=1010,A与B运算的结果是1000,则其运算一定是________。
A.算术加B.算术减C.逻辑加D.逻辑乘正确答案:D 涉及知识点:Office高级应用3.下列有关我国汉字编码标准的叙述中,错误的是________。
A.GB2312国标字符集所包含的汉字许多情况下已不够使用B.Unicode是我国发布的多文种字符编码标准C.GB18030编码标准中所包含的汉字数目超过2万个D.我国台湾地区使用的汉字编码标准与大陆不同正确答案:B 涉及知识点:Office高级应用4.近30年来微处理器的发展非常迅速,下面关于微处理器发展的叙述不准确的是________。
A.微处理器中包含的晶体管越来越多,功能越来越强大B.微处理器中Cache的容量越来越大C.微处理器的指令系统越来越标准化D.微处理器的性能价格比越来越高正确答案:C 涉及知识点:Office高级应用5.CPU主要由寄存器组?运算器和控制器3个部分组成,控制器的基本功能是________。
A.进行算术运算和逻辑运算B.存储各种数据和信息C.保持各种控制状态D.指挥和控制各个部件协调一致地工作正确答案:D 涉及知识点:Office高级应用6.下面列出的四种半导体存储器中,属于非易失性存储器的是________。
A.SRAMB.DRAMC.CacheD.FlashROM正确答案:D 涉及知识点:Office高级应用7.关于I/O接口,下列________说法是最确切的A.I/O接口即I/O控制器,它负责对I/O设备进行控制B.I/O接口用来将I/O设备与主机相互连接C.I/O接口即主板上的扩充槽,它用来连接I/O设备与主存D.I/O接口即I/O总线,用来连接I/O设备与CPU正确答案:A 涉及知识点:Office高级应用8.从目前技术来看,下列打印机中打印速度最快的是________。
江苏省二级c语言上机考试例题集1-20模板
江苏省二级c语言上机考试例题集1-20模板回文数#include "stdio.h"int ispal(int n){int m=0;int t=n;while(t){m=m*10+t%10;t/=10;}return m==n;}void main(){int i;int cnt=0;for(i=1;i<10000;i++){if(ispal(i)){cnt++;printf("%d\n",i);}}printf("合计:%d个\n",cnt);}。
水仙花数#include "stdio.h"void main(){int a,b,c,i;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;if(a*a*a+b*b*b+c*c*c==i)printf("%d\t",i);}}1、取出一个十进制正整数中的所以奇数数字,用这些数字构成一个最小数。
#include#includevoid sort(int a[], int n){int i, j, t;for (i = 0;i < n - 1;i++)for (j = 0;j < n - 1 - i;j++) /*利用双重循环,将数组按从小到大排列*/if (a[j] > a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t; }}long arrange(long s) /*arrange函数的功能是取出十进制整数s 中的所有奇数数字,用这些数字构成一个最小数,函数返回该数*/ { int d, b[10], i, j = 0;long s1 = 0;while (s > 0) /*利用循环对s数位分离,分离出个位、十位、百位等各位上的数*/{ d = s % 10;if (d % 2 != 0) /*判断每一位上的数字是否为奇数*/b[j++] = d; /*若为奇数则存放到b数组中*/s /= 10;}sort(b, j); /*调用sort函数,将数组b从小到大排列*/for (i = 0;i < j;i++)s1 = s1 * 10 + b[i]; /*求得用各位上的奇数组成的最小数 */return s1; /*返回求得的数*/}void main(){long m, n;FILE *fp; /*定义文件指针fp*/if ((fp = fopen("myf2.out", "w")) == NULL) /*涉及文件的打开*/{printf("The file can not open!");exit(0);}scanf("%ld", &n); /*接收键盘输入的整型数据*/m = arrange(n); /*键盘输入的数据作为实参调用arrange 函数*/ printf("%ld\n", m); /*将得到的最小数输出到屏幕及结果文件中*/ fprintf(fp, "%ld\n", m);printf("\nMy exam number is:WLJY001\n"); /**/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}2、按要求合并两个字符串#include#include#includevoid fun(char *a, char *b, char *c) /*函数功能是先将b指向的字符串逆序存放,然后按a[0] ,b[0], a[1], b[1]…的顺序合并a字符串和b 字符串到c指向的数组中,将a 或b中剩余的字符拼接在c数组的尾部*/{int i, j;char ch;i = 0;j = strlen(b) - 1;while (i < j) /*利用while循环将数组b中的字符逆序存放*/{ch = b[i];b[i] = b[j];b[j] = ch;i++;j--;}while (*a || *b) /*利用while循环,通过判断*a || *b,将a、b数组间隔存放在c数组中*/{ if (*a){*c = *a;c++;a++;}if (*b){*c = *b;c++;b++;}}*c = '\0';}void main(){FILE *fp; /*定义文件指针fp*/char s1[80], s2[80], s[200]; /*声明3个一维数组*/if ((fp = fopen("myf2.out", "w")) == NULL){printf("can't open file");exit(0);}printf("\nEnter s1 string:");gets(s1);printf("\nEnter s2 string:");gets(s2); /*s1、s2 接收键盘输入的字符*/fun(s1, s2, s); /*调用change函数,对字符串s2进行逆序变换,再合并s1字符串和s2字符串并保存到s数组中*/printf("\nThe result is:%s\n", s);/*将合并后产生的数组s中的字符串输出到屏幕及结果文件中*/ fprintf(fp, "%s", s);fprintf(fp, "\n");printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}3、先判断一个m×n矩阵为Monge矩阵,在对该矩阵进行交换处理#include#include#define N 5void change(int a[][N], int n) /*该函数的功能是,对a指向的n行5列数组中的矩阵进行变换*/{int i, j, t;for (i = 0;i < n / 2;i++) /*通过两重for循环对数组各行的位置进行交换*/for (j = 0;j < N;j++){t = a[i][j];a[i][j] = a[n - 1 - i][j];a[n - 1 - i][j] = t;} /*变换形式:第一行与最后一行交换,第二行与倒数第二行交换……*/}int Monge(int a[][N], int n){int i, j;for (i = 0;i < n - 2;i++) /*利用for循环和if语句对数组元素进行矩阵判断,判断是否为Monge矩阵*/ { for (j = 0;j < N - 2;j++) if (a[i][j] + a[i + 1][j + 1] > a[i][j + 1] + a[i + 1][j])return 0;/*若矩阵不是Monge矩阵,函数返回0*/}return 1;/*若矩阵是Monge矩阵,函数返回1*/}void main(){int a[][N] = {{10, 17, 13, 28, 23}, {17, 22, 16, 29, 23},{24, 28, 22, 34, 24}, {11, 13, 6, 17, 7}, {45, 44, 32, 37, 23}}; /*数组初始化*/ int monge, i, j;FILE *fp;fp = fopen("myf2.out", "w"); /*以只写"w"方式打开文件*/if (fp == NULL)exit(0);monge = Monge(a, 5); /*调用Monge函数对a数组进行判断*/ for (i = 0;i < N;i++) /*将a数组变换前中的元素输出到屏幕及结果文件中*/{for (j = 0;j < N;j++){printf("%4d", a[i][j]);fprintf(fp, "%4d", a[i][j]);}printf("\n");fprintf(fp, "\n");}if (monge){printf("a is Monge\n");fprintf(fp, "a is Monge\n");} /*将a数组变换前的判断结果输出到屏幕及结果文件中*/else{printf("a is not Monge\n");fprintf(fp, "a is not Monge\n");} change(a, 5); /*调用change函数对a数组进行变换处理*/for (i = 0;i < N;i++){for (j = 0;j < N;j++){ printf("%4d", a[i][j]);fprintf(fp, "%4d", a[i][j]);}printf("\n");fprintf(fp, "\n");} /*将a数组变换后的元素输出到屏幕及结果文件中*/monge = Monge(a, 5); /*调用Monge函数对经过变换的a数组进行判断*/if (monge) /*将a数组变换后的判断结果输出到屏幕及结果文件中*/{printf("a is Monge\n");fprintf(fp, "a is Monge\n"); }else{ printf("a is not Monge\n");fprintf(fp, "a is not Monge\n"); } printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}4、用一组整数验证命题#include#include#define N 100int fun (int a[], int b[], int n){int i, x, y, z, s, t, m, k = 0;for (i = 0;i < n;i++) /*按题目要求的步骤进行交换,直到得到所要求的结果停止循环*/ if (a[i] / 1000 < 1){x = a[i] / 100;y = a[i] / 10 % 10;z = a[i] % 10; /*对数a[i]进行数位分离*/if (x != z){s = z * 100 + y * 10 + x; /*交换a[i]的百位数字与个位数字得到s*/t = s > a[i] ? (s - a[i]) : (a[i] - s); /*求a[i]和s的绝对值得到t*/x = t / 100;y = t / 10 % 10;z = t % 10;m = z * 100 + y * 10 + x; /*交换 t的百位数字与个位数字得到m*/if (t + m == 1089) /*判断t与m的和是否为1089*/b[k++] = i;}}return k; /*函数返回数组b中数据的个数*/}void main(){int a[N] = {123, 765, 1, 45, 121, 1345, 131, 67, 696, 3589}, b[N], n, i;FILE *fp; /*定义文件指针*/if ((fp = fopen("myf2.out", "w")) == NULL) /* 以只写"w"方式打开文件 */{printf("The file call not open!");exit(0);}n = fun (a, b, 10); /*用a数组作为实参调用fun函数*/for (i = 0;i < n;i++){printf("%5d", a[b[i]]);fprintf(fp, "%5d", a[b[i]]);} /*将a数组中所有符合命题的整数输出到屏幕及结果文件中*//*将考生准考证号输出到屏幕及结果文件中*/printf("\nMy exam number is:WLJY001\n");fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件 */}5、找出7个默森尼数#include#include#define N 7void Mersenne(long a[], int m);int prime(long);void main(){long a[N];int i;FILE *fp; /*定义文件指针*/fp = fopen("myf2.out", "w"); /*以只写"w"方式打开文件*/if (fp == NULL)exit(0);Mersenne(a, N); /*调用Mersenne 函数,找出并保存前7个Mersenne 数*/for (i = 0;i < N;i++){ printf("%8ld", a[i]);fprintf(fp, "%8ld", a[i]);} /* 将运行结果输出到屏幕及结果文件中*/ printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");}void Mersenne(long a[], int m) /*该函数的功能是,求出前m个Mersenne数*/{long f, n, k;int i = 0;a[i++] = 3;for (n = 3;i < m;n += 2){f = 1;for (k = 1;k <= n;k++)f *= 2; /*求2的n次方*/if (prime(n) && prime(f - 1)) /*当n和2的n次方减1均为素数时,该数为Mersenne 数*/ a[i++] = f - 1; /*将找到的Mersenne 数保存到数组a中*/}}int prime(long n) /*该函数的功能是,判断整数a是否是素数*/ {long i;for (i = 2;i <= n / 2;i++)if (n % i == 0) return 0;return 1; /*若是素数函数返回值1*/}6、从一个指定的自然数#include#includeint linkrun(int a, int b, int *p);void main(){int i, a, b, max, p[100];FILE *fp;if ((fp = fopen("myf2.out", "w")) == NULL) /*以只写"w"方式打开文件*/{printf("The file call not open!");exit(0);}printf("Enter a,b:(a<b)");< bdsfid="349" p=""></b)");<> scanf("%d,%d", &a, &b); /*接收从键盘输入的a和b*/max = linkrun(a, b, p); /*以a、b、p作为实参调用函数*/for (i = 0;i <= b - a;i++){printf("%3d", p[i]);fprintf(fp, "%3d", p[i]);}printf("\nmax=%d", max);fprintf(fp, "\nmax=%d", max); /*将运行结果输出到屏幕及结果文件中*/printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}int linkrun(int a, int b, int *p){int i, k, m, n, num;num = 0;for (i = 0, k = a;k <= b;i++, k++) /*通过for循环,以[a,b]中所有自然数作为n*/{n = k;p[i] = 1;while (n != 1){++p[i]; /*将数列的长度保存到数组p中*/if(n % 2) /*n为奇数时,按相应公式求解*/n = n * 3 + 1;else /*当n为偶数时,按相应公式求解*/n /= 2;}if (p[i] > num)num = p[i]; /*求出数组中最大值*/}return num; /*返回最大值*/}7、将一个十进制整数m转换成r进制整数的字符串表示形式#include#includevoid trdec(char *str, int idec, int ibase) /*该函数的功能是,将十进制整数idec转换为ibase进制的字符串表示形式*/{char ch;int i, idr, k = 0;while (idec != 0){idr = idec % ibase; /*idec对ibase求余*/if (idr >= 10) /*判断余数,根据余数的值对其进行变换*/str[k++] = idr - 10 + 'A';elsestr[k++] = idr + '0';idec /= ibase;}for (i = 0;i < k / 2;i++) /*转换成ibase进制数的字符串形式后,将字符串保存到str指向的字符数组 */ {ch = str[i];str[i] = str[k - i - 1];str[k - i - 1] = ch;}str[k] = '\0';}void main(){int x;char str[20];FILE *fp; /*变量声明,定义文件指针fp */if ((fp = fopen("myf2.out", "w")) == NULL){printf("The file can not open!");exit(0);}printf("Enter a number"); scanf("%d", &x); /*接收从键盘输入的x*/trdec(str, x, 2); /*调用函数将该整数转换为二进制并输出到屏幕及结果文件中*/printf("%sB,", str);fprintf(fp, "%sB,", str);trdec(str, x, 8); /*调用函数将该整数转换为八进制并输出到屏幕及结果文件中*/printf("%sQ,", str);fprintf(fp, "%sQ,", str);trdec(str, x, 16); /*调用函数将该整数转换为十六进制并输出到屏幕及结果文件中*/printf("%sH\n", str);fprintf(fp, "%sH\n", str);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}8、将以为数组中的所有素数移到该数组的前端部分#include#includeint N;void insert(int *p, int x, int n){int i = 0, j;while (x > p[i] && i < n) /* ① p是指针类型,引用形式不对*/ i++;for (j = n;j > i;j--)p[j] = p[j - 1];p[j] = x; /* ②此语句的作用是将x插入到元素p[j]的位置 */}int *create(){int *head, *p, i;printf("\n N=");scanf("%d", &N);head = (int *)malloc(N * sizeof(int)); /* ③分配内存空间函数malloc的调用形式错误,正确的为:(类型说明符*)malloc(size) */ printf("Enter numbers:");p = head;for (i = 0;i < N;i++)scanf("%d", &p[i]); /* ④接收从键盘输入的数值要用取址运算符*/for (i = 1;i < N;i++)insert(p, p[i], i);return head;}void main(){int *head, *p, i, x;head = create();p = head;for (i = 0;i < N;i++)printf("%3d", *p++);free(head);}9、用以下展开式求#include#include#include /* ①后续程序调用了字符函数isalpha,所以要加#include */#includevoid replace_word(char s[]){char word_tab[4][10] = {"sad", "happy", "accuse", "forgive"};char t[10], tmp[80]; /* ②由后面的t[k]=s[j]知,此处定义的t不是一个字符变量,而是一个字符型数组*/int i, j, k, n;for (i = 0;s[i];i++){for (j = i, k = 0;isalpha(s[j]);k++, j++)t[k] = s[j];t[k] = 0;if (k > 0){for (n = 0;n < 4;n++)if (strcmp(t, word_tab[n]) == 0)break;if (n < 4){strcpy(tmp, s + i + strlen(t));strcpy(s + i, word_tab[(n + 1) % 4]);strcat(s, tmp); /* ③strcpy(str1,str2)是把字符串str2复制到str1中,会覆盖str1中的内容,此处应用strcat函数 */i = i + strlen(word_tab[(n + 1) % 4]);}elsei = i + strlen(t);}}}main(){char line[80] = "I am very sad.";replace_word(line);puts(line); /* ④输出字符串应调用函数puts,putchar只能输出单个字符 */}10、找出满足下列条件的整数对#include#include#includeint factor(int n) /*该函数的功能是,求整数n的所有因子之和*/ { int i, s = 0;for (i = 1;i <= n;i++)if (n % i == 0)s = s + i; /*各因子累加求和*/return s; /*返回和值*/}int fun(int n, int a[][2]) /*该函数的功能是,在[1,n] 中查找满足题目条件的整数对*/{ int i, j, g1, g2, k = 0;for (i = 2;i <= n;i++){g1 = factor(i); /*调用factor函数求得g1的因子之和*/for (j = 1;j < i;j++){g2 = factor(j); /*调用factor函数求得g2的因子之和*/if (g1 == g2 && g1 == i + j + 1) /*比较两因子之和,若符合要求,则将其存入数组a中*/{a[k][0] = j;a[k++][1] = i;}}}return k; /*返回数组a中元素个数*/}void main(){FILE *fp;int i, n, m, a[100][2];if ((fp = fopen("myf2.out", "w")) == NULL){printf("The file call not open!");exit(0);}scanf("%d", &n); /*接收键盘输入的n*/m = fun(n, a); /*用n,a作为实参调用fun函数*/for (i = 0;i < m;i++){printf("(%d,%d)\n", a[i][0], a[i][1]);fprintf(fp, "(%d,%d)\n", a[i][0], a[i][1]);} /*将a数组中的结果数据输出到屏幕及结果文件中*/printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp);}11、验证3~2008的所有素数中存在这样两个素数a=5,b=2003 a+b=2008#include#include#include#includeint prime(int n) /*该函数的功能是,判断整数a是否素数*/{ int i;for (i = 2;i <= n / 2;i++)if (n % i == 0) return 0; /*若不是素数,函数值返回0*/return 1; /*若是素数,函数值返回1*/}int fun(int n, int *a, int *b) /*该函数的功能是,在3~n之间寻找符合要求的一对素数*/{ int n1, n2;for (n1 = 3;n1 < n;n1 += 2){if (prime(n1))n2 = n - n1;if (prime(n2) && n1 + n2 == n) /*n1和n2均为素数,且和为n */{*a = n1;*b = n2; return 1;} /*将找到的两个素数分别保存到数组a和b中,函数返回1*/ }return 0; /*若找不到,函数返回0*/}void main(){FILE *fp; /*定义文件指针fp*/int n = 2008, a, b, c;if ((fp = fopen("myf2.out", "w")) == NULL){printf("Create File myf2.out failed!\n");exit(0);}c = fun(n, &a, &b); /*调用fun函数找出3~n之间和值为n的一对素数*/if (c) /*将找到的素数输出到屏幕并用写文件函数保存到结果文件中*/{printf("a=%d b=%d a+b=%d\n", a, b, a + b);fprintf(fp, "%d+%d=%d\n", a, b, a + b);}elsefprintf(fp, "not found!");printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}12、数组部分元素逆置#include#include#includeint prime(int a) /*该函数的功能是,判断整数a是否是素数*/{int i;if (a == 1) return 0;if (a == 2) return 1; /*a等于1和2时单独考虑*/for (i = 2;i < a;i++)if (a % i == 0) return (0);return (1); /*若是素数,函数返回1*/}void reverse(int *a, int n, int m){int i, k = -1, *b, *p, t; /*定义变量b和p为指针变量*/for (i = 0;i < n;i++)if (prime(a[i]))k = i; /*找到数组a中的最后一个素数*/p = a + k - 1;if (k - m < 0)b = a; /*判断最后一个素数之前的元素个数与m的大小*/else b = a + k - m;while (b < p) /*将最后一个素数之前的m个元素逆置*/{t = *b;*b = *p; *p = t;b++;p--;}}void main(){int a[20] = { 4, 3, 6, 7, 8, 13, 9, 19, 21, 26}, i, m, n = 10;FILE *fp; /*定义文件指针 */if ((fp = fopen("myf2.out", "w")) == NULL){printf("Create File myf2.out failed!\n");exit(0);}printf("Please input m:\n");scanf("%d", &m); /*接收从键盘输入的m值*/reverse(a, n, m); /*调用reverse函数变换数组a*/for (i = 0;i < n;i++) /*将变换后的数组a输出到屏幕并用写文件函数保存到结果文件中*/ {printf("%4d", a[i]);fprintf(fp, "%4d", a[i]);}printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}13、取出一个正整数中的所有偶数数字#include#include#includevoid sort(int a[], int n) /*将数组a中的n个整数进行从大到小排列*/{ int i, j, k, t;for (i = 0;i < n - 1;i++) /*利用双重for循环*/{k = i;for (j = i + 1;j < n;j++)if (a[j] > a[k])k = j;if (k != i){t = a[k];a[k] = a[i];a[i] = t;}/*利用中间变量t交换两者的值,最后将数组按从大到小的顺序进行排列*/ }}long fun(long s){int d, b[10], i, j = 0;long s1 = 0;while (s > 0) /*利用while循环对数据s进行各位数字各位的分离*/{ d = s % 10;if (d % 2 == 0) /*判断各位是否为偶数,若是偶数则将其保存到数组b中*/b[j++] = d;s /= 10;}sort(b, j); /* 调用函数sort对b数组中存放的j个偶数进行排序*/ for (i = 0;i < j;i++)s1 = s1 * 10 + b[i]; /* 利用j个偶数,构成一个最大的整数*/return s1; /* 返回构成的最大数*/}void main(){long m, n;FILE *fp; /*定义文件指针*/if ((fp = fopen("myf2.out", "w")) == NULL) /*以只写方式"w"打开文件*/{printf("The file call not open!");exit(0);}scanf("%ld", &n); /*接收从键盘输入的n */m = fun(n); /*调用fun函数求出整数n的所有偶数数字构成的一个最大数*/printf("%ld\n", m); /*将所得结果输出到屏幕并用写文件函数保存到结果文件中*/fprintf(fp, "%ld\n", m);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}14、找出符合以下条件的Troitsky数#include#include#include#include#define N 10int Troitsky(long a[]) /*该函数的功能是,求出1000000以内所有的Troitsky数*/{int count = 0, b;long n, n1;for (n = 1;n <= 1000000;n++) /*利用for循环对1~1000000的数进行变换*/{n1 = n;b = 0;while (n1 > 0){b++;n1 /= 10;} /*确定数n的位数,求得数n的首位数字*/n1 = n % (long)pow(10, b - 1) * 10 + n / (long)pow(10, b - 1); /*将首位作为个位,其他三位数乘以10组成新的整数*/if (n1 / n == (double)n1 / n && n1 / n > 1) /*判断新的整数是否是原数n的整数倍*/ a[count++] = n; /*将符合要求的数存入数组a 中*/}return count; /*函数返回Troitsky数的个数*/}void main(){long a[N], i;int k;FILE *fp; /*定义文件指针*/fp = fopen("myf2.out", "w"); /*以只写方式"w"打开文件*/if (fp == NULL)exit(0);k = Troitsky(a); /*调用Troitsky函数*/for (i = 0;i < k;i++) /*将运行结果输出到屏幕并用写文件函数保存到结果文件中*/{printf("%10ld", a[i]);fprintf(fp, "%10ld", a[i]); }printf("\n"); /*换行*/fprintf(fp, "\n");printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}15、产生Fibonacci 生兔子#include#include#include#includeint Fibonprime(long f[], int n){int i, m = 0;long a[40] = {1, 1}, j, k;for (i = 2;i < n;i++)a[i] = a[i - 2] + a[i - 1]; /*利用for循环生成数列的前n项*/for (i = 2;i < n;i++){k = (long)sqrt(a[i]);for (j = 2;j <= k;j++)if (a[i] % j == 0)break; /*判断其是否是素数*/if (j >= k + 1)f[m++] = a[i]; /*将素数存放到数组k中*/}return (m); /*数组中素数的个数作为函数值返回*/}main(){int i, m;long f[40];FILE *fp; /*定义文件指针 */fp = fopen("myf2.out", "w"); /*以只写方式"w"打开文件*/if (fp == NULL){ printf("Can not open de file!\n");exit(0);}m = Fibonprime(f, 30); /*调用函数Fibonprime 求出Fibonacci 数列前30个数中的素数 */ for (i = 0;i < m;i++) /*将找到的素数输出到屏幕并用写文件函数保存到结果文件中*/ printf("%ld\t", f[i]);for (i = 0;i < m;i++)fprintf(fp, "%ld\t", f[i]);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}16、在数列中查找、移动#include#include#includevoid sumfac(int x[], int n);int fac(int n);main(){int i, a[10] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512};FILE *fp; /*定义文件指针*/if ((fp = fopen("myf2.out", "w")) == NULL){ printf("Creat File myf2.out failed!\n");exit(0);}sumfac(a, 10); /*调用函数sumfac对一维数值中的数列进行变换操作*/printf("\n");fprintf(fp, "\n");for (i = 0;i < 10;i++) /*将变换后的数列输出到屏幕并用写文件函数保存到结果文件中*/ {printf("%6d", a[i]);fprintf(fp, "%6d", a[i]);} printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}int fac(int n) /*该函数的功能是,求得n的所有因子之和*/{int i, sum = 0;for (i = 1;i <= n;i++)if (n % i == 0)sum += i; /*求出n的所有因子及因子之和*/return sum; /*函数返回和值*/}void sumfac(int x[], int n){int i, j, k, m, sum;for (i = n - 1, k = 0;i >= k;i--) /*利用循环,从后向前遍历数列查找超完全数*/{sum = fac(x[i]); /*调用fac函数求得各元素的所有因子之和*/if (fac(sum) == x[i] *2) /*利用if判断其是否是超完全数*/{m = x[i];for (j = i;j > 0;j--)x[j] = x[j - 1]; /*移动超完全数之前需将数列所有数依次后移*/x[0] = m; /*将超完全数移动到数列的第一个位置*/k++;i++;}}}17、编写函数int Del-findged (int a[],int n,int *f)#include#include#includeint Del_findgcd(int a[], int n, int *f){int i, k, g;for (i = 0, k = 0;i < n;i++)if (i % 2 == 0)a[k++] = a[i]; /*利用循环判断数组元素的下标,若是奇数则将其删除*/ if (n % 2 == 0)n = n / 2; /*判断数组中剩余元素的个数 */else n = n / 2 + 1;k = a[0];for (i = 1;i < n;i++) /*通过循环找到能被所有数整除的最大的数即为最大公约数*/{g = a[i];while (k != g){if (k > g)k = k - g;else g = g - k;}}*f = k; /*保存最大公约数到f指向的变量中*/return n; /*函数返回数组中剩余的整数个数*/}void main(){FILE *fp; /*定义文件指针*/int i, a[10] = { 6, 8, 9, 11, 12, 13, 15, 16, 18, 19}, f, n;if ((fp = fopen("myf2.out", "w")) == NULL){ printf("can't open file!");exit(0);}n = Del_findgcd(a, 10, &f); /*调用Dle_findgcd函数删除数组中的所有满足条件的整数并求出剩余整数的最大公约数*/for (i = 0;i < n;i++) /*将数组中剩余的整数和这些整数的最大公约数输出到屏幕并用写文件函数保存到结果文件中*/{printf("%d,", a[i]);fprintf(fp, "%d,", a[i]);}printf("max common divisor=%d\n", f);fprintf(fp, "max common divisor=%d\n", f);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}18、找出给定范围内的和亲数#include#include#includeint heqinmath(int m, int n, int a[][2]){int i, j, m1, s1, s2, count = 0;for (m1 = m;m1 < n;m1++) /*通过循环对m~n的整数进行依次判断*/{ s1 = 1;s2 = 1;for (i = 2;i < m1;i++)if (m1 % i == 0)s1 = s1 + i; /*找到某一整数m1的全部真因子并求和*/ for (j = 2;j < s1;j++)if (s1 % j == 0)s2 = s2 + j; /*找到和值s1的真因子并求和*/if ((s2 == m1) && (m1 != s1))/*判断是否为和亲数*/{a[count][0] = m1;a[count++][1] = s1; /*将和亲数对保存到a指向的数组中*/}}return count; /*函数返回a数组中和亲数对的个数*/}main(){int count, i, m, n, a[10][2];FILE *fp; /*定义文件指针*/fp = fopen("myf2.out", "w"); /*以只写方式"w"打开文件*/if (fp == NULL){printf("Can not open the file!\n");exit(0);};printf("Please input m,n:\n");scanf("%d%d", &m, &n); /*从键盘输入m和n*/count = heqinmath(m, n, a); /*调用函数heqinmath,求出m~n 之间所有的和亲数对*/for (i = 0;i < count;i++) /*将计算结果输出到屏幕并用写文件函数保存到结果文件中*/ printf("(%d,%d)\n", a[i][0], a[i][1]);for (i = 0;i < count;i++)fprintf(fp, "(%d,%d)\n", a[i][0], a[i][1]);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}19、编写函数int prime-m(int n,int x[],long y[])nclude#includeint prime_m(int n, int x[], long y[]){int j, m, count;long k = 0, q, k1, k2, k3;for (m = 2;m <= n;m++) /*通过循环在2~n之间查找符合条件的整数*/{k1=(pow(2, m)-1);q = sqrt(k1);for (j = 2;j <= q;j++)if (k1 % j == 0)break;if (j <= q)continue; /*判断2m-1是否为素数*/count = 0;k3 = k1;k2 = 0;while (k3 > 0){int w = k3 % 10;if (w == 1) /*判断2m-1的十进制表示中是否包含数字1*/{count++;}k2 = k2 * 10 + w;k3 = k3 / 10;}if (k2 % 2 == 0)continue; /*判断2m-1的反序数是否为奇数*/ if (count > 0){x[k] = m;y[k++] = k1;} /*符合条件的所有整数m保存到x指向的数组中,将与m对应的整数2m-1保存到y指向的数组中*/ }return k; /*函数返回x数组中保存的整数个数*/}void main(){FILE *fp; /*定义文件指针*/long a[20];int i, j, n, b[20], m;if ((fp = fopen("myf2.out", "w")) == NULL){printf("Open file myf2.out failed!\n");exit(1);}printf("input n:");scanf("%d", &n); /*接收从键盘输入的参数n*/m = prime_m(n, b, a); /*调用search函数分别求得满足上述条件的所有三位正整数和所有四位正整数*/ for (i = 0;i < m;i++) /*将满足条件的三位正整数和四位正整数输出到屏幕并用写文件函数保存到结果文件中*/{ printf("%5d%15ld\n", b[i], a[i]); fprintf(fp, "%5d%15ld\n", b[i], a[i]);}printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}20、编写函数int find(int n,long x[])#include#include#define min(x,y) ((x)<(y)?(x):(y)) /* ①宏定义的格式为:#define 标识符(形参表)形参表达式,形参表中的形参无需声明类型*/ int min_dist(int a[], int b[], int m, int n) /* ②由后面程序知,函数的前两个形参均为数组,所以此处应改为min_dist(int a[],int b[],int m,int n) */{int min = INT_MAX;int ia = 0, ib = 0;while (ia < m && ib < n) /* ③循环限制条件应是ia,ib都不能大于数组元素的个数,两者是"与"的关系*/if (a[ia] >= b[ib]){min = min(min, a[ia] - b[ib]);ib++;}else{min = min(min, b[ib] - a[ia]);ia++;}return min;}main(){int a[] = {2, 4, 8, 11, 16}, b[] = {1, 5, 7, 13, 24};int i, m, n;m = sizeof(a) / sizeof(int);n = sizeof(b) / sizeof(int);printf("\n");for (i = 0;i < m;i++)printf("%5d", a[i]);printf("\n");for (i = 0;i < n;i++) printf("%5d", b[i]);printf("\n min distance=%d", min_dist(a, b, m, n)); /* ④此处需要输出函数的返回值,printf 函数格式控制符应为 "%d"*/ getch();}。
江苏计算机二级vc考试历年真题及答案
江苏计算机二级vc考试历年真题及答案江苏计算机二级VC考试历年真题及答案一、单项选择题(每题2分,共40分)1. 在Visual C++中,以下哪个选项不是类成员函数的访问修饰符?A. publicB. privateC. protectedD. internal答案:D2. 下列哪个选项表示在Visual C++中声明一个整型变量?A. int a;B. float a;C. double a;D. char a;答案:A3. 在Visual C++中,以下哪个关键字用于创建一个类?A. structB. unionC. enumD. typedef答案:A4. 下列哪个选项不是Visual C++中的控制流语句?A. ifB. switchC. forD. goto答案:D5. 在Visual C++中,以下哪个选项是正确的数组声明?A. int[] a;B. int a[];C. int a[10];D. int a=10;答案:C6. 下列哪个选项表示在Visual C++中声明一个浮点型变量?A. int a;B. float a;C. double a;D. char a;答案:B7. 在Visual C++中,以下哪个关键字用于创建一个接口?A. classB. structC. interfaceD. enum答案:C8. 下列哪个选项不是Visual C++中的运算符?A. +B. -C. *D. ++答案:D9. 在Visual C++中,以下哪个选项是正确的函数声明?A. void myFunction();B. int myFunction;C. int myFunction();D. void myFunction;答案:C10. 下列哪个选项表示在Visual C++中声明一个字符型变量?A. int a;B. float a;C. double a;D. char a;答案:D二、多项选择题(每题3分,共30分)11. 在Visual C++中,以下哪些选项是正确的类继承方式?A. publicB. privateC. protectedD. friend答案:A, B, C12. 下列哪些选项是Visual C++中有效的数据类型?A. intB. floatC. stringD. bool答案:A, B, D13. 在Visual C++中,以下哪些关键字用于异常处理?A. tryB. catchC. throwD. finally答案:A, B, C14. 下列哪些选项是Visual C++中有效的循环控制语句?A. forB. whileC. do-whileD. switch答案:A, B, C15. 在Visual C++中,以下哪些选项是正确的函数重载?A. int add(int a, int b);B. int add(int a, int b, int c);C. int add(float a, float b);D. int add(double a, double b);答案:A, B, C三、填空题(每题4分,共30分)16. 在Visual C++中,声明一个具有默认构造函数的类,可以使用关键字________。
C语言试题,二级C语言试题
二级C语言程序设计模拟试题(一)一、单项选择题。
(每小题1分,共20分)1、一个C语言程序是由(B)组成。
A) 一个函数B) 一个或若干个函数C) 一个过程D) 一个过程或若干个过程知识点:C语言程序的结构2、C语言用(D)表示逻辑真值。
A) true B) T C) 整型值0 D) 非0整型值知识点:数据类型3、如果程序中有#include "文件名" 则意味着(A)。
A) 将"文件名"所指的那个文件的全部内容,在此命令行出现的这一点上,插入源程序B) 指定标准输入输出C) 宏定义一个函数D)条件编译说明知识点:编译预处理4、为一个结构体变量分配存储空间时,其所占容量为(B)。
A) 结构体中第一个成员所占容量B) 结构体中所有成员所占容量C) 结构体中所有成员中所占容量最大者D) 结构体中最后一个成员所占容量知识点:结构体5、如果int *px,*py;则可用{temp=*px;*px=*py;*py=temp}实现*px和*py的交换。
其中temp应该说明为( A )。
A) int temp B) int &temp C) int **temp D) int *temp知识点:指针6、于合法的c语言长整型常量是(A)。
A) 12L B) 6887273 C) 5E12 D) (long)6887273知识点:数据类型7、下列程序输出正确的是(A)。
main(){ int a=-1,b=1,c;c=(a++<=0)&&!((b--<=0));printf(“%d,%d,%d”,a,b,c);}A) 0,0,1 B) -1,1,1 C) 0,0,0 D) 0,1,0知识点:逻辑运算符8、已知E的ASCII码是69,则执行printf(“%c”,‟D‟-…8‟+‟5‟);的结果是(B)。
A) 66 B) A C) B D) E知识点:数据类型与自动转换9、段名访问的方式是(A)A) 结构名.位段名B) 位段名C) 结构名D) *&位段名知识点:位段10、有字符数组a,则正确的输入语句是(C)。
国家二级C语言机试(程序设计基础和软件工程基础)模拟试卷1
国家二级C语言机试(程序设计基础和软件工程基础)模拟试卷1(总分:66.00,做题时间:90分钟)一、选择题(总题数:33,分数:66.00)1.下列叙述中正确的是(分数:2.00)A.程序执行的效率与数据的存储结构密切相关√B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上都不正确解析:解析:影响程序执行效率的因素有很多,如数据的存储结构、程序处理的数据量、程序的算法等。
顺序存储结构和链式存储结构在数据插入和删除操作上的效率就存在差别。
其中,链式存储结构的效率要高一些。
2.下列描述中,不符合良好程序设计风格要求的是(分数:2.00)A.程序的效率第一,清晰第二√B.程序的可读性好C.程序中要有必要的注释D.输入数据前要有提示信息解析:解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。
程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。
并名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风格。
3.占构化程序所要求的基本结构不包括(分数:2.00)A.顺序结构B.GOTO跳转√C.选择(分支)结构D.重复(循环)结构解析:解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有GOTO跳转结构。
4.下列选项中不属于结构化程序设计原则的是(分数:2.00)A.可封装√B.自顶向下C.模块化D.逐步求精解析:解析:结构化设计方法的主要原则可以概括为自顶向下、逐步求精、模块化、限制使用GOTO语句。
5.结构化程序设计的基本原则不包括(分数:2.00)A.多元性√B.自顶向下C.模块化D.逐步求精解析:解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化和限制使用GOTO 语句,其中不包括多态性。
6.下列选项中不属于结构化程序设计方法的是(分数:2.00)A.自顶向下B.逐步求精C.模块化D.可复用√解析:解析:结构化程序设汁方法的主要原则可以概括为:自顶向下,逐步求精,模块化,限制使用GOTO 语句。
全国计算机二级考试C语言模拟试题(一)
1套每一套题目都是按照“填空题--改错题---编程题”顺序排列,填空题上面带有两个划线的是人工做题时候多余划线,不要理睬!!printf("\nThe average is: %f\n",fun(x));printf("\nThe result :\n",fun(x));for(i=0; i<N; i++) printf("%5.0f ",x[i]);printf("\n");}改错题#include <stdio.h>void fun ( char *s, int num[5] ){ int k, i=5;for ( k = 0; k<i; k++ )/**********found**********/num[k]=0;for (; *s; s++){ i = -1;/**********found**********/switch (* s){ case 'a': case 'A': {i=0; break;}case 'e': case 'E': {i=1; break;}case 'i': case 'I': {i=2; break;}case 'o': case 'O': {i=3; break;}case 'u': case 'U': {i=4; break;}}if (i >= 0)num[i]++;}}main( ){ char s1[81]; int num1[5], i;printf( "\nPlease enter a string: " ); gets( s1 );fun ( s1, num1 );for ( i=0; i < 5; i++ ) printf ("%d ",num1[i]); printf ("\n"); }编程题#include <stdio.h>#define M 4#define N 5int fun ( int a[M][N] ){int tot=0,i,j;for(i=0;i<N;i++){tot+=a[0][i];tot+=a[M-1][i];}for(i=1;i<M-1;i++){tot+=a[i][0];tot+=a[i][N-1];}return tot;}main( ){ int aa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};int i, j, y;void NONO ();printf ( "The original data is : \n" );for ( i=0; i<M; i++ ){ for ( j =0; j<N; j++ ) printf( "%6d", aa[i][j] ); printf ("\n");}y = fun ( aa );printf( "\nThe sum: %d\n" , y );printf("\n");NONO( );}void NONO (){/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2009江苏省计算机等级考试C语言考前冲刺模拟试卷1基础部分1.下列关于信息的叙述错误的是____(1)__。
A.信息是指事物运动的状态及状态变化的方式B.信息是指认识主体所感知或所表述的事物运动及其变化方式的形式、内容和效用C.在计算机信息系统中,信息是对用户有意义的数据,这些数据将可能影响到人们的行为与决策D.在计算机信息系统中,信息是数据的符号化表示2.下列关于集成电路的叙述中错误的是____(2)____。
A.将大量晶体管、电阻及互连线等制作在尺寸很小的半导体单晶片上就构成集成电路B. 现代集成电路使用的半导体材料通常是硅或砷化镓C. 集成电路根据它所包含的晶体管数目可分为小规模、中规模、大规模、超大规模和极大规模集成电路D. 集成电路按用途可分为通用和专用两大类。
微处理器和存储器芯片都属于专用集成电路3.移动通信指的是处于移动状态的对象之间的通信,下面的叙述中错误的是__(3)______。
A.移动通信始于上世纪20年代初,70~80年代开始进入个人领域B.移动通信系统进入个人领域的主要标志就是手机的广泛使用C.移动通信系统由移动台、基站、移动电话交换中心等组成D.目前广泛使用的GSM是第三代移动通信系统4.下列不同进位制的四个数中,最小的数是__(4)______。
A.二进制数1100010B. 十进制数65C. 八进制数77D. 十六进制数455.下面是关于PC机主存储器的一些叙述,其中正确的是_____(5)____A.主存储器每次读写一个字节(8位)B.主存储器也称内存,它是一种动态随机存储器C.目前市场上销售的pC机器,其内存容量多数已达128MBD.PC机的容量总是可扩充的A.①③B.①②③C.①④D.②③④6.下面关于USB接口的叙述中,错误的是____(6)______B2.0的数据传输速率比USB1.1快的多B具有热插拔和即插即用功能C.主机不能通过USB连接器向外围设备供电D.从外观上看,USB连接器要比PC机的串行口连接器小7.下列关于目前流行的台式PC机主板的叙述,正确的是_______(7)____①主板上通常包含微处理器插座和芯片组②.主板上通常包含内存储器(内存条)插槽和BIOS ROM芯片③.主板上通常包含PCI(或PCI-E)总线插槽④.主板上通常包含IDE(或SATA)连接器A.①③ B. ①②③ C. ①④ D. ①②③④8.为了读取硬盘存储器上的信息,必须对硬盘盘片上的信息进行定位,在定位一个扇区时,不需要以下参数中的_____(8)___。
A.柱面(磁道)号B.盘片(磁头)号C.通道号D.扇区号9.下列各类存储器中,____(9)____在断电后其中的信息不会丢失。
A.寄存器 B. Cache C. Flash ROM D. DDR SDRAM10. 下列关于操作系统处理器管理的说法中,错误的是____(10)___ 。
A.处理器管理的主要目的是提高CPU的使用效率B.分时是指将CPU时间划分成时间片,轮流为多个程序服务C.并行处理操作系统可以让多个CPU同时工作,提高计算机系统的效率D.多任务处理都要求计算机必须有多个CPU11.在下列有关程序设计语言及其处理程序的叙述中,错误的是_(11)_。
A.用多种不同的汇编语言编写一个程序称为"交叉汇编"B.汇编语言是一种用助记符号表示的、与机器语言接近的符号语言C.机器语言指令是由一串“0”和“1”组成的二进位代码D.编译程序应具有词法分析和语法分析功能12.以下关于局域网和广域网的叙述中,正确的是____(12)___。
A.广域网只是比局域网覆盖的地域广,它们所采用的技术是相同的B.家庭用户拨号入网,既可接入广域网,也可接入局域网C.现阶段家庭用户的PC机只能通过电话线接入网络D.个人不允许组建计算机网络13.将异构的计算机网络进行互连通常使用的网络互连设备是_____(13)___。
A. 网桥B. 集线器C. 路由器D. 中继器14.在TCP/IP网络中,任何计算机必须有一个IP地址,而且__(14)______A. 任意两台计算机的IP地址不允许重复B. 任意两台计算机的IP地址允许重复C. 不在同一城市的两台计算机的IP地址允许重复D. 不在同一单位的两台计算机的IP地址允许重复15. 当网络中的两台计算机之间需要互相传送多个文件时,一般应使用_______(15)____服务A.wwwB.TelnetC.FTPD.电子邮件16. 在浏览器的地址栏中输入想要浏览的网页URL时,不能缺省的输入是___(16)_____A.执行的传输协议B.网页所在的Web服务器的域名或IP地址C.端口号D.网页的文件名和查找路径17. 下面关于我国汉字编码标准的叙述中,错误的是__ (17)_________A.GB2312国标字符集所包含的汉字许多情况下已不够使用B.GBK字符集既包括简体汉字,也包括繁体汉字C.GB18030编码标准中所包含的汉字数目超过2万个D.无论采用上述哪一种汉字编码标准,汉字在计算机中均采用双字节编码18. 下列关于计算机合成图像(计算机图形)的应用中,错误的是__(18)_______。
A.可以用来设计电路图B.可以用来生成天气图C.计算机只能生成实际存在的具体景物的图像,不能生产虚拟景物的图像D.可以制作计算机动画19.计算机中用于描述乐谱并由声卡合成出乐曲的一种专用语言,称为_____(19)_____A.MP3B.JPEG2000C.MIDID.XML20.在PC机中安装视频输入设备就可以获取数字视频,下面关于视频获取设备的叙述中,错误的是____(20)_________A.视频卡能通过有线电视电缆接收模拟电视信号并进行数字化B.视频卡一般插在PC机的PCI插槽内C.数字摄像头必须通过视频卡与PC机相连接D.数字摄像头拍摄的数字视频可通过USB或IEEE1394接口直接输入计算机C语言部分二:c语言程序设计21.一个用c语言编写的程序,____________是必不可少的A.取名为main的函数定义B.#include <stdio.h>C.变量声明D.注释22.已有枚举类型定义:"enum letter{A,B,C=7,D,E};",以下表达式中除(22)外,其他表达式的机内值均等于10。
A.'\xb'-1 B.B+E C.010+2 D•0xf-323.以下声明中正确的是(23) 。
A.int n=2,a[n]={10}; B.int n=10,*p[2]=&n;C.int n=10,a[2]={n};D.int a[2][2]={lO},(*p)[2]=a+1;24.若有函数fun的定义为void fun(…){static int a=1;...}则下列叙述中不正确的是 ( 24) 。
A.在每次调用fun函数时,变量a的值是上次调用结束时a的值B.在fun函数之外,可以用变量名a直接引用a的值c.在其他函数中,可以出现声明double a=2.5;D.fun函数的形式参数不能取名为a25.已知数据类型定义和变量声明如下:struct sk{int a;float b;} data[2],*p;若有P=data,则以下对data[0]中成员a的引用中错误的是:(25)。
A.data[0]->a B.data->a C.P->a D.(*p).a26.以下单目运算符均只需妻一个操作数,其中要求操作数的类型只能是指针型的是(26) 。
A.& B.++ C.! D.*27.已知有声明"int good=1;",若要使得表达式"P="good"+good"无语法错误(包括警告错误),P应当声明为( 27)。
A.char p; B.char *p; C.int p;D.int*p;28.已知有声明"char c='1',;int x=300;float t=35000;double d=3.1234567e10;",则以下表达式求值时除 ( 28 ) 外其结果都可能是不准确的。
A.x=t/c B.t=d/x C.t=d/le5f D.t=x+c29.已有预处理命令和声明如下:#define N 10int a=2,c=1;double b=1.2:下述程序段正确的是(29)。
A.switch(a) B.switch(a){case c: a--;break; {case N>0:a=1;break;case c+1:a++;break; case 1: a=O;break;} }C. switch(a)D.switch(b){ { case 1.0: b++;break;case 2: b++;break; case 1.2: b=1;break;case '0': b=3; }}30.若有以下声明和定义:void fun(int c){prinff("%d",C);}main(){void(*a)(int)=fun,*b(int),(*c)(int);/*调用fun函数语句位置*/}void*b(int C){}。
如果在main函数中需要调用fun函数,以下调用语句中错误的是_______(30)______ 。
A.fun(1); B.(*a)(1); C.b=fun;(*b)(1);D.c=a;(*c)(1);二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)●基本概念题(共5分)1.若有声明"char a=0;int b=1;float c=2;double d=3;",则表达式"c=a+b+c+d"值的类型为(1) 。
2.若某个程序运行时创建了多个输入流,当执行到程序中的scanf函数时,只有在 (2)输人流为空时才会暂停程序运行而等待输入。
.3.执行"printf("%d,%d",i,j,k,m);"后在屏幕上将输出_____(3)______个整数。
4.设已有非空文本数据文件filel.dat,要求能读出文件中原有的全部数据,并在文件原有数据之后添加新数据,则用FILE *fp=fopen("filel.dat", ____(4)_________ )打开该文件。
5.若有函数定义int f(){int x=4,y=3,z=2;return x,y,z;},则调用函数f后的返回值是(5)●阅读程序题(共13分)6.以下程序运行时输出结果是 (6 ) 。