国家二级C语言机试(操作题)模拟试卷678(题后含答案及解析)
国家二级C语言机试(操作题)模拟试卷678 (题后含答案及解析)
全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题
程序填空题
1. 给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按hum成员进行升序排列。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>typedef struet{int num;char
name[10];}PERSON;/******found******/void fun(PERSON___1___){/******found******/___2___temp:if(std[0].num>std[1].num){temp=std[0];std[0]=std[1];std[1]=temp;}if(std[0].num>std[2].num){temp=std[0];std[0]=std[2];std[2]=temp;}if(std[1].num>sta[2].num){temp=std[1];std[1]=std[2];std[2]=temp;}}main( ){PERSON std[]={5,”Zhanghu”,2,”WangLi”,6,”LinlMin”};int i;/******found******/fun(___3___);printf(“\nThe result is:\n”);for(i=0;i<3;i++)printf(“%d,%s\n”,std[i].num,std[i].name);}
正确答案:(1)std[](2)PERSON(3)std
解析:本题考查:数据类型的定义;数组元素的操作;函数参数的传递。要使用函数对整个数组进行操作时,应使用数组名作为函数的实参。当使用数组名作实参时,函数传递的实际上是数组的首地址,而并非数组本身,此时形参除了可以定义为指针变量外,还可以定义为数组,并且数组可以不指定大小。但无论用哪种形式,程序在编译时都将其作为一个指针变量处理。填空1:定义形参变量引用数组std,此时形参可以定义为指针变量,也可以定义为数组。由下文可知,程序是通过数组下标对数组元素进行操作的,因此形参应使用数组形式,而非指针形式。填空2:程序使用变量temp交换结构体数组元素的值,因而temp应定义为PERsON型。
程序修改题
2. 下列给定程序中,函数fun的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。请改正函数fun中的错误,使它能得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!试题程序:#include<stdlib.h>#include<stdio.h>#include<eonio.h>void fun(char*s){int i,j;for(i=0,j=0;s[i]!=‘\0’;i++)if(s[i]>=‘0’&&8[i]<=‘9’)/******found******/s[j]=s[i];/******found******/s[j]=“\0”;}void main( ){char item[80];system(“CLS”);printf(“\nEnter a string:”);gets(item);printf(“\nThe string is:%s\n”,item);fun(item);printf(“\nThe string of changing is:%s\n”,item);}
正确答案:(1)s[j++]=s[i];(2)s[j]=‘\0’;
解析:题目要求依次取出字符串中所有的数字字符,因此将元素s[i]存入s[j]
后要使j加1,为下次存储做准备。s[j]=“\0”;是一个语法错误。
程序设计题
3. 请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入”abc4Efg”,则应输出”aBc4EFg”。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<string.h>#include<stdlib.h>void
fun(char*ss){}void main( ){FILE*wf;char tt[81],s[81]=“abc4Efg”;system(“CLS”);printf(“\nPlease enter an string within80characters:\n”);gets(tt);printf(“\nAfter changing,the string\n%s”,tt);fun(tt);printf(“\nbecomes\n%s\n”,tt);/****************/wf=fopen(“out.dat”,”w”);fun(s);fprintf(wf,”%s”,s);fclose(wf);/****************/}
正确答案:void fun(char*ss){int i:for(i=0;ss[i]!=‘\0’;i++)/*将ss所指字符串中所有下标为奇数位置的字母转换为大写*/if(i%2==1&&ss[i]>=‘a’&&ss[i]<=‘z’)ss[i]=ss[i]-32;}
解析:本题要求将给定字符串中奇数位置的字母转换为大写,需要先判断奇数位置以及是否是小写字母,如果是再通过其转换方法进行转换。从C语言的学习中知道,只要将小写字母减去32即转成大写字母,将大写字母加上32即转成小写字母。本程序用if语句实现转换功能。
国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷13
国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷13
(总分:56.00,做题时间:90分钟)
一、 选择题(总题数:28,分数:56.00)
1.有以下定义和语句: struct workers {int num;char name[20];char c; struct {int day;int month;int year;}s;}; struct workers w,*pw; pw:&w; 能给w中year成员赋1980的语句是
(分数:2.00)
A.w.year=1980;
B.pw->year=1980;
C.w.s.year=1 980; √
D.*pw.year=1980;
解析:解析:本题主要考查的是结构体变量的嵌套定义,也就是说一个结构体变量也可以是一个结构体。在本题中works这个结构体中包含了结构体s。所以对结构体变量w中year成员的引用是w.s.year。
2.有以下程序 #include struct tt {int x;struct tt *y;)*p; struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a}; main() {int i; p=a; for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;} }
程序的运行结果是
(分数:2.00)
A.20,15, √
B.30,17
C.15,30,
D.20,30,
解析:解析:程序定义了结构体类型tt,其成员包括一个整型数据x和指向其自身结构的指针变量y。程序在定义结构体数组a的同时对其进行了初始化。其元素a[0]的成员y被赋值为元素a[1]的地址,a[1].y被赋值为a[2]的地址,a[2].y被赋予a[3]的地址,a[3].y被赋予a[0]的地址。这就形成了一个单向的循环链表,每个元素的指针成员都指向下一个元素的地址。在主函数中,通过一个for循环语句,输出该链表前2个节点数值成员的值,即a[0].x和a[1].x。
国家二级C语言(数组)机试模拟试卷4(题后含答案及解析)
国家二级C语言(数组)机试模拟试卷4 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 若有定义:int x[10],*pt=x;,则对x数组元素的正确引用是( )。
A.pt+3
B.*&x[10]
C.*(pt+10)
D.*(x+3)
正确答案:D
解析:没有A选项的引用形式。*与&放在一起作用抵消,但x[10]下标10超出了数组下标范围,所以B选项错误。最大只能引用到x[9],而*(pt+i)表示引用指针pt所指元素后的第i个元素,所以C选项错误,最大只能为*(pt+9)。D选项正确。 知识模块:数组
2. 有以下程序:#include<stdio.h>main( ){int i,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(“%d\n”,s);}程序的运行结果是( )。
A.20
B.25
C.45
D.36
正确答案:B
解析:统计1~9这9个数中的奇数和,此题考查指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址,因此*(t+i)代表数组的第i+1个元素。程序的运行结果是1+3+5+7+9=25。 知识模块:数组
3. 有以下程序:#include<stdio.h>main( ){int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)e[s[i]]++;for(i=1;i<5;i++)printf(“%d”,c[i]);printf(“\n”);}程序的运行结果是( )。
A.2 3 4 4
B.4 3 3 2
C.1 2 3 4
D.1 1 2 3
正确答案:B
解析:在for(i=0;i<12;i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2,因此B选项正确。 知识模块:数组
国家二级C++机试(选择题)模拟试卷210(题后含答案及解析)
国家二级C++机试(选择题)模拟试卷210 (题后含答案及解析)
题型有:1.
1. 下列叙述中正确的是
A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D.循环队列中元素的个数是由队头指针和队尾指针共同决定
正确答案:D
解析:循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。 知识模块:数据结构与算法
2. 下面是关于派生类声明的开始部分,其中正确的是( )。
A.class virtual B:public A
B.virtual class B:public A
C.class B:public A virtual
D.class B:virtual public A
正确答案:D
解析:声明派生类的一般形式为:class派生类名:[继承方式]基类名。其中继承方式包括:public,private,protected,而virtual为C++中的关键字。虚函数的使用方法是在基类用virtual声明成员函数为虚函数。
3. 下列选项中不属于结构化程序设计原则的是( )。
A.可封装
B.自顶向下
C.模块化
D.逐步求精
正确答案:A
解析:结构化设计方法的主要原则可以概括为自顶向下、逐步求精、模块化、限制使用goto语句。 知识模块:程序设计基础
4. 下列选项中不属于面向对象程序设计特征的是( )。
A.继承性
B.多态性
C.类比性
D.封装性
正确答案:C
解析:面向对象程序设计的三个主要特征是:封装性、继承性和多态性。封装性即只需知道数据的取值范围和可以对该数据施加的操作,而无需知道数据的具体结构以及实现操作的算法。继承性是指使用已有的类定义作为基础建立新类的定义技术。对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。 知识模块:程序设计基础
国家二级C语言机试(C语言程序设计)模拟试卷26(题后含答案及解析)
国家二级C语言机试(C语言程序设计)模拟试卷26 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是
A.while(ch=getchar( )=‘N’)printf(“%c”,ch);
B.while(ch=getchar( )==“N”)printf(“%c”,ch);
C.while((ch=getchar( ))!=‘N’)printf(“%c”,ch);
D.while((ch=getchar( ))==‘N’)printf(“%c”,ch);
正确答案:C
解析:while循环的执行过程如下: ①计算while后面圆括号中表达式的值,当值为非0时,执步骤②;当值为0时,执行步骤④: ②执行循环体一次: ③转去执行步骤①; ④退出循环。 在选项C)中,表达式(ch=getchar( ))!=‘N’表示输入的字符不等于 N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环。 知识模块:C语言程序设计
2. 若有以下程序main( ){int a=-2,b=0; while(a++) ++b:
printf(“%d,%d\n”,a,b);}则程序的输出结果是
A.0,2
B.1,2
C.1,3
D.2,3
正确答案:B
解析:循环体执行两次,第一次表达式a++值为-2,a的值为-1,执行循环体++b,b值为1,第二次表达式a++值为-1,a的值等于0,执行++b,b值为2,第三次判断条件a++,表达式值为0,不执行循环体,但是条件判断以后,a的值为1。 知识模块:C语言程序设计
3. 由以下while构成的循环,循环体执行的次数是int k=0;while(k=1)k++;
国家二级C语言(公共基础知识)机试模拟试卷11
国家二级C语言(公共基础知识)机试模拟试卷11
(总分:60.00,做题时间:90分钟)
一、 选择题(总题数:30,分数:60.00)
1.下面描述中不属于软件需求分析阶段任务的是( )。
(分数:2.00)
A.撰写软件需求规格说明书
B.软件的总体结构设计 √
C.软件的需求分析
D.软件的需求评审
解析:解析:软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求规格说明书和需求评审。软件的总体结构设计属于软件设计阶段的任务。
2.下面不属于软件需求规格说明书内容的是( )。
(分数:2.00)
A.软件的可验证性 √
B.软件的功能需求
C.软件的性能需求
D.软件的外部接口
解析:解析:软件需求规格说明应重点描述软件的目的,软件的功能需求、性能需求、外部接口、属性及约束条件等。
3.下面可以作为软件需求分析工具的是( )。
(分数:2.00)
A.N-S图
B.程序流程图
C.PAD图
D.数据流程图(DFD图) √
解析:解析:常见的需求分析方法有结构化分析方法和面向对象的分析方法。结构化分析方法工具包括数据流图(DFD)、数据字典(DD)、判定表和判定树等。程序流程图、N-S图、PAD图属于软件设计阶段使用的工具。
4.数据流图(DFD)中的有向箭头(→)表示( )。
(分数:2.00)
A.控制流
B.数据流 √
C.输入流
D.输出流
解析:解析:数据流图中的主要图形元素与说明如下:加工(转换):输入数据经加工变换产生输出。
→数据流:沿箭头方向传送数据的通道,一般在旁边标注数据流名。存储文件:表示处理过程中存放各种数据的文件。数据的原点和终点:表示系统和环境的接口,属系统之外的实体。
5.下列数据流图(DFD)构造规则中正确的是( )。
(分数:2.00)
A.子图的输入输出数据流与父图中相关加工的输入输出数据流必须一致 √
国家二级C语言选择结构循环结构机试模拟试卷1_真题(含答案与解析)-交互
国家二级C语言(选择结构、循环结构)机试模拟试卷1
(总分66, 做题时间90分钟)
1. 选择题
1.
下列选项中,当x为大于1的奇数时,值为0的表达式是( )。
SSS_SINGLE_SEL
A x%2==0
B x/2
C x%2!=0
D x%2==1
分值: 2
答案:A
解析:算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是O。C选项的值为真,即1。D选项的值为真,即1。
2.
若a是数值类型,则逻辑表达式(a==1)‖(a!=1)的值是( )。
SSS_SINGLE_SEL
A 1
B 0
C 2
D 不知道a的值,不能确定
分值: 2
答案:A
解析:逻辑或“‖”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为l,则左边运算对象为1;若a的值不是l,则右边运算对象的值为1,所以总能保证一边非零。
3.
当变量e的值不为2、4、6时,值为“真”的表达式是( )。
SSS_SINGLE_SEL
A (c>=2&&e<=6)&&(c%2 1=1)
B (c==2)‖(c==4)‖(c==6)
C (c>=2&&c<=6)&&!(c%2)
D (c>=2&&c←6)‖(c!=3)lI(c!=5)
分值: 2
答案:D
解析:逻辑或运算符中只要有一个运算量为真,结果就是真,当c>=2&&c<=6条件不成立时,c的值肯定不是2、3、4、5、6,所以c!:3与c!:5均成立,所以D选项的结果一定为真。
4.
有以下程序: #include main() { int a=1,b=2,c=3,d=0;
if(a==1&&b++==2) if(b!=2‖c一!=3) prinff(“%d,%d,%d\n”,a,
b,c); else prinff(“%d,%d,%d\n”,a,b,c); else prinff(“%d,%d,%d\n”,a,b,c); } 程序的运行结果是( )。
国家二级C语言机试(选择题)模拟试卷118(题后含答案及解析)
国家二级C语言机试(选择题)模拟试卷118 (题后含答案及解析)
题型有:1.
1. 下列叙述中正确的是( )。
A.二分查找法只适用于顺序存储的有序线性表
B.二分查找法适用于任何存储结构的有序线性表
C.二分查找法适用于有序循环链表
D.二分查找法适用于有序双向链表
正确答案:A
解析:二分查找法(又称对分查找法)只适用于顺序存储的有序表。在此所说的有序表是指线性表的中元素按值非递减排列(即从小到大,但允许相邻元素值相等)。 知识模块:公共基础知识
2. 下列不属于软件设计阶段任务的是( )。
A.软件总体设计
B.算法设计
C.制定软件确认测试计划
D.数据库设计
正确答案:C
解析:从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计,所以A、B、D选项正确,C选项为软件测试阶段的任务。 知识模块:公共基础知识
3. 以下选项中合法的实型常量是
A..914
B.3.13e-2.1
C.0
D.2.0”10
正确答案:A
解析:实型常量又称实数或浮点数,一般用小数形式或指数形式来表示。实型常量分为以下两种形式: ①小数形式:小数形式是山数字和小数点组成的一种实数农示形式。例如0.345、.123、0.0等是合法的实数。这种表示形式必须要有小数点。 ②指数形式:在C语言中,用“e”或“E”后跟一个整数来表示以10为底的幂数。注意:字母“e”或“E”之前必须要有数字,后面的指数必须为整数。 选项B)中e后必须为整数,选项C)没有小数点,向选项D)则出现非法字符*。 知识模块:C语言基础知识
4. 以下叙述中正确的是
A.整型常量和实型常量都是数值型常量
B.常量的类型不能从字面形式上区分,需要根据类型名来决定
C.预定义的标识符是C语言关键字的一种,不能另作它用
D.只能在函数体内定义变量,其他地方不允许定义变量
正确答案:A
解析:整型常量和实型常量都是数值型常量,选项A正确;常量的类型可以从字面上区分,比如整型常量不能有小数点,组成字符为0~9等,选项B错误:预定义标识符,即预先定义并具有特定含义的标识符,可以另作他用,不过更改了原有的含义,选项C错误;变量可以定义住程序中任何的地方,属于不同的变量,选项D错误。 知识模块:C语言基础知识
国家二级C语言机试(函数和数组)模拟试卷10
国家二级C语言机试(函数和数组)模拟试卷10
(总分:54.00,做题时间:90分钟)
一、 选择题(总题数:27,分数:54.00)
1.有以下程序 #include<stdio.h>> main() {int a[]={10,20,30,40),*p=a,i; for(i=0;i<=3;i++){a[i]=*p;p++;} pfintf("%d\n",a[2]);}程序运行后的输出结果是
(分数:2.00)
A.20
B.30 √
C.10
D.40
解析:解析:因为指针变量p的初始值指向数组a,所以执行for循环语句后,数组a中的元素的值不变。
2.若有以下程序 main(){int i,j=0; char a[]="How are you!"; for(i=0;a[i];i++)
if(a[i]!='')a[j++]=a[i]; a[j]='\0'; printf("%s\n",a);}则程序的输出结果是
(分数:2.00)
A.Howareyou
B.Hay!
C.Howareyou! √
D.How are you!
解析:解析:主函数中利用for循环访问字符串的每一个字符,判断当前字符是否为空格,如果是空格则删除。因此删除字符串”How are you!”中空格以后,字符串为How are you!。
3.若有以下程序 #include<stdio.h> main(){int i,j=0; char a[]="How are you!",b[10]; for(i=0;a[i];i++) if(a[i]=='')b[j++]=a[i+1]; b[j]='\0'; printf("%s\n",b);}则程序的输出结果是
(分数:2.00)
A.Howareyou
B.Hay!
C.Howareyou!
D.ay √
解析:解析:主函数中利用for循环访问字符串a的每一个字符,判断当前字符是否为空格,如果是空格则保存该空格后面的一个字符存放到字符数组b中。在字符串"How are you!"中,第一个空格后面字符为'a',第二个空格后面字符为'v'。
国家二级C语言机试(C语言基础知识)模拟试卷20
国家二级C语言机试(C语言基础知识)模拟试卷20
(总分:60.00,做题时间:90分钟)
一、 选择题(总题数:30,分数:60.00)
1.我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是
(分数:2.00)
A.一条C语句可能会被转换成多条机器指令
B.一条C语句对应转换成一条机器指令 √
C.一条C语句可能会被转换成零条机器指令
D.某种类型和格式的C语句被转换成机器指令的条数是固定的
解析:解析:由C语言编写的程序,通过编译、链接转换成可以让机器识别的01二进制指令。这些二进制指令命令机器计算,这些就是机器指令,而C语言的语句条数和机器指令的条数不是一对一的关系。
2.以下选项中不属于C语言程序运算符的是
(分数:2.00)
A.sizeof
B.()
C.<> √
D.&&
解析:解析:sizeof为测试内存的运算符,()为算术运算符,&&为逻辑运算符。而<>不是C语言的运算符,C语言中!=表示不等于。
3.若变量已正确定义并赋值,以下不能构成C语句的选项是
(分数:2.00)
A.A=a+b;
B.B++;
C.a=a+b √
D.A?a:b;
解析:解析:C语言语句的表示为分号,不加分号的表达式不能看成C语句。
4.以下叙述中正确的是
(分数:2.00)
A.程序必须包含所有三种基本结构才能成为一种算法
B.如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达
C.只有简单算法才能在有限的操作步骤之后结束
D.我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令 √
解析:解析:C语句构成了函数,函数构成的程序,经过编译转换成二进制代码后可以运行,算法是指为解决某个特定问题而采取的确定且有限的步骤,可以利用代码来描述算法,而算法+数据结构才是程序,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成。由这三种基本结构组成的算法可以解决任何复杂的问题,反之则不一定,所有算法必须在有限步骤后结束。
全国计算机等级考试二级-基础知识和C语言程序设计 模拟考试试卷及答案(四)
1
全国计算机等级考试二级-基础知识和C语言程序设计
模拟考试试卷及答案(四)
一、选择题
(1)通常所说的主机主要包括
A)CPU B)CPU和内存
C)CPU、内存与外存 D)CPU、内存与硬盘
(2)在微机系统中,最基本的输入输出模块BIOS存放在
A)RAM中 B)ROM中 C)硬盘中 D)寄存器中
(3)一个24*24点阵的汉字字形信息所占的字节数为
A)2 B)24 C)32 D)72
(4)bit的意思是
A)字 B)字长 C)字节 D)二进制位
(5)某学校的工资管理程序属于
A)系统程序 B)应用程序
C)工具软件 D)文字处理软件
(6)与十六进制数BB等值的十进制数是
A)187 B)188 C)185 D)186
(7) 设一张软盘已染上病毒,能清除病毒的措施是
A)删除该软盘上的所有文件 B)格式化该软盘
C)删除该软盘上的所有可执行文件 C)删除该软盘上的所有批处理文件 2
(8)一张3.5英寸双面高密度软盘片的容量为
A)360KB B)720KB C)1.44MB D)1.2MB
(9)与二进制小数0.1等值的十六进制小数为
A)0.1 B)0.2 C)0.4 D)0.8
(10)DOS系统的热启动与冷启动的不同之处为热启动时
