汉扬编程 C语言入门 全国计算机等级考试二级C语言必考精选(供题型参考)

全国计算机等级考试二级C语言必考精选(供题型参考)

全国计算机等级考试二级C语言必考精选(供题型参考)

一、选择题(每小题1分,共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.下列链表中,其逻辑结构属于非线性结构的是

A.双向链表

B.带链的栈

C.二叉链表

D.循环链表

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

A.网状结构

B.树状结构

C.属性

D.二维表

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

A.1:m联系

B.m:n联系

C.1:1联系

D.m:1联系

6.有三个关系R、S和T如下:

由关系R和S通过运算得到关系T,则所使用的运算为。

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.以下选项中不合法的标识符是。

A.&a

B.FOR

C.print

D._00

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‖3

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<stdio.h>

main

{ int a=-2,b=0;

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

printf(\”%d,%d\\n\”,a,b);

}

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

A.1,3

B.0,2

C.0,3

D.1,2

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

A.p=x;

B.*p=x;

C.p=NULL;

D.*p=NULL;

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

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

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

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

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

23.有以下程序:

#include<stdio.h>

main

{ char a=’H’;

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

printf(\”%c\\n\”,a);

}

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

A.A

B.a

C.H

D.h

24.有以下程序:

#include<stdio.h>

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*x+1; }

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

A.ABE

B.BDI

C.BCF

D.BCD

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

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

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

C.数组x包含6个元素

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

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

A.p=\”\”;

B.p=\”0\”;

C.p=0;

D.p=\”;

27.有以下程序:

#include<stdio.h>

main

{ int a={10,20,30,40},*p=a,i;

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

printf(\”%d\\n\”,a[2]);

}

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

A.30

B.40

C.10

D.20

28.有以下程序:

#include<stdio.h>

#define N 4

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

{ int i;

for(i=0;i<N;i++)

b[i]=a[i][i]-a[i][N-1-i];

}

main

{ int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;

fun(x,y);

for(i=0;i<N;i++)

printf(\”%d,\”, y[i]);

printf(\”\\n\”);

}

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

A.-3,-1,1,3,

B.-12,-3,0,0,

C.0,1,2,3,

D.-3,-3,-3,-3,

29.有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数):

#include<stdio.h>

#include<string.h>

main

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

strcpy(a+1,b+2);

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

}

程序运行后的输出结果是。 c/c++资料分享qun 615968007

A.al2xyz

B.12yz

C.a2yz

D.bc2yz

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

A.char str3={’d’,’e’,’b’,’u’,’g’,’\\0’};

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

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

D.char str1[5]=\”pass\”,str2[6];str2=str1;

31.有以下程序:

#include<stdio.h>

main

{ char*s=\”12134\”;

int k=0,a=0;

while(s[k+1]!=\’\\0\’)

{ k++;

if(k%2==0)

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

continue;

}

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

}

printf(\”k=%d a=%d\\n\”,k,a);

}

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

A.k=6 a=11

B.k=3 a=14

C.k=4 a=12

D.k=5 a=15

32.有以下程序:

#include<stdio.h>

main

{

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

int i,j;

char t;

for(i=0;i<4;i++)

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

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

{t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}

puts(a[1]);

}

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

A.fwo

B.fix

C.two

D.owo

33.有以下程序:

#include<stdio.h>

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 %d\\n\”,a,b);

}

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

A.1 2 5 6

B.5 6 3 4

C.5 6 1 2

D.3 4 5 6

34.有以下程序:

#include<stdio.h>

void func(int n)

{ static int num=1;

num=num+n;

printf(\”%d \”,num);

}

main

{ func(3);

func(4);

printf(\”\\n\”);

}

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

A.4 8

B.3 4

C.3 5

D.4 5

35.有以下程序:

#include<stdio.h>

#include<stdlib.h>

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(\”%d\\n\”,*q);

}

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

A.42

B.0

C.1

D.41

36.有以下程序:

#include<stdio.h>

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[0].name,c[0].sex,c[0].score[0],c[0].score[1]);

printf(\”%s,%c,%d,%d\\n\”,c[1].name,c[1].sex,c[1].score[0],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<stdio.h>

main

{ FILE *fp;

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

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

for(i=0;i<6; i++)

fprintf(fp,\”%d\\n\”,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<stdio.h>

#define M 80

int bb[M];

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

{

int i,n=0;

for(i=0;i<num;i++)

if(【1】)

{

bb[n]=【2】;

n++;

}

return【3】;

}

main

{

char str[M];

int bb[M];

int num=0,n,i;

printf(\”Enter a string:\\n\”);

gets(str);

while(str[num])

num++;

n=proc(str,bb,num);

for(i=0;i<n;i++)

printf(\”%d\”,bb[i]);

}

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

下列给定程序中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。

例如,若给a输入字符串:ABCDEFGHIJK,调用函数后,字符数组b中的内容为:ABC DEF HGI JK。

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

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

#include<stdio.h>

#include<string.h>

void fun(char *p, char *b)

{ int i,k=0;

while(*p)

{ i=1;

while( i<=3 && *p) {

/******found******/

b[k]=p;

k++; p++; i++;

}

if( *p )

{

/******found******/

b[k++]=\” \”;

}

b[k]= \’\\0\’;

}

main

{

char a[80],b[80];

printf(\”Enter a string:\”);

gets(a);

printf(\”The original string:\”);

puts(a);

fun(a,b);

printf(\”\\nThe string after insert spase:\”);

puts(b); printf(\”\\n\\n \”);

}

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

N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,其功能是:求出平均值,并由函数值返回。

例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应当是:78.625。

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

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

#include<stdio.h>

#include<stdlib.h>

#define N 8

struct slist

{ double s;

struct slist *next;

};

typedef struct slist STREC;

double fun( STREC *h )

{

}

STREC *creat( double *s )

{ STREC *h,*p,*q;

int i=0;

h=p=( STREC *) malloc ( sizeof( STREC ) );

p->next=0;

while(i<N)

{

q=( STREC *) malloc ( sizeof( STREC ) );

q->s=s[i];

i++;

p->next=q;

p=q;

}

p->next=0;

return h;

}

void outlist(STREC *h)

{

STREC *p;

p=h->next;

printf(\” head\”);

do

{

printf(\”->%4.1f\”,p->s);

p=p->next;

} while(p!=0);

printf(\”\\n\\n\”);

}

main

{

double s[N]={85,76,69,85,91,72,64,87},ave;

//void NONO;

STREC *h;

h=creat( s );

outlist( h );

ave=fun( h );

printf(\”ave=%6.3f\\n\”,ave);

//NONO;

}

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/cjia/6103.html

C语言的左右移动,火箭的运行速度,快到你无法想象

为何说c加加是一门最难啃的编程语言 看这种达内怎么分析

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部