2018年3月二级C语言上机题库及答案

时间:2019-05-14 17:00:29下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《2018年3月二级C语言上机题库及答案》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《2018年3月二级C语言上机题库及答案》。

第一篇:2018年3月二级C语言上机题库及答案

程序填空题:

给定程序中,函数fun的作用是:

注意:部分源程序在文件BLANK.C中。不得增行或删行,也不得更改程序的结构!

源程序如下

答案:

(1)x[i]<=’9’(2)j++(3)‘’

程序修改题:

给定程序中,函数fun的作用是:已知正整数n(规定n小于50000),统计它包含的0的个数,以及各位上最大的数。最大的数通过函数返回,0的个数通过形参传回。

注意:部分源程序在文件MODI1.C中。

不要改动main函数,不得增行或删行,也不得更改程序的结构!

源程序如下

答案:

t=0改为t==0 zero=count;改为*zero=count;

程序设计题:

请编写一个函数fun,它的功能是:比较一个数组中奇数的个数与偶数的个数,并计算个数多的数的算术平均数。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

答案:

第二篇:二级C语言上机题库_南开100题

工作感受心得

我是体育部的部委李盟,在加入我们学校学生会体育部不久后加入前湖礼仪工作组,担任出礼仪的工作.在我出礼仪工作的工程中,收获很多,体会也很多 ,丰富了我在学生会的工作经验,同时也更加丰富了我在学生时代的人生经验,收获的不只是在学生会工作的工作经验,也有在以后到社会上工作的经验.有的人认为出礼仪的工作只是穿着西装站在那里,笔直的站着,但其实不是那样的.但是那样确是我们礼仪工作人员的基本要求.我们既然是出礼仪就要有当礼仪的样子.表现出你文明礼貌的一面.首先,你的形象,便反映出你对他人的尊敬.因而你的衣着要整洁,干净,领带要打正,穿西装的时候要穿深色的袜子,工作证要正戴在你的胸前........等等一些关于个人衣着的基本要求.接着就是要战好,欢迎前来的领导,老师,同学,这是我们体会最深的一个过程,就好象军训的时候站军姿一样,要笔直的站好体现出你的精神面貌,不可以东歪西晃,不可以有小动作,面部表情自然.这一站少的二十,三十分钟,多了就一两个小时,甚至有人站了六个小时一动不动,那种痛楚是可以想象到的.这是就考验我们个人的定力与毅力的时候了.我们被选出来参加礼仪工作,这既是一种荣誉,同时也是一份责任,甚至可以说这个时候,你不单是代表你个人,从某种程度上来说更加代表了我们学生会的工作人员的精神面貌.因此我们的坚持是必须的更加是值得的.我们的工作不单单是只有在入场和撤场的时候站在那里欢迎大家的到来和离开,再忙完了站岗后,我们有时还要担任维护现场秩序的职责.有时后来了好多人,在会上如果你讲一句,他讲一句即使是在讲的好的时候的喝彩也会使会场很乱,演讲的人可能会因为他人的不礼貌之处而受到影响.这时候就要我们出来维护现场的秩序,我们一定秉着公正的原则,用礼貌的方式去来维护现场的秩序,不能因为我和谁认识就庇护他,也不能因为他上级就畏惧他.有的时候有些人的反映方式会很难让人接受,我们仍然会礼貌的去告诉他因为我们是礼仪工作人员我们是学生会的工作人员,我们的目的就是为同学服务.在我工作的这几次的经历中,带给我的除了汗水,充实的感觉外,更多的是工作的宝贵的经验和我做事的原则.我很荣幸能够加入这一个工作队伍,带给我太多太多.那些宝贵的经验都将是我以后工作时宝贵财富,做事的指导.感谢这一平台所带给我的一切.

第三篇:2016年计算机二级c语言题库及答案

2016年计算机二级c语言题库及答案

一、选择题(每小题1分,共40小题,共40分)

1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为()。

A.20

B.0或35

C.15

D.16

2.下列关于栈的叙述中,正确的是()。

A.栈底元素一定是最后入栈的元素

B.栈操作遵循先进后出的原则

C.栈顶元素一定是最先入栈的元素

D.以上三种说法都不对

3.下列链表中,其逻辑结构属于非线性结构的是()0、A.双向链表

B.带链的栈

C.二叉链表

D.循环链表

4.在关系数据库中,用来表示实体间联系的是()。

A.网状结构

B.树状结构

C.属性

D.二维表

5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是()。

A.1:m联系

B.m:n联系

C.1:1联系

D.m:l联系

6.右两个关系R和S如下:

则由关系R得到关系S的操作是()。

A.自然连接

B.并

C.选择

D.投影

7.数据字典(DD)所定义的对象都包含于()。

A.软件结构图

B.方框图

C.数据流图(DFD图)

D.程序流程图

8.软件需求规格说明书的作用不包括()。

A.软件设计的依据

B.软件可行性研究的依据

C.软件验收的依据

D.用户与开发人员对软件要做什么的共同理解

9.下面属于黑盒测试方法的是()。

A.边界值分析

B.路径覆盖

C.语句覆盖

D.逻辑覆盖

10.下面不属于软件设计阶段任务的是()。

A.制订软件确认测试计划

B.数据库设计

C.软件总体设计

D.算法设计

11.以下叙述中正确的是()。

A.在C语言程序中,main函数必须放在其他函数的最前面

B.每个后缀为C的C语言源程序都可以单独进行编译

C.在C语言程序中,只有main函数才可单独进行编译

D.每个后缀为.C的C语言源程序都应该包含一个main函数

12.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是()。

A.预定义标识符(如库函数中的函数名)可用做用户标识符,但失去原有含义

B.用户标识符可以由字母和数字任意顺序组成

C.在标识符中大写字母和小写字母被认为是相同的字符

D.关键字可用做用户标识符,但失去原有含义

13.以下选项中表示一个合法的常量是(说明:符号口表示空格)()。

A.9口9口9

B.0Xab

C.123E0.2

D.2.7e

14.C语言主要是借助以下哪个功能来实现程序模块化?()

A.定义函数

B.定义常量和外部变量

C.三种基本结构语句

D.丰富的数据类型

15.以下叙述中错误的是()。

A.非零的数值型常量有正值和负值的区分

B.常量是在程序运行过程中值不能被改变的量

C.定义符号常量必须用类型名来设定常量的类型

D.用符号名表示的常量叫符号常量

16.若有定义和语句:int a,b;scanf(“%d,%d”,&a,&b);以下选项中的输人数据,不能把值3赋给变量a、5赋给变量b的是()。

A.3,5,B.3,5,4

C.3,5

D.3,5

17.C语言中char类型数据占字节数为()。

A.3

B.4

C.1

D.2

18.下列关系表达式中,结果为“假”的是()。

A.(3+4)>6

B.(3!=4)>2

C.3<=4‖D.(3<4)=1

19.若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch语句是()。

A.switch(a+9)

{case cl:y=a-b;

case c2:y=a+b;

}

B.switch a*b

{case l0:x=a+b;

default:y=a-b;

}

C.switch(a+b)

{casel:case3:y=a+b;break;

case0:case4:y=a-b;

}

D.switch(a*a+b*b)

{default:break;

case 3:y=a+b;break;

case 2:y=a-b;break;

}

20.有以下程序:

#include

main()

{ int a=-2,b=0;

while(a++&&++b);

printf(“%d,%dn”,a,b);

}

程序运行后的输出结果是()。

A.1,3

B.0,2

C.0,3

D.1,2

21.设有定义:int x=o,* P;,立刻执行以下语句,正确的语句是()。

A.p=x;

B.* p=x;

C.D=NULL;

D.* p=NULL;

22.下列叙述中正确的是()。

A.可以用关系运算符比较字符串的大小

B.空字符串不占用内存,其内存空间大小是0

C.两个连续的单引号是合法的字符常量

D.两个连续的双引号是合法的字符串常量

23.有以下程序:

#include

main()

{ rhar a=’H’;

a=(a>=’A’&&a<=’2’)?(a-’A’+’a’):a;

printf(“%cn”,a);

}

程序运行后的输出结果是()。

A.A

B.a

C.H

D.h

24.有以下程序:

#include

int f(int x);

main()

{ int a,b=0;

for(a=0;a<3;a++)

{b=b+f(a);putchar(’A’+b);}

}

int f(int x)

{ return x * xl;}

程序运行后的输出结果是()。

A.ABE B.BDI C.BCF D.BCD

25.设有定义:int x[2][3];,则以下关于二维数组X的叙述错误的是()。

A.x[0]可看做是由3个整型元素组成的一维数组

B.x[0]和x[l]是数组名,分别代表不同的地址常量

C.数组X包含6个元素

D.可以用语句x[o]=0;为数组所有元素赋初值0

26.设变量P是指针变量,语句P=NULL;是给指针变量赋NULL值,它等价于()。

A.p=“";

B.p=”0“;

C.p=0;

D.p=”;

27.有以下程序:

#include

main()

{int a[]={10,20,30,40},*p=a,j;

for(i=0;i<=3;i++){a[i]=*P;p++;}

printf(“oAdn”,a[2]);

}

程序运行后的输出结果是()。

A.30

B.40

C.10

D.20

28.有以下程序:

#include

#define N 3

void fun(int a[][N],int b[])

{ int i,j;

for(i=0;i

for(j=i;j

}

main()

{int x[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;

fun(x,y);

for(i=0;i

}

程序运行后的输出结果是(,)。

A.2,4,8,B.3,6,9,C.3,5,7,D.1,3,5,29.有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数):

#include

#include

main()

{char a[10]=“abc”,b[10]=“012”,c[10]=“xyz”;

strcpy(a+1,b+2);

puts(strcat(a,c+1));

}

程序运行后的输出结果是()。

A.al2xyz

B.12yz

C.a2yz

D.bc2yz

30.以下选项中,合法的是()。

A.char str3[]={’d’,’e’,’b’,’u’,’g’,’’};

B.char str4;str4=“hello world”;

C.char name[10];name=“china”;

D.char strl[5]=“pass”,str2[6];str2=strl;

31.有以下程序:

#include

main()

{ char*s=“[2]34”;int k=0,a=0;

whil(s[k+1]!=’o’)

{ k++;

if(k%2=o){a=a+(s[k]-’0’+1);continue;}

a=a+(s[k]-’0’);

printf(“k=%d a=%dn”,k,a);

}

程序运行后的输出结果是()。

A.k=6 a=11

B.k=3 a=14

C.k=4 a=12

D.k=5 a=15

32.有以下程序:

#include

main()

{char a[5][10]={“one”,“tw0”,“three”,“four”,“five”};

int i,j;

char t:、for(i=0;i<4;i++)

for(j=i+1;j<5;j++)

if(a[i][O]>a[j][0])

{t=a[i][O];a[i][O]=a[j][O];a[j][O]=t;)

puts(a[1]);

}

程序运行后的输出结果是()。

A.fwo

B.fix

C.two

D.owo

33.有以下程序:

#include

int a=1,b=2:

void funl(int a,int b)

{printf(“%d%d”,a,b);}

void fun2()

{ a=3;b=4;}

main()

{ funl(5,6);fun2();

printf(“%d%dn”,a,b);

}

程序运行后的输出结果是()。

A.1 2 5 6

B.5 6 3 4

C.5 6 1 2

D.3 4 5 6

34.有以下程序:

#include

void func(int n)

{ static int num=1);

num=num+n;printf(“%d”,num);

}

main()

{funo(3);func(4);printf(“n”);}

程序运行后的输出结果是()。

A.4 8

B.3 4

C.3 5

D.4 5

35.有以下程序:

#include

#include void fun(int*pl,int*p2,int*s){ s=(int*)malloc(sizeof(int));

*s=*pl+*p2;

free(s);

}

main()

{int a=1,b=40,*q=&a;

fun(&a,&b,q);

printf(“%dn”,*q);

}

程序运行后的输出结果是()。

A.42

B.0

C.1

D.41

36.有以下程序:

#include

struct STU{char name[9];char sex;int score[2];};

void f(struct STU a[])

{ struct STU b={“Zhao”,’m’,85,90);

a[1]=b;

}

main()

{struct STU c[2]={{“Qian”,’f’,95,92},{“Sun”,’m’ 98,99}};

f(c);

printf(”%s,%c,%d,%d,¨,c[o].name,c[o].sex,c[o].score[o],c[o].score[1]);

printf(“%s,%c,%d,%dn”,c[1].name,c[1].sex,c[1].score[o],c[1].score

[1]);

}

程序运行后的输出结果是()。

A.Zhao,m,85,90,Sun,m,98,99

B.Zhao,m,85,90,Qian,f,95,92

C.Qian,f,95,92,Sun,m,98,99

D.Qian,f,95,92,Zhao,m,85,90

37.以下叙述中错误的是()。

A.可以用typedef说明的新类型名来定义变量

B.typedef说明的新类型名必须使用大写字母,否则会出编译错误

C.用typedef可以为基本数据类型说明一个新名称

D.用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名

38.以下叙述中错误的是()。

A.函数的返回值类型不能是结构体类型,只能是简单类型

B.函数可以返回指向结构体变量的指针

C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员

D.只要类型相同,结构体变量之间可以整体赋值

39.若有定义语句int b=2;,则表达式(b<<2)/(3‖b)的值是()。

A.4

B.8

C.0

D.2

40.有以下程序:

#include

main()

{ FILE*fp;int i,a[6]={1,2,3,4,5,6};

fp=fopen(“d2.dat”,“w+”);

for=(i=o;i<6;,i++)fpintf(fp,“%dn”,a[i]);

rewind(fp);

for(i=0;i%6;i++)fscanf(fp,“%d”,&a[5-i]);

fclose(fp);

for(i=0;i%6;i++)printf(“%d,”,a[i]);

}

程序运行后的输出结果是()。

A.4,5,6,1,2,3,B.1,2,3,3,2,1,C.1,2,3,4,5,6,D.6,5,4,3,2,1,二、基本操作题(共18分)

str是一个由数字和字母字符组成的字符串,由变量num传人字符串长度。请补充函数proc(),该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。

例如,str=“abcl23de45f967”,结果为:l234567。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#define M 80

int bb[M];

int proc(char str[],int bb[],int num)

{

int i,n=0;

for(i=0;i

if(【1】)

{

bb[n]=【2】;

n++;

}

}

return 【3】;

}

void main()

{

char str[M];

int num=0,n,i;

printf(“Enter a string:n”);

gets(str);

while(str[num])

num++:

n=proc(str,bb,num);

printf(“nbb=”);

for(i=0;i

}

三、程序改错题(共24分)

下列给定程序中,函数proc()的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCIl码升序排序后输出。

例如,输入opdye,则应输出deopy。

请修改程序中的错误,使它能得到正确结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include%string.h>

#include%stdlib.h>

#include

#include

//****found****

int proc(char str[])

{

char C;

unsigned i,j;

for(i=0;i

{

c=str[j]:

//****found****

str[j]=str[i++];

str[i]=C;

}

}

void main()

{

char st/[81];

system(“CLS”);

printf(“nPlease enter a character

string:”);

gets(str);

printf(“nknBefore sorting:n %s”,str);

proc(str);

printf(“nAfter sorting decendingly:n

%S”,str);

}

四、程序设计题(共18分)

请编写函数proc(),它的功能是计算:s=(In(1)4+ln(2)4+ln(3)+…+In(m))0.在C语言中可调用log(n)函数求ln(n)。

例如,若m的值为30,则proc()函数值为8.640500。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。

试题程序:

#include

#include

#inclllde

#include

double proc(int m)

{

}

void main()

{

system(“CLS”);

printf(“%fn”,proc(30));

}

【参考答案及专家详解】

一、选择题

1.B。【解析】Q(1:35)则队列的存储空间为35;对空条件:front=rear(初始化时:front=rear),队满时:(rear+1)%n= =front,n为队列长度(所用数组大小),因此当执行一系列的出队与入队操作,front=rear.则队列要么为空,要么为满。

2.B。【解析】栈是先进后出,因此,栈底元素是先入栈的元素,栈顶元素是后入栈的元素。

3.C。【解析】数据的逻辑结构是描述数据之间的关系,分两大类:线性结构和非线性结构。线性结构是n个数据元素的有序(次序)集合,指的是数据元素之间存在着“一对一”的线性关系的数据结构。常用的线性结构有:线性表,栈,队列,双队列,数组,串。非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后驱。常见的非线性结构有:树(二叉树等),图(网等),广义表。

4.D。【解析】单一的数据结构——关系,现实世界的实体以及实体间的各种联系均用关系来表示。数据的逻辑结构——二维表,从用户角度,关系模型中数据的逻辑结构是一张二维表。但是关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种关系。

5.A。【解析】部门到职员是一对多的,职员到部门是多对一的,因此,实体部门和职员间的联系是l:m联系。

6.C。【解析】选择:是在数据表中给予一定的条件进行筛选数据。投影:是把表中的某几个属性的数据选择出来。连接:有自然连接、外连接,内连接等,连接主要用于多表之间的数据查询。并:与数学中的并是一样的。两张表进行并操作,要求它们的属性个数相同并且需要相容。

7.C。【解析】数据字典(DD)是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。

8.B。【解析】《软件可行性分析报告》是软件可行性研究的依据。

9.A。【解析】黑盒测试方法主要有等价类划分、边界值分析、因果图、错误推测等。白盒测试的主要方法有逻辑驱动、路径测试等,主要用于软件验证。

10.A。【解析】软件设计阶段的主要任务包括丙个:一是进行软件系统的可行性分析,确定软件系统的建设是否值得,能否建成。二是进行软件的系统分析,了解用户的需求,定义应用功能,详细估算开发成本和开发周期。

11.B。【解析】C语言是一种成功的系统描述语言,具有良好的移植性,每个后缀为.C的C语言源程序都可以单独进行编译。

12.A。【解析】用户标识符不能以数字开头,C语言中标识符是区分大小写的,关键字不能用做用户标识符。

13.B。【解析】当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面数要为整数。

14.A。【解析】C语言是由函数组成的,函数是C语言的基本单位。所以可以说C语言主要是借助定义函数来实现程序模块化。

15.C。【解析】在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:#define标识符常量。

16.C。【解析】在输入3和5之间除逗号外不能有其他字符。

17.C。【解析】Char类型数据占1个字节。

18.B。【解析】在一个表达式中,括号的优先级高,先计算3!=4,为真即是l,1>2为假。

19.D。【解析】选项A,当cl和c2相等时,不成立;选项B,a*b要用括号括起来;选项C,case与后面的数字用空格隔开。

20.D。【解析】输出的结果是:-1,1 0,2 1,2

21.C。【解析】如果没有把P指向一个指定的值,*P是不能被赋值的。定义指针变量不赋初始值时默认为null。

22.D。【解析】比较两个字符串大小用函数strcomp(S,t),空字符串有结束符,所以也要占用字节,两个双引号表示的是空字符串。

23.D。【解析】多元运算符问号前面表达式为真,所以(a-’A’+’a’)赋值给a,括号里的运算是把大写字母变成小写字母,所以答案应为选项D。

24.B。【解析】第一次循环时,b=1,输出结果为B;

第二次循环时,b=3,输出结果为D;

第三次循环时,b=8,输出结果为I。

25.D。【解析】x[0]是不能赋值的。

26.C。【解析】在C语言中null等价于数字0。

27.A。【解析】For循环结束后,数组a的值并没有变化,由于数组是由0开始,所以a[2]的值是30。

28.B。【解析】Fun函数功能是把数组a的每一行的最大值赋给b,a的第一行的最大值是3,第二行的最大值是6,第三行的最大值是9,所以答案是3,6,9。

29.C。【解析】第一次执行字符串的复制函数a的值是a2,第二次执行的是字符串的连接函数,所以运行结果为a2yz。

30.A。【解析】选项B不能把一个字符串赋值给一个字符变量,选项c和D犯了同样的错误是把字符串赋给了数组名。

31.C。【解析】输出结果:k=1 a=2

k=2 a=4 k=3 a=7

k=4 a=12

32.A。【解析】For循环完成的功能是把二维数组a的第一列的字母按从小到大排序,其他列的字母不变。

33.B。【解析】Funl是输出局部变量的值,fun2是把全局变量的值改成3和4,所以输出的结果是5634。

34.A。【解析】第一调用func函数时输出4,第二次调用func函数时num的值并不会释放,仍然是上次修改后的值4,第二次调用结果为8,所以输出结果是4 8。

35.C。【解析】Fun函数功能是新开辟内存空间存放a和b的地址,q的地址并没有变化,所以应该还是指向地址a。

36.D。【解析】F函数是为结构体数组的第二个数赋值,数组的第一个数没有变化,所以正确答案应选D。

37.B。【解析】用typedef说明的类型不是必须用大写,而是习惯上用大写。

38.A。【解析】函数返回值类型可以是简单类型和结构体类型。

39.B。【解析】2的二进制数为010,移两位后的二进制数为01000,转成十制数为8,(3||2)为真即1,8/ 1=8,所以结果为8。

40.D。【解析】这个是对文件的操作,把数组的数写到文件里,然后再从文件里倒序读出。所以输出结果为6,5,4,3,2,1。

二、基本操作题程序填空题

【1】str[i]>=’0’&&str[i]<=’9’【2】str[i]-’O’【3】n

【解析】题目中要求把字符串str中的数字字符转换成数字并存放到整型数组bb中。首先,应判断字符串str中每个字符是否是数字字符。因此,【1】处填“str[i]>=’0’&&str[i]<=’9’”将每一个数字字符转化为数字放在整型数组bb中,因此,【2】处填“str[i]-’0’;由函数proc()可知,变量n中存放整型数组bb中的元素个数,最后要返回到主函数当中,因此,【3】处填’n’。

三、程序改错题

(1)错误:int proc(char str[])

正确:void proc(char str[])

(2)错误:str[j]=str[i++];

正确:str[j]=str[i];

【解析】由主函数中的函数调用可知,函数proc()没有返回值。因此,“int proc(char str[])”应改为“void proc(char str[])”;由函数proc()可知,if语句块完成将字符串str中的第i个元素与第j个元素相交换。因此,“str[j]=str[i++];”应改为“str[j]=str[i];”。

四、程序设计题

double proc(int m)

{

int i;

double s=0.0;//s是表示其和

for(i=1;i<=m;i++)

s=s+log(i);//计算s=ln(1)+ln(2)+ln(3)+…+ln(m)

return sqrt(s);//最后将其开平方的值返回到主函数中

}

【解析】由题目中所给表达式可知,表达式的值为m项表达式的和然后开平方。可以首先通过m次循环求得m项表达式的和,然后将其和开平方并返回到主函数当中。

第四篇:二级C语言上机题做法小结

二级C语言上机题做法小结

陈忠权 记

一.天空题。

1.如果是填函数的返回值,去看return返回值的类型,就是函数的返回类型。如果return找不到,就看函数的调用。

2.在for语句中,如 for(i=0;i<=_____;i++),一般填N,如果没有N,有小n,就填小n.3.平均值的两种求法,一种是中数除个数,如s/N;一种是每个数除个数后再把值相加。如av=av+s[i]/N.4.在while语句中,下面一定会有个什么加加,否则不能进行循环。

5.在循环结构中注意两级循环for语句中i与j的关系,从而定位该填什么。

6.如果是赋初值,就看你所赋的值的变量是拿去干什么,如果是用去加就赋0如果是用去乘就赋1.如果是指针的,就去题目中找一个类型相同的具有实值的变量赋给她.7.结构体的调用如b.name和a.sno等。

8如果在题目中看到(*ss)那么后面一定是填一个数组,如(*ss)[][M]或(*ss)[M].9.注意拷贝命令的写法。

10如果在填空题中程序与数的组合有关,哪就会与10有关。是除10,还是与10求余。11.一个字符要变成相应的整形的数,就让这个字符减去字符’0’或是48就可。

12.带头结点的写法如p->next.13.定义文件FILE,文件名filename,打开文件fopen()阅读文件名fread()关闭文件fclose()

14.奇数与2求余成立,偶数与2求余为0 15.插入的写法和删除的写法,删除一个东西就让他等于0就行

二.改错题(在/*********found*********/下一行就是错误点)

1.只要看到(*ss)++就一定是去括号。

2.注意函数内的变量,如果在题中使用时带有*号,那么变量定义中一定要加上*号。注意函数类型是否正确,看return。

3.看关键字是否写正确,一定要是蓝体的才是正确的。有可能是字母位置错,或是大小写不对。

4.for语句中一定是两个分号,不是逗号。

5.字符串的长度比下标大一,如果要让她等于下标的话要减去1.6.在if语句中大于、小于号一般互换,如果在公式中如果包含n或m就要小于等于n或m。7.等号一般在if语句中出现为==,不是赋值的=.8.在if或while与句中< > 号一般可互换。9.注意错处得0和O是否混用了。10.注意带头结点的写法。11.%号和/号互换。

12.注意题中大小写的错误。13.注意交换的写法.14.如n=strlen[aa] 这种写法是错的,这是调用,不是定义,应写为n=strlen(aa)

15.注意符号使用的错误。

16.看是否少分号。

17看函数的返回值是否正确,看return。18.sum一般赋初值为0.19.Scanf语句中一定要有&号。

20.函数的定义不能是fun(int x,y,z)这种写法,应是fun(int x,int y,int

z)21.数组的定义一般为s[M]或s[][M]在二维数组的定义中第二个方括号中一定要有一个数M或其他。

22.如果程序是把小写变成大写就减去32就行。

三.程序编写题。

如果遇到的是void无返回值类型的函数,就在里面填int czq=1;就行。填好之后就编译,运行。程序完整运行之后,去打开考生文件夹(用记事本打开,如果记事本不能用,就用vc++6.0软件打开),参照in文件(如果没有in文件,哪么数据就可能在程序中,或运行中显示出来)修改out文件或写out文件。保存就可。

如果是有返回值类型的函数,就在里面填return 1;就行,同样运行,修改或写out文件就行。

下面举两个例子;

1,。如第10题:

#include void fun(char *a, int n){ int czq=1;

}

main(){ char s[81];int n;

printf(“Enter a string:n”);gets(s);

printf(“Enter n : ”);scanf(“%d”,&n);

fun(s,n);

printf(“The string after deleted:n”);puts(s);

NONO();} NONO(){/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE *in, *out;

int i, n;char s[81];

in = fopen(“D:k0124010001in.dat”,“r”);

out = fopen(“D:k0124010001out.dat”,“w”);

for(i = 0;i < 10;i++){

fscanf(in, “%s”, s);

fscanf(in, “%d”, &n);

fun(s,n);

fprintf(out, “%sn”, s);

}

fclose(in);

fclose(out);考试就在fun函数中填int czq=1;然后运行结束后打开考生文件夹,in为 *******A*BC*DEF*G**** 4 *******A*BC*DEF*G**** 8 **********LKJFHG****KHJ***SDFGH****KJKJ*J*K*K*J***** 4 ******OGH*GKLJ*LKJ*LKJ*KLKJHG*DQ*LJ*KJ***** 5 ********HJJKD***JHHKJH*DGH*TDFHG*TYRYTRIU*JGJ********** 3 *****HKHJLKH***GUHHJ*GFHJ**GJHK***GJKGK****KHKLHKJHKJ*** 2 ******JHGDFXGGJH****JFHGFK**HKH**KJHKL***KLH*** 3 ************UYKJDFARTQYW*****HFGUJ**KJHKJ**KJHK*** 4 ********JKHILUHIUGCLKLKJGH*******HJGHG**KJH**JY*JH*M*HJH**** 3 *****JKH***GHJK*JHGG*GGJK*GJKG*GKJ*GH*GK*JK***** 2 打开out文件为;

*******A*BC*DEF*G**** *******A*BC*DEF*G**** **********LKJFHG****KHJ***SDFGH****KJKJ*J*K*K*J***** ******OGH*GKLJ*LKJ*LKJ*KLKJHG*DQ*LJ*KJ***** ********HJJKD***JHHKJH*DGH*TDFHG*TYRYTRIU*JGJ**********

*****HKHJLKH***GUHHJ*GFHJ**GJHK***GJKGK****KHKLHKJHKJ*** ******JHGDFXGGJH****JFHGFK**HKH**KJHKL***KLH*** ************UYKJDFARTQYW*****HFGUJ**KJHKJ**KJHK***

********JKHILUHIUGCLKLKJGH*******HJGHG**KJH**JY*JH*M*HJH**** *****JKH***GHJK*JHGG*GGJK*GJKG*GKJ*GH*GK*JK*****

然后参照题目要求,是使字符串的前导*号不能多于n个,多于的就删掉,少的就不用管。哪么in文件中不是有数字如4、8、4、5、3等这就是n的值。如第一行就是前导*号不能多于4个,多的就删掉。第一行该为: ****A*BC*DEF*G**** 同样的我们把所有的改完为; ****A*BC*DEF*G****

*******A*BC*DEF*G**** ****LKJFHG****KHJ***SDFGH****KJKJ*J*K*K*J***** *****OGH*GKLJ*LKJ*LKJ*KLKJHG*DQ*LJ*KJ***** ***HJJKD***JHHKJH*DGH*TDFHG*TYRYTRIU*JGJ********** **HKHJLKH***GUHHJ*GFHJ**GJHK***GJKGK****KHKLHKJHKJ*** ***JHGDFXGGJH****JFHGFK**HKH**KJHKL***KLH*** ****UYKJDFARTQYW*****HFGUJ**KJHKJ**KJHK*** ***JKHILUHIUGCLKLKJGH*******HJGHG**KJH**JY*JH*M*HJH**** **JKH***GHJK*JHGG*GGJK*GJKG*GKJ*GH*GK*JK***** 这样改完以后,保存就行了,40分就拿到手了。

2.如第2题;

#include #define

N typedef struct { char

num[10];

int

s;} STREC;int fun(STREC *a,STREC *b,int l, int h){ return 1;

}

main(){ STREC s[N]={{“GA005”,85},{“GA003”,76},{“GA002”,69},{“GA004”,85},{“GA001”,96},{“GA007”,72},{“GA008”,64},{“GA006”,87},{“GA015”,85},{“GA013”,94},{“GA012”,64},{“GA014”,91},{“GA011”,90},{“GA017”,64},{“GA018”,64},{“GA016”,72}};

STREC h[N],tt;FILE *out;

int

i,j,n,low,heigh,t;

printf(“Enter 2 integer number low & heigh : ”);

scanf(“%d%d”, &low,&heigh);

if(heigh< low){ t=heigh;heigh=low;low=t;}

n=fun(s,h,low,heigh);

printf(“The student's data between %d--%d :n”,low,heigh);

for(i=0;i

printf(“%s %4dn”,h[i].num,h[i].s);

printf(“n”);

out = fopen(“D:k0124010001out.dat”,“w”);

n=fun(s,h,80,98);

fprintf(out,“%dn”,n);

for(i=0;i

for(j=i+1;j

if(h[i].s>h[j].s){tt=h[i];h[i]=h[j];h[j]=tt;}

for(i=0;i

fprintf(out,“%4dn”,h[i].s);

fprintf(out,“n”);

fclose(out);} 由于是有返回值的就在程序中填return 1;就同样运行,打开考生文件夹为; 发现没有in文件,只有out文件为; 1-858993460 很显然数据在程序中为:

STREC s[N]={{“GA005”,85},{“GA003”,76},{“GA002”,69},{“GA004”,85}, {“GA001”,96},{“GA007”,72},{“GA008”,64},{“GA006”,87},{“GA015”,85},{“GA013”,94},{“GA012”,64},{“GA014”,91},{“GA011”,90},{“GA017”,64},{“GA018”,64},{“GA016”,72}};在看看题目是要我们找一个分数段的人数返回,和输出在这个分数段的分数,按从小到大的输出。那么我们可以在程序中看出为:

n=fun(s,h,80,98);看出是找80到98这个分数段的人数及分数。

哪么从小到大的输出在这个分数段的分数从什么看出了?看一下语句:

if(h[i].s>h[j].s){tt=h[i];h[i]=h[j];h[j]=tt;}看到了,如果大于就交换,哪么是不是把小的放在前面了?

在看看发printf语句为:

fprintf(out,“%dn”,n)一般我们要看输出格式,如(”%4d”)格式就得注意空格换行等,那么我们可以在out文件中删除所有东西后写入如下: 8 85 85 85 87 90 91 94 96 我们可以看出8是这分数段的人数,其他为在这分数段的分数排序写法。做到这里点击记事本,文件、保存就行。

第五篇:C语言二级上机考试要点总结

具有三种题型:程序填空、程序修改和程序设计,其中程序填空30分,程序修改30分,程序设计40分。[1]从以往的机试的情况来看,许多考生在程序设计题目上失分比较严重,而程序设计题占总分值的40%,一旦答错,如果程序填空和程序修改又不能取得满分的话,就不能通过上机考试。

2007年9月,教育部考试中心对现有的全国计算机等级考试大纲进行了改革,二级C语言上机考试时间由60分钟增加到了90分钟,编程环境由以前的TC2.0改为VC++6.0。[2]本文根据对近几年来二级C语言上机考试中的程序设计题进行归类总结,提出相应的策略,并对考生应对2007新大纲以后的C语言上机环境给出一些建议。2 对以往考试的分析

历年的全国计算机等级考试中二级C语言上机考试程序设计题目全部出自于由南开大学出版社编写南开100题,每次考试教育部考试中心会对题库做相应的改动,增加一些新的题型或题目,考试中,考生随机抽取一套进行测试。笔者对2005年4月至2007年9月2004版新大纲以后的6次考试中的程序设计题目进行了总结,将这些题目一共分成了6大类,对每种类型的题目进行了分析。2.1 对一维数组和字符串的操作

该类型的题目在以往的机试中所占比例最大,为40%,考生应对该知识点做全面的复习和掌握。一维数组可以分为数值型和字符型,其中数值型数组的数据类型为整型和实型,字符型数组的数据类型为字符型,我们通常会把字符型数组叫做字符串,但是应该注意字符型数组与字符串之间是存在区别的,也就是’’结束标志问题。在复习该部分的时候,考生应该掌握以下两个问题:(1)对一维数组的操作

对一维数组进行操作的时候,不可避免的要访问相关的数组元素,在C语言中访问数组元素一般采取单层循环的方法进行遍历,假设数组长度为n,数组下标是在0到(n-1)之间的,考生应该牢固掌握在一维数组中求最大值、最小值,移动元素,查找特定值,存储数组元素的方法。

(2)对字符串的操作

该类问题是每次考试的重点和难点,特别是将字符串同指针结合起来以后,难度就更大了。考生在解决此类问题是应特别注意字符串的结束标志’’,它不仅仅用来作为字符串的结束标志,而且在对字符串进行操作的时候,它也是循环的结束标志。考生在复习该部分的时候,应该注意这样的几个基本问题:大小字母转换、奇偶数判别、删除或添加指定的字符和字符的移动。此外,考生应该牢固掌握指针的特性及字符串操作函数的使用和实现方法,特别是字符串连接函数与求子串函数,在以往的考试中多次要求考生自己编写,考生应对该知识点做重点掌握。2.2 数值计算

该类型的题目在历年的机试中占22%,考查的机率也非常高。该类题目一般给定一个数列计算公式,然后要求考生编写一个函数类实现求数列的前n项的值、累加和或者积。在解决该类的问题,首先要找到给定数列的变化规律,然后根据其变化规律来编写一个单层或者双层的循环来求其相应的值。在编写程序的过程中,往往还会用到一些数学函数,如:sqrt()、fabs()、pow()等,考生应该牢固掌握math.h中的一些常用数学函数的功能和使用方法。另外,还应该注意数据类型之间的区别,特别是float和int类型,不同的数据类型产生的运算结果也是不一样的。2.3 对结构体的操作

该部分对非计算机专业的学生来说是一个难点,因为结构体在《数据结构》这门课程中应用最为广泛,但考生忽视对该知识点的复习,但在以往的机试中,有17%的题目是属于该类型。考生在复习这部分的时候,首先应注意结构体成员的两种不同的引用方法:结构体变量和指向结构体的指针,也就是结构体成员运算符’.’和指向运算符’->’,在编程的过程中,往往会涉及到结构体数组,其实这类数组除了数据类型是结构体以外,其它的特性和普通数组是一样的,结构体除了定义、赋值和初始化以外,它的其它操作和普通变量也是一样的,包括在结构体数组(记录)中进行查找、删除、求最大最小值等操作,我们应该用对待普通变量的方法来解决结构体的问题,这样的话,难度就可以大幅度的降低。2.4 对二维数组的操作

该类问题在历年的机试中占16%,考生应对二维数组的数组元素的遍历方法、存储方式、矩阵转换等问题做重点掌握。在C语言中,访问二维数组的数组元素一般采用双层循环的方法实现,因为二维数组具有两个下标:行下标与列下标;二维数组可以按行或者按列转化成一维数组进行存储;对二维数组进行行列转换的时候,要将行下标和列下标进行互换。考生还应该掌握上三角矩阵、下三角矩阵的特性,在考试中,该知识点也有所涉及。2.5 数制转换

该部分在以往的机试中占11%,包括两类问题:一是整数合并,二是类型转换。在复习该部分时,考生应该注意C语言中int型、long型、float型和double型数据所占的存储空间的大小和精度,注意’%’(模)运算和’/’(除法)运算的特点,特别应该灵活的使用模运算与除法运算求数据相应位数上的数值。掌握强制类型转换的方法以及按规定的位数保留小数的方法。2.6 素数

该部分在历年的机试中占6%,考生应该牢固掌握素数的基本概念和判断素数的方法。特别需要考生注意的是整数1不是素数,所以在判断素数的时候,应该从2开始,到(n-1)结束,能够除尽的不是素数,不能除尽的是素数。判断素数问题是C语言中的一个基本算法,不仅会在程序设计中会考到,而且往往在程序填空和程序改错中也会有所涉及,因此,考生应对该知识点认真复习。3 程序设计中应注意的问题 3.1 熟悉编程环境

根据2007年9月教育部考试中心颁布的新大纲,二级C语言的编程环境由TC2.0改为VC++6.0,考生应该熟练掌握VC++6.0的使用方法,虽然VC支持鼠标操作,但是考生还是应该掌握几个常用快捷方式来提高编程效率。特别要注意在对程序进行改动以后要保存,要进行编译连接生成可执行(.exe)文件。3.2 养成良好的程序设计风格

二级C语言机试中的程序设计题,一般来说程序都比较简短,源代码一般不超过5行,在题目指定的函数内编写程序。考生在答题的时候尽量采用易于理解而且比较简单的代码来解决问题,注意不要改动函数的参数,语句的界符“{}”也应该具有层次性的缩进,必要时,使用一定的注释来帮助自己理解程序。3.3 谨慎使用指针

指针是C语言的精华,也是机试考查的重点内容,指针的使用非常灵活,在使用的指针的时候一定要注意对其进行初始化,所谓初始化也就是给指针一个初值,没有初值的指针是很危险的,除了一定得不到正确答案外,如果指针越界,容易引起死机。如果死循环带来的死机是“假死”,大部分可以用“Ctrl+Break”来恢复,但指针越界引起的死机却是真死,请考生一定要牢记。[3] 3.4 熟练掌握循环结构

循环结构的程序是程序设计中涉及最多的知识点,根据以上的分析,我们可以看出几乎每一类题目都会涉及到使用循环来解决问题,因此考生应该掌握循环结构的特征和使用方法,以达到能够熟练使用的目标。应该引起注意的是,在编制循环结构程序的时候考生应该尽量使用“for”循环和“while”循环,避免使用“do……while”循环和“goto”语句,因为“for”循环和“while”编写出来的循环程序易于理解,不容易出错。3.5 沉着应战,认真细心

二级C语言上机考试时间有限,虽然从以前的60分钟改为了90分钟,但是相对于其它语种的上机考试来说,二级C语言的上机时间还是非常紧迫的。考生在答题的过程中应该保持一个良好的心态和平静的心情,遇到问题的时候不能慌乱,最好能够在机试时带一张草稿纸和一支笔,在编程之前先画出程序的流程图来明确解题思路。在遇到程序错误时一定要根据错误代码检查相应位置,检查的过程中应该认真仔细,确保能够解决问题。4 结束语

二级C语言上机考试是各语种级别中考生最多的,但每年的通过率都不高,主要的原因是考生的重视程度不够,上机操作的次数过少,很多应该掌握的却没有掌握,缺乏考试经验等。希望每位参加考试的考生能认真对待,积极备考。相信本文能够助参加二级C语言上机考试的考生一臂之力。

下载2018年3月二级C语言上机题库及答案word格式文档
下载2018年3月二级C语言上机题库及答案.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    计算机二级C语言上机题型总结

    全国计算机二级C语言考试上机题型总汇 (一)关于“******”问题 1、将字符串中的前导*号全部删除,中间和后面的*号不删除。 void fun(char *a) { char *p=a; while(*p= =’*’)......

    二级C语言上机考试改错题总结

    二级C语言上机考试改错题总结 根据本人多年研究全国计算机等级考试二级若错误行中有整数1除以某个表达式或变量时,必C语言,发现很多考生对上机考试存在很大的问须把整数1改为1......

    未来教育版的计算机二级c语言上机题库2012年的

    1)【参考答案】 int fun (int a[M]) { int i,j,max=a[0][0]; for(i=0;is[i]; a->ave/=N; } 7)【参考答案】 double fun( STREC *h ) { double ave=0.0; STREC *p=h->nex......

    2011年计算机等级考试二级C语言上机题库(含答案)(精选五篇)

    认识实习报告 9月初,我们先前往了山东威海滨田印刷机械有限公司进行认识实习。此后我们又去了一家大型零件加工厂进行了参观。 通过这次的实习,我们了解到机械行业第一线的一......

    C语言上机练习题

    上机练习题 1. 输入一个不超过五位的正整数,输出其逆数。例如输入,输出应为54321。 /* Note:Your choice is C IDE */ #include "stdio.h" main { long n; int ww,qw......

    c语言上机实验报告

    C语言上机实验报告 2160500146 计算机66马俊松 在本学期,共进行了大约五次上机,完成了数十道编程题,现将在完成作业过程中所遇到的问题以及解决过程进行如下几点总结,并提出几点......

    2009春江苏省计算机二级C语言上机(编程)

    2009春上机试题1(编程) 程序功能:找出7个默森尼数。法国数学家默森尼曾提出下列公式:Mp=2^p-1。当p是素数并且Mp也是素数时,称Mp为默森尼数,例如,p=5, Mp=2^5-1=31,5和31都......

    二级C语言100道经典选择题及答案

    【1.1】以下不正确的C语言标识符是____。A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。A) #define B) _123 C) %d D) n 【1.3】下列四......