好蚂蚁

计算机二级考试试题样卷-C语言程序设计

宋紫宁2026-01-31 15:10:05

全国计算机等级考试二级笔试样卷C语言程序设计

一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题2分,总分70分)

以下每个问题 A)、二)、C)、D) 四个选项中,只有一个选项是正确的,请将正确选项写在答题卡相应位置上,在试卷上作答不会得分。

(1) 以下哪个选项不符合良好的编程风格

A) 源程序必须有文档记录 B) 数据描述的顺序必须标准化

C) 避免滥用 goto 语句 D) 模块设计应保证高耦合、高凝聚力

(二)从项目管理的角度来看,软件设计一般分两步完成,他们是

A) 概要设计和详细设计 B) 数据设计和界面设计

C) 软件结构设计和数据设计 D) 流程设计和数据设计

(3) 下列哪个选项不属于软件生命周期开发阶段的任务

A) 软件测试 B) 概要设计 C) 软件维护 D) 详细设计

(4)在数据库系统中,用户看到的数据模式是

A) 概念模型 B) 外部模型 C) 内部模型 D) 物理模型

(5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和

A) 编码设计 B) 测试阶段 C) 操作阶段 D) 物理设计

(6) 共有如下三张关系表

计算机二级考试试题样卷-C语言程序设计

以下哪项操作是正确的

A) T=R∩S B) T=R∪S

C) T=R×S D) T=R/S

(7)下列哪些说法是正确的

A)算法的空间复杂度大,那么它的时间复杂度也一定很大

B)算法的空间复杂度大,那么它的时间复杂度一定很小

C)算法时间复杂度大,那么它的空间复杂度一定很小

D) 以上三种说法均不正确

(8) 在长度为64的有序线性列表中顺序搜索,在最坏的情况下,所需的比较次数为

A) 63 B) 64 C) 6 D) 7

(9)数据库技术的根本目标是解决数据问题

A) 存储问题 B) 共享问题 C) 安全问题 D) 保护问题

(10) 对于如下二叉树

计算机二级考试试题样卷-C语言程序设计

进行中序遍历的结果是

A) ACBDFEG B) ACBDFGE C) ABDCGEF D) FCADBEG

(11)下列说法错误的是

A) 一个C语言程序只能实现一种算法

B) 一个C程序可以由多个程序文件组成

C) C 程序可以由一个或多个函数组成

D) C函数可以作为C程序文件单独存在

(12)下列哪项表述是正确的

A) 每个C程序文件必须有一个main()函数

B) main()函数在C程序中的位置是固定的

C)C程序中的所有函数都可以互相调用,与函数的位置无关

D) 不能在 C 程序的函数内定义另一个函数

(13) 下列定义变量的说法错误的是

A)int_int;B) 双整数_;C) 字符 对于;D) 浮动美元;

(14) 如果变量 x、y 已被正确定义并赋值,下面符合C语言语法的表达式是

A)++x,y=x-- B) x+1=y C) x=x+10=x+y D) double(x)/10

(15) 下列关于逻辑运算符两边操作数的说法正确的是

A) 只能是整数0或1 B) 只能是整数0或非0整数

C) 可以是结构类型的数据 D) 可以是任何合法的表达式

(16) 如果定义了 int x,y;并正确地给变量赋值,那么下列选项与表达式(x-y)一致?(x++):(y++) 中的条件表达式 (x-y) 等价于

A)(x-y>;0) B) (x-y<0) C) (x-y<0||x-y>;0) D) (x-y==0)

(17)有以下程序

主要的()

{ int  x, y, z;

x=y=1;

z=x++,y++,++y;

printf("%d,%d,%d\n",X,y,z);

}

程序运行后的输出为

A2,3,3           B) 2,3,2C)2,3,1         D) 2,2,1

(18) 有一个定义:整数a;浮动b;执行scanf("%2d%f",&A,&b);陈述时间,如果您从键盘输入 876 543.0<输入(>);a和b的值分别为

A)876和543.000000 B) 87 和 6.000000

C) 87 和 543.000000 D) 76 和 543.000000

(19)有以下程序

主要的()

{ int  a=0, b=0;

a=10;到

b=20;给b赋值*/

printf("a+b=%d\n",a+b);/* 输出计算结果 */

}

程序运行后的输出为

A) a+b=10 B) a+b=30 C) 30 D) 错误

(20) 在嵌套中使用 if 语句时,C语言规定else总是

A) 如果具有相同的压痕位置,则与前一个配对

B)如果最接近的话就与前一个配对

C) 如果最接近前一个,则与前一个配对,无需其他

D) 与第一个 if before 配对

(21) 下列哪项陈述是正确的

A)break语句只能与switch语句一起使用

B) switch 语句中必须使用默认值

C)break语句必须与switch语句中的case配对

D) switch语句中,不需要使用break语句

(22)有以下程序

主要的()

{ int  k=5;

while(--k) printf("%d",k -= 3);

printf("\n");

}

执行后的输出是

A) 1                   B)                                                                                                                                                                                                  ous

(23)有以下程序

主要的()

{ int  i;

对于(我= 1;i<=40;我++)

{ if(i++%5==0)

if(++i%8==0) printf("%d ",我);

}

printf("\n");

}

执行后的输出是

A) 5 B) 24 C) 32 d) 40

(24) 下列选项之一,值为 1 的表达式为

A) 1 – '0' B) 1 - '\0' C) '1' -0 D) '\0' - '0'

(25)有以下程序

乐趣(整数x,整数 y){ return (x+y); }

主要的()

{ int  a=1, b=2, c=3, sum;

总和=乐趣((a++,乙++,a+b),c++);

printf("%d\n",和);

}

执行后的输出是

A)6

(26)有以下程序

主要的()

{  char  s[]="abcde";

s+=2;

printf("%d\n",s[0]);

}

执行后的结果是

A) 输出字符 a 的 ASCII 码 B) 输出字符 c 的 ASCII 码

C) 输出字符 c D) 程序错误

(27)有以下程序

乐趣(整数x,整数 y)

{ static int  m=0, i=2;

我+=m+1;m=i+x+y;返回米;

}

主要的()

{ int  j=1, m=1, k;

k=乐趣(j,米);printf("%d,”,k);

k=乐趣(j,米);printf("%d\n",k);

}

执行后的输出是

答)5,5 B) 5,11 C) 11,11D)11,5

(28)有以下程序

乐趣(整数x)

{ int  p;

if(x==0||x==1) 返回(3);

p=x-fun(x-2);

返回 p;

}

主要的()

{  printf("%d\n",fun(7)); }

执行后的输出是

A) 7 B) 3 C) 2 D) 0

(29) 在16位编译系统上,如果有int a[]=的定义{10,20,30}*p=&a;执行p++时;后退,以下哪项陈述是错误的

A) p 将一个字节移动到高地址 B) p 将一个存储单元移动到高地址

C) p 移动两个字节到更高的地址 D) p 相当于 a+1

(30)有以下程序

主要的()

{ int  a=1, b=3, c=5;

int *p1=&a,*p2=&b,*p=&c;

*p =*p1*(*p2);

printf("%d\n",C);

}

执行后的输出是

A)1

(31) 如果定义:整数 w[3][5];那么下面不能正确表示数组元素的表达式是

A)*(*w+3) B)*(w+1)[4] C)*(*(w+1)) D)*(&w[0][0]+1)

(32)如果有如下函数头

int 乐趣(双 x[10],整数*n)

那么下面这个函数正确的函数声明语句是

A) int fun(双 x,整数*n);B) int fun(双),整数);

C) int fun(双*x,整数 n);D)int fun(双*,整数 *);

(33)有以下程序

无效变化(int k[]){ k[0]=k[5]; }

主要的()

{ int  x[10]={1,2,3,4,5,6,7,8,9,10}n=0;

而( n<=4){ change( &x[n]) ; n++; }

对于(n = 0;n<5;n++) printf("%d ",x[n]);

printf("\n");

}

程序运行后输出结果为

A) 6 7 8 9 10 B) 1 3 5 7 9 C) 1 2 3 4 5 D) 6 2 3 4 5

(34)有以下程序

主要的()

{ int  x[3][2]={0}我;

对于(我= 0;i<3;i++) scanf("%d",x[i]);

printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);

}

如果在运行时输入:2 4 6<输入(>);输出结果为

A) 2 0 0 B) 2 0 4 C) 2 4 0 D) 2 4 6

(35) 有以下程序

int 添加( int a,整数 b){ return (a+b);  }

主要的()

{ int  k, (*f)(), a=5,b=10;

f=添加;

……

}

那么下面的函数调用语句是错误的

A)k=(*f)(a,b);B) k=加(a,b);

C)k= *f(a,b);D)k=f(a,b);

(36)有以下程序

#包括

主要( int argc,字符 *argv[ ])

{ int  i=1,n=0;

当我

printf("%d\n",n);

}

该程序生成的可执行文件名为:进程.EXE文件。如果运行时输入命令行:

过程 123 45 67

那么程序的输出结果就是

A) 3 b) 5 c) 7 d) 11

(37) 有以下程序

#包括

# 定义 N 5

# 定义 M N+1

# 定义 f(x) (x*M)

主要的()

{ int  i1, i2;

i1 = f(2);

i2 = f(1+1);

printf("%d %d\n",i1,i2);

}

程序运行的结果是

A) 12 12 B) 11 7 C) 11 11 D) 12 7

(38) 有如下结构描述、变量定义和赋值语句

结构性病

{ char  name[10];

年龄;

字符性别;

} s[5],*ps;

ps=&s[0];

那么在下面的scanf函数调用语句中,错误地引用了结构体变量的哪个成员呢

A)scanf(“%s”,s[0].姓名);B) scanf("%d",&s[0].年龄);

C) scanf("%c",&(ps->;性别));D) scanf(“%d”,PS->;年龄);

(39) 如有下列定义和陈述

联合数据

{  int  i;   char  c;   float  f; }X;

整数;

那么下列说法正确的是

A)x=10.5;B)x.c=101;C) y=x;D) printf("%d\n",X);

(40)有以下程序

#包括

主要的()

{ FILE  *fp;    int  i;

字符 ch[]="abcd",t;

fp=fopen("abc.数据”,“WB+”);

对于(我= 0;i<4;i++) fwrite(&ch[i],1,1,FP);

fseek(fp,-2L,SEEK_END);

恐惧(&t,1,1,FP);

f关闭(fp);

printf("%c\n",t);

}

执行程序后的输出为

广告

二、填空题(每题2分),共30分钟)

请在答题卡上编号为 [1] 至 [15] 的水平线上每个空白处写下正确答案,在试卷上作答不会得分。

(1)如下软件系统结构图

宽度为[1]。

(2) [2] 任务是诊断并纠正程序中的错误。

(3)关系表的行称为[3]。

(4)按照“先进后出”原则组织的数据的数据结构为[4]。

(5)数据结构分为线性结构和非线性结构,链式队列属于[5]。

(6) 有一个定义:浮动 x=123.4567;那么执行下面语句后输出结果为[6]。

printf("%f\n",(整数)(x*100+0.5)/100.0);

(7) 运行以下程序后输出结果为[7]。

主要的()

{ int  m=011,n=11;

printf("%d %d\n",++米,n++);

}

(8) 运行以下程序后输出结果为[8]。

主要的()

{ int  x,a=1,b=2,c=3,d=4;

x=(a x=(x x=(d>;X)?X:d;

printf("%d\n",X);

}

(9)有以下程序,如果运行时从键盘输入:18,11<输入(>);那么程序的输出结果就是[9]。

主要的()

{  int  a,b;

printf("输入一个,乙:”);scanf("%d,%d”,&A,&b);

而(a!=b)!

{  while(a>b) a -= b;

同时(b>a) b -= a;

}

printf("%3d%3d\n",A,b);

}

(10) 下列程序的功能是:将输入的正整数倒序输出。例如:如果输入135,则输出531。请填写空白。

#包括

主要的()

{ int  n,s;

printf("请输入一个数字:”);扫描(“%d”,&n);

printf("输出:”);

{  s=n%10;  printf("%d",s);  【10】 ;  }

而(n!= 0)!

printf("\n");

}

(11) 在下列程序中,函数fun的作用是计算x2-2x+6,main函数中会调用fun函数进行计算:

y1=(x+8)2-2 (x+8)+6

y2=sin2(x)-2sin(x)+6

请填写空白。

#包括“数学.H”

双倍乐趣(双x){ return (x*x-2*x+6); }

主要的()

{ double  x,y1,y2;

printf("输入x:”);扫描(“%lf”,&X);

y1=乐趣(【11】);

y2=乐趣(【12】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

(12) 下列程序的功能是:对 N 行 N 列的二维数组的每一行中的元素进行排序,第0行从小到大排序,第 1 行从大到小排序,第 2 行从小到大排序,3号线从大到小排序,例如:

#定义N 4

无效排序(int a[][N])

{ int  i, j, k, t;

对于 (i=0;我

对于 (j=0;j

对于 (k=【13】;k

/* 判断行下标是否为偶数来决定是升序还是降序排序 */

如果(【14】?a[i][j]a[i][k])

{  t = a[i][j];

a[i][j]=a[i][k];

a[i][k] = t;

}

}

无效 outarr(int a[N][N])

{    ……    }

主要的()

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

奥塔尔(aa);/*以矩阵的形式输出二维数组*/

排序(aa);

奥塔尔(aa);

}

(13) 运行下列程序的结果是:【15】。

#包括

int f(int a[]),整数 n)

{ if(n>1)

返回 a[0] + f(a+1,n-1);

别的

返回一个[0];

}

主要的()

{ int  aa[10]={1,2,3,4,5,6,7,8,9,10}s;

s = f(aa+2,4);printf("%d\n",);

}

热门推荐

最新文章