计算机二级C语言题库(44套真题+刷题软件)第一套

Posted SYBH.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机二级C语言题库(44套真题+刷题软件)第一套相关的知识,希望对你有一定的参考价值。

刷题软件

gongzhonghao:露露IT

1、循环队列的存储空间为Q(1:100),初始状态为front=rear=100。经过一系列正常的入队与退队操作后,front=rear=99,则循环队列中的元素个数为( )。

A. 0或100

B. 1

C. 2

D. 99

本题考查知识点是循环队列。当队头和队尾指针指向同一个元素时,队列为空或队列为满。故所以本题答案为A。

2、某系统结构图如下图所示。该系统结构图的最大扇入数是( )。

A. 1

B. 4

C. 2

D. 3

本题的考查知识点是软件结构。模块的扇入指模块直接调用该模块的上级模块的个数。根据定义,功能模块n.1的直接上级模块有3个,扇入数最大。所以本题答案为D。

3、下列叙述中正确的是( )。

A. 数据库的数据项之间存在联系

B. 数据库中任意两个表之间一定不存在联系

C. 数据库的数据项之间无联系

D. 数据库的数据项之间以及两个表之间都不存在联系

本题考查知识点是数据库知识。数据库中的数据是有结构的,这种结构由数据库管理系统所支持的数据模型表现出来。数据库系统不仅可以表示事物内部各数据项之间的联系,而且可以表示事牧与事物之间的联系,从而反映出现实世界事物之间的联系。以关系数据库系统为例,数据库中的数据存储在二维表中,表由记录构成,每个记录都有相同的结构,既每个记录所包含的属性类型相同,而取值不同,因此可以肯定数据库中的记录之间存在联系。数据库中的数据项,也就是二维表的字段,而在数据库的表中,通常会设定某个字段或某些字段为键,通过这些键就可以确定其他字段的值,既数据库中的数据项之间也存在一定的关系,因此,数据库的数据项之间以及记录之间都存在联系。所以本题答案为A。

4、下列叙述中正确的是( )。

A. 数据库系统可以减少数据冗余和增强数据独立性,而文件系统不能

B. 数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件

C. 数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少

D. 以上选项都不正确

本题考查知识点是数据库系统基本特点。数据库技术是在文件系统基础上发展产生的,两者都以数据文件的形式组织数据,但由于数据库系统在文件系统之上加入了DBMS对数据库进行管理,从而使得数据库系统具有以下特点: 1、数据的继承性; 2、数据的高共享性和低冗余性; 3、数据独立性; 4、数据统一管理与控制。所以本题答案为A。

5、在关系数据库设计中,关系模式设计属于( )。

A. 需求分析

B. 概念设计

C. 物理设计

D. 逻辑设计

本题的考查知识点是关系模式。数据库的逻辑设计主要工作是将E-R图转换成指定RDBMS中的关系模式。所以关系模式设计属于逻辑设计。所以本题答案为D。

6、表示学生选修课程的关系模式是SC(S#,C#, G),其中S#为学号,C#为课程号,G为成绩,检索选修了课程号为2的课且成绩不及格的学生学号的表达式是( )。

 

 本题考查知识点是关系运算。检索的是学生学号S#,故A、B选项错误。检索选修了课程号为2的课且成绩不及格,此处是两个并列条件,课程号为2并且成绩<6O,所以选项D错误。所以本题答案为C。

7、按照传统的数据模型分类,数据库系统可分为( )。

A. 层次、网状和关系

B. 大型、中型和小型

C. 西文、中文和兼容

D. 数据、图形和多媒体

本题考查知识点是数据模型的定义。逻辑数据模型又称数据模型,是一种面向数据库系统的模型,该模型着重于在数据库系统一级的实现,较为成熟并先后被人们大量使用过的有:层次模型、网状模型、关系模型、面向对象模型等。所以本题答案为A。

8、现有表示患者和医疗的关系如下:P(P#,Pn,Pg,By),其中P#为患者编号,Pn为患者姓名,Pg为性别,By为出生日期,Tr(P#,D#,Date,Rt),其中D#为医生编号,Date为就诊日期,Rt为诊断结果。检索在1号医生处就诊的男性病人姓名的表达式是( )。

 

 本题考查知识点是关系运算。本题检索的是病人姓名Pn,故B、D选项错误。检索在1号医生处就诊的男性病人姓名,选项C中未筛选病人性别,故选项C错误。所以本题答案为A。

9、一名员工可以使用多台计算机,每台计算机只能由一名员工使用,则实体员工和计算机间的联系是( )。

A. 一对一

B. 多对多

C. 多对一

D. 一对多

本题考查知识点是实体联系。一对多联系表现为主表中每一条记录与相关表中的多条记录关联,则员工与计算机的关系为一对多。所以本题答案为D。

10、学生选课成绩表的关系模式是SC(S#,C#, G),其中S#为学号,C#为课号,G为成绩,学号为20的学生所选课程中成绩及格的全部课号为( )。

 

 本题考查知识点是关系运算。本题检索的是课号C#,故B、C选项错误。选项D中未筛选成绩及格的记录,故选项D错误。所以本题答案为A。

11、若有以下程序

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct stu

char *name,gender;

int score;

;

main()

struct stu a=NULL,'m', 290 , b;

a. name=(char *)malloc(10) ;

strcpy (a.name,"Zhao") ;

b=a;

b. gender=' f' ;

b.score=350;

printf("%s,%c, %d," , a.name, a. gender, a.score) ;

printf("%s,%c, %d\\n", b.name, b.gender, b.score) ;

则程序的输出结果是( )。

A. Qian, m,290,Qian,f,350

B. Zhao, m,290,Qian,f,350

C. Qian,f,350,Qian,f,350

D. Zhao,m,290, Zhao,f,350

本题的考查点是结构体的运用。本题在结构体内定义了指针变量name,字符变量gender,整型变量score,在主函数中定义了两个结构体变量a和b,并为a赋予了新值;语句b=a是将结构体变量a的内容赋给了结构体变量b。对于结构体的赋值,意味着将其中的每一个元素都进行赋值,但b.gender= 'f' ;b.score=350;语句又为b赋予了新值,a. name和b.name是指向同一内存地址的,因此a.name=b. name=Zhao。故本题答案为D。

12、若有以下程序

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

typedef struct stu

char *name,gender;

int score;

STU;

void f(char*p)

p=(char *)malloc(10) ;

strcpy(p,"Qian");

main()

STU a=NULL,'m'', 290 ,b;

a.name=(char *)malloc(10);

strcpy ( a.name,"Zhao");

b = a;

f(b.name);

b.gender = 'f' ; b.score = 350;

printf("%s,%c, %d,",a. name,a.gender,a.score) ;

printf("%s,%c,%d\\n", b.name,b.gender,b.score) ;

则程序的输出结果是( )。

A. Zhao,m,290,Qian,f,350

B. Zhao,m, 290, Zhao,f,350

C. Qian,f,350,Qian, f, 350

D. Qian, m,290,Qian,f[逗号]350

本题的考查点是结构体的运用。本题定义了两个结构体变量a和b,并为a赋予了新值;语句b=a是将结构体变量a的内容赋给了结构体变量b,对于结构体的赋值,意味着将其中的每一个元素都进行赋值,执行f (b.name)时,调用f函数,在f函数体中给p开辟了一个新的空间,在新的空间里的*p=Qian,但对主函数无任何影响,语句又为b中的gender和score元素赋予了新值,b.gender = 'f'; b.score = 350 ; 。故本题答案为B。

13、若有定义

typedef int* T;

T a[10];

则a的定义与下面哪个语句等价( )。

A. int *a;

B. int (*a)[10];

C. int *a[10];

D. int a[10];

本题的考查点是用户定义类型(typedef) 。 C语言允许用typedef说明一种新类型名,说明新类型名的语句一般形式为: typedef 类型名 标识符; 由题目可知T是指针类型,T a[10]是数组指针,int *a[10]是数组指针;int (*a)[10]是指针数组; int *a是指针变量; int a[10]是数组。故本题答案为C。

14、若有以下程序

#include <stdio.h>

main()

int c;

c= 10^5;

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

则程序的输出结果是( )。

A. 5

B. 10000

C. 15

D. 105

本题的考查点是"异或"运算符。 "按位异或"运算的规则是参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为0,不同则为1。c=10^5=01010^00101=01111=15。故本题答案为C。

15、若有以下程序

#include <stdio.h>

main()

FILE*fp ;

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

fp = fopen("data.dat","w+");

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

fseek(fp,0L, 0) ; fprintf(fp,"%d\\n", a[i]) ;

rewind(fp);

fscanf(fp,"%d",&k);

fclose(fp);

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

则程序的输出结果是( )。

A. 6

B. 1

C. 123456

D. 21

本题的考查点是文件。 "w+"的作用:首先建立一个新文件,进行写操作,随后可以从头开始读,如果指定的文件已存在,则原有的内容将全部消失。rewind函数的功能是使文件的位置指针回到文件的开头。当i=0时,向文件写入a[0],即写入:1 当i=1时,向文件写入a[1],即写入:2,并覆盖原来文件中的内容当i=2时,向文件写入a[2],即写入:3,并覆盖原来文件中的内容当i=3时,向文件写入a[3],即写入:4,并覆盖原来文件中的内容当i=4时,向文件写入a[4],即写入:5,并覆盖原来文件中的内容当i=5时,向文件写入a[5],即写入:6,并覆盖原来文件中的内容所以k=6。故本题答案为A。

16、若有以下程序

#include <stdio.h>

#define S(x) (x)*(x)

#define T(x) S(x)/S(x)+1

main()

int k=3,j=2;

printf("%d, %d\\n",S(k+j),T(k+j));

则程序的输出结果是( )。

A. 25.2

B. 25.26

C. 11.12

D. 11.2

本题的考查点是define关键字。由#define S(x) x*x和#define T(x) S(x)/S(x)+1得: S(k+j)=(k+j)*(k+j)=(3+2)* (3+2)=25; T(k+j)= S(x)/S(x)+1=(k+j)* (k+j)/ (k+j)*(k+j)+1=(3+2)*(3+2)/ (3+2)*(3+2)+1=26。故本题答案为B。

17、若有以下程序

#include <stdio.h>

typedef struct stu

char name[10],gender;

int score;

STU;

void f(STU a,STU b)

b = a;

printf( "%s,%c,%d,",b.name,b. gender,b.score );

main()

STU a="Zhao",'m', 290,b="Qian", 'f', 350 ;

f(a, b);

printf("%s,%c, %d\\n", b.name,b.gender,b.score);

则程序的输出结果是( )。

A. Zhao, m,290,Qian,f,350

B. Zhao, m, 290,Zhao, m,290

C. Qian, f,350,Qian,f,350

D. Zhao, m,290,Zhao,f,350

本题的考查点是结构体的运用。本题定义了两个结构体变量a和,f(a,b)函数是按值传送,因此在f函数中将a的内容复制给b,输出Zhao, m,2 90,但并未对主函数中结构体b中的值造成影响,因i主函数中输出Qian,f,350。故本颗答案为A。

18、若有以下程序

#include <stdio.h>

#include <string.h>

typedef struct stu char name[10],gender;

int score;

STU;

void f( char*p )

strcpy( p, "Qian");

main()

STU a="Zhao", 'm', 290,b;

b=a;

f(b.name) ;

b. gender = 'f' ; b.score = 350 ;

printf("%s,%c,%d,",a.name,a.gender,a.score) ;

printf("%s,%c,%d\\n", b.name,b.gender,b.score) ;

则程序的输出结果是( )。

A. Zhao, m,290,Qian,f,350

B. Zhao, m, 290,Zhao, m,290

C. Qian,f,350,Qian,f,350

D. Zhao, m,290, Zhao,f,350

本题的考查点是结构体的运用。本题定义了两个结构体变量a和b,f(b.name)的作用是Qian赋值给p和b.nam e所共同指向的内存单元的值。故本题答案为A。答案:A 本题的考查点是结构体的运用。本题定义了两个结构体变量a和b,f(b.name)的作用是Qian赋值给p和b.name所共同指向的内存单元的值。故本题答案为A。

19、有以下程序

#include <stdio.h>

main()

char c='A';

int x=36, b;

b=(x>>2)&& ( c<'a') ;

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

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

A. 2

B. 0

C. 1

D. 4

本题考查的是位运算。 C语言提供六种位运算符,按优先级由高到低的顺序分别为:取反(~)→左移(<<)和右移(>>)→按位与(&)→按位异或(^)→按位或(|)。 (x>>2)是右移两位为(右移1位是除以2)∶9,条件为真,则为1,(c<' a')为真则是1,符号&&两侧同时为真,表达式的值才为真,故(x>>2)&&( c<'a')表达式为真,即b=1。故本题答案为C。

20、若有以下程序

#include <stdio.h>

typedef struct

char name[10];

int age;

ST;

main()

ST stud[10]= "Adum",15,

"Muty",16,

"Paul", 17,

"Johu", 14,

;

程序运行后不能输出字符u的语句是( )。

A. printf("%c\\n",stud[1].name[1]);

B. printf("%c\\n",stud[3].name[3]);

C. printf("%c \\n",stud[2].name[2] );

D. printf("%c \\n",stud[0].name[3] ) ;

本题的考查点是结构体的运用。假设i,j为整型;stud iJ.name[j])对应的是变量stud[10]第i个元素,name[10]中的第j个元素,注意数字是从0开始的。stud[0].name[3]对应的是m,其余的对应的是u。故本题答案为D。

21、以下叙述正确的是( )。

A. EOF可以作为所有文件的结束标志

B. EOF只能作为文本文件的结束标志,其值为-1

C. EOF只能作为二进制文件的结束标志

D. 任何文件都不能用EOF作为文件的结束标志

本题的考查点是EOF的作用。 EOF作为文件结束的标志,但是文件必须是文本文件。EOF的值为-1。故本题答案为B。

22、以下叙述正确的是( )

A. 在C语言中调用fopen函数就可把程序中要读、写的文件与磁盘上实际的数据文件联系起来

B. fopen函数的调用形式为: fopen(文件名)

C. fopen函数的返回值为NULL时,则成功打开指定的文件

D. fopen函数的返回值必须赋给一个任意类型的指针变量

本题的考查点是对fopen函数的理解。在C语言中fopen函数就可把程序中要读、写的文件与磁盘上实际的数据文件联系起来,其调用形式为:fopen (文件名,文件使用方式)﹔若该函数调用成功,函数返回一个FILE类型的指针,赋给文件指针变量,从而与文件联系起来,当打开文件时出现错误,fopen函数将返回NLL。故本题答案为A。

23、以下不能对文件进行输出的库函数是( )。

A. fwrite

B. fputc

C. fpout

D. fprintf

本题的考查点是文件输出函数。对文件进行输出的库函数是fputc、 fwrite、fprintf。故本题答案为C。

24、有以下程序

#include <stdio.h>

struct link

int data;

struct link*next;

;

main()

struct link*h, a ,b;

h=&a; a. data=10; a.next=&b; b.data=20;

程序运行时不能输出10,20的语句是( )。

A. printf("%d, %d \\n" , a.data,(*a.next).data) ;

B. printf("%d,%d\\n",h->data, a.next.data);

C. printf("%d,%d \\n", h->data,(*a. next).data) ;

D. printf("%d, %d \\n" , a.data, a.next->data);

本题的考查点是对结构体变量成员的引用。若已定义了一个结构体变量和基类型为同一结构体类型的指针变量,并使该指针指向同类型的变量则可以用以下三种形式来引用结构体变量中的成员。结构体变量名也可以是已定义的结构体数组的数组元素。 (1)结构体变量名.成员名 (2)指针变量名->成员名 (3) (*指针变量名).成员名故本题答案为B。

25、有以下程序

#include <stdio.h>

main()

int a=3 , b=3;

printf("%d \\n", a&b);

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

A. 3

B. 1

C. 0

D. 6

本题考查的是位运算。 C语言提供六种位运算符,按优先级由高到低的顺序分别为:取反(~)→左移(<<)和右移(>>)→按位与(&)→按位异或(^)→按位或(|)。相同的两个数进行相与,还是原来的数。故本题答案为A。

26、以下选项中的编译预处理命令行,正确的是( )。

A. #define int INT

B. ##define eps 0.001

C. #DEFINE TRUE

D. #define PI 3.14

本题考查的是宏替换。不带参数的宏定义命令形式如下: #define 宏名 替换文本宏名是用户定义的标识符,因此不能与程序中的其他名字相同。故本题答案为D。

27、设有以下程序段

struct person

char name[10];

char sex;

float weight;

zhangsan,*ptr;

ptr = &zhangsan;

若要从键盘读入姓名给结构体变量zhangsan的name成员,输入项错误的是( )。

A. scanf("%s", zhangsan->name);

B. scanf("%s", zhangsan. name) ;

C. scanf("%s", ptr->name);)

D. scanf("%s",(*ptr). name);

本题的考查点是对结构体变量成员的引用。若已定义了一个结构体变量和基类型为同一结构体类型的指针变量,并使该指针指向同类型的变量则可以用一下三种形式来引用结构体变量中的成员。结构体变量名也可以是已定义的结构体数组的数组元素。 (1)结构体变量名.成员名 (2)指针变量名->成员名 (3)(*指针变量名).成员名故本题答案为A。

28、有如下程序

#include <stdio.h>

struct person

char name[10] ;

int age;

main()

struct person room[4] = "Zhang",19,"Li",20,"Wang",17,"Zhao",18;

printf("%s: %d\\n", (room+2)->name,room->age) ;

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

A. Li:20

B. Wang:17

C. Wang:19

D. Li : 19

本题的考查点是结构体的运用。由题目可知:room指针指向的是结构体room[4]的第一个元素"Zhang",19 ;(room+2)->name指针指向的是结构体room[4]的第三个元素中的Wang 故本题答案为C。

29、表达式3.6-5/2+1.2+5%2的值是( )。

A. 3.8

B. 4.8

C. 3.3

D. 4.3

本题的考查点是算数运算符。基本的算数运算符是+、一、*、/、%,其中/和%运算的运算两边类型一致,结果也与运算数的类型一致。3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.8。故本题答案为A。

30、有以下程序

#include <stdio.h>

main()

int a=0, b=0;

/*给a赋值 a=10;

b=20; 给b赋值*/

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

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

A. a+b=0

B. a+b=30

C. a+b=10

D. 出错

本题的考查点是注释的运用。题目中开始给a和b分别赋初值=0,而第4和第5行语句是在注释中,不起作用,因此a+b=0。故本题答案为A。

31、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是______。

A. 一条C语句可能会被转换成零条机器指令

B. 一条C语句可能会被转换成多条机器指令

C. 一条C语句对应转换成一条机器指令

D. 某种类型和格式的C语句被转换成机器指令的条数是固定的

本题的考查点是编译。一条C语言被转换成的机器指令条数可能是0条,一条或者多条。故本题答案为C。

32、关于"while(条件表达式)循环体",以下叙述正确的是( )。

A. 条件表达式的执行次数总是比循环体的执行次数多一次

B. 循环体的执行次数总是比条件表达式的执行次数多一次

C. 条件表达式的执行次数与循环体的执行次数一样

D. 条件表达式的执行次数与循环体的执行次数无关

本题的考查点是while(条件表达式)循环体。对于while(条件表达式)循环体,我们是先判断,若满足条件表达式则执行循环体、若不满足则退出循环。当遇到不满足条件时,我们执行了条件表达式,并没有执行循环体。故条件表达式的执行次数总是比循环体的执行次数多一次。故本题答案为A。

33、关于C语言的符号常量,以下叙述中正确的是( )。

A. 符号常量的符号名是标识符,但必须大写

B. 符号常量是指在程序中通过宏定义用一个符号名来代表一个常量

C. 符号常量在整个程序中其值都不能再被重新定义

D. 符号常量的符号名必须是常量

本题的考查点是符号常量。在C语言程序中,可以用一个符号名来代表一个常量,称为符号常量。这个符号名必须在程序中进行特别的"指定",并符合标识符的命名规则。故本题答案为B。

34、若有以下程序

#include <stdio.h>

main()

int b=10, a=-11;

a %= b %=4;

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

则程序的输出结果是_______。

A. -1 2

B. 1 2

C. -1 -2

D. 1 -2

本题考查的是算术运算符。在算术运算符中%是求余。 a%=b%=4可知b=b%4=10%4=2,a=a%b=-11%2=-1。故本题答案为A。

35、若有以下程序

#include <stdio.h>

main()

int a=0, b=0,c=0;

c= (a -= ++a),(a+=b, b+=4);

printf("%d,%d,%d\\n" , a, b, c);

则程序的输出结果是_______。

A. 0,4,0

B. 0,4,4

C. 1,4,1

D. 1,4,4

本题考查的是算术运算符。 (a-=++a)即a=a-(++a)=1-1=0;c=(a-=++a)=0; a+=b=0+0=0; b+=4=0+4=4故本题答案为A。

36、有以下程序

#include <stdio.h>

main()

int a=0, b=0,c=0, d;

c= (a+=b,, b+=a); /*第4行*/

d=c ;; /*第5行*/

; /*第6行*/

; printf("%d,%d,%d\\n" , a, b, c); /*第7行*/

编译时出现错误,你认为出错的是_____。

A. 第7行

B. 第5行

C. 第6行

D. 第4行

本题考查的是逗号表达式。在逗号表达式中,左边是表达式,右边是返回值,但在第4行语句中有多余的","。故本题答案为D。

37、关于算法,以下叙述中错误的是( )。

A. 任何算法都能转换成计算机高级语言的程序,并在有限时间内运行完毕

B. 同一个算法对于相同的输入必能得出相同的结果

C. 一个算法对于某个输入的循环次数是可以事先估计出来的

D. 某个算法可能会没有输入

本题考查的是算法。算法是指为解决某个特定问题而采取的确定且有效的步骤。一个算法应该具有以下五个特性: (1) 有穷性:一个算法包含的有效步骤应该是有限的,也就是说,在执行若干个操作步骤之后,算法将结束,而且每一步都在合理的时间内完成。 (2) 确定性:算法中的每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。 (3)可行性:算法中指定的操作,都可以通过已经验证过可以是实现的基本运算执行有限次后的实现。 (4)有零个或多个输入:在计算机上实现的算法是用来处理数据对象的,在大多数情况下这些数据对象需要通过输入来得到。 (5)有一个或多个输出:算法的目的是为了求"解"这些"解[双引号]只有通过输出才能得到。故本题答案为A。

38、关于C语言的变量,以下叙述中错误的是( )。

A. 变量所占的存储单元地址可以随时改变

B. 所谓变量是指在程序运行过程中其值可以被改变的量

C. 程序中用到的所有变量都必须先定义后才能使用

D. 由三条下划线构成的符号名是合法的变量名

本题考查的是变量。所谓变量是指在程序运行过程中其值可以改变的量,程序中用到的所有变量都必须有一个名字作为标识,变量的名字是由用户定义,它必须符合标识符的命名规则;一个变量实质上代表了内存中的某个存储单元;C语言规定,程序中所有的标量都必须先定义后使用。故本题答案为A。

39、关于do循环体while (条件表达式);以下叙述中正确的是( )。

A. 条件表达式的执行次数与循环体的执行次数无关

B. 循环体的执行次数总是比条件表达式的执行次数多一次

C. 条件表达式的执行次数总是比循环体的执行次数多一次

D. 条件表达式的执行次数与循环体的执行次数一样

本题的考查点是while(条件表达式)循环体。对于while(条件表达式)循环体,我们是先判断,若满足条件表达式则执行循环体,若不满足则退出循环。当遇到不满足条件时,我们执行了条件表达式,并没有执行循环体。故条件表达式的执行次数总是比循环体的执行次数多一次。故本题答案为D

40、若有以下程序

#include <stdio.h>

main()

int a=-11,b=10;

a /= b /= -4;

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

则程序的输出结果是______。

A. 5 -2

B. -1 -2

C. 4 -3

D. 5 -3

本题考查的是算术运算符。基本的算术运算符是+、一、*、/、%,其中/和%运算的运算两边类型一致,结果也与运算数的类型一致。a/=b/=-4可知b=b/-4=10/-4=-2; a=a/b=-11/(-2)=5。故本题答案为A。

全国计算机等级考试题库二级C操作题100套(第89套)

第89套:

给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的 长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共 有M个字符串,且串长<N。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:

#include <stdio.h> 
#include <string.h> 
#define M 5 
#define N 20 
void fun(char (*ss)[N]) 
{ int i, j, k=0, n, m, len; 
for(i=0; i<M; i++) 
{ len=strlen(ss[i]); 
if(i==0) n=len; 
if(len>n) { 
n=len; ___1___=i; 
} 
} 
for(i=0; i<M; i++) 
if (i!=k) 
{ m=n; 
len=strlen(ss[i]); 
for(j=___2___; j>=0; j--) 
ss[i][m--]=ss[i][j]; 
for(j=0; j<n-len; j++) 
___3___='*'; 
} 
} 
main() 
{ char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"}; 
int i; 
printf("\\nThe original strings are :\\n"); 
for(i=0; i<M; i++) printf("%s\\n",ss[i]); 
printf("\\n"); 
fun(ss); 
printf("\\nThe result:\\n"); 
for(i=0; i<M; i++) printf("%s\\n",ss[i]); 
} 

解题思路:
第一处:使用变量k来保存第几个字符串是最长的字符串,所以应填:k。
第二处:利用for循环把原字符串右移至最右边存放,字符串的长为len,所以应填:len。
第三处:左边用字符*补齐,所以应填:ss[i][j]。


给定程序MODI1.C中函数fun的功能是: 计算整数n的阶乘。请改正程序中的错误或在下划线处填上适当的内容并把下划线删除,使它能计算出正确的结果。
注意: 不要改动 main 函数, 不得增行或删行, 也不得更改程序的结构!
给定源程序:

#include <stdio.h> 
double fun(int n) 
{ 
double result=1.0; 
while (n>1 && n<170) 
result*=--n; 
return _____; 
} 
main() 
{ 
int n; 
printf("Enter an integer: "); 
scanf("%d",&n); 
printf("\\n\\n%d!=%lg\\n\\n",n,fun(n)); 
} 

解题思路:
第一处:–n是先减1,n–是后减1。本题应该先乘以n,再减1,才正确。
第二处:返回计算结果,所以应填:result。


编写函数fun,函数的功能是: 从s所指的字符串中删除给定的字符。同一字母的大、小写按不同字符处理。
若程序执行时输入字符串为: turbo c and borland c++ 从键盘上输入字符:n, 则输出后变为: turbo c ad borlad c++ 如果输入的字符在字符串中不存在, 则字符串照原样输出。
注意: 部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入
你编写的若干语句。
给定源程序:

#include <stdio.h> 
#include <string.h> 
int fun(char s[],char c) 
{ 
} 
main() 
{ 
static char str[]="turbo c and borland c++"; 
char ch; 
printf("原始字符串:%s\\n", str); 
printf("输入一个字符:"); 
scanf("%c",&ch); 
fun(str,ch); 
printf("str[]=%s\\n",str); 
NONO(); 
} 

解题思路:
本题是考察考生怎样在字符串中删除指定的字符,结果仍存放在原字符串中。给出的程序是引用字符串指针p和while循环语句以及if条件判断语句进行处理的,新字符串的位置是由i 来控制的,循环结束后,再给新字符串置字符串结束符,最后产生的新字符串形参s返回到主程序中。
参考答案:

int fun(char s[],char c) 
{ 
char *p = s ; 
int i = 0 ; 
while(*p) { 
if(*p != c) s[i++] = *p ; 
p++ ; 
} 
s[i] = 0 ; 
} 

以上是关于计算机二级C语言题库(44套真题+刷题软件)第一套的主要内容,如果未能解决你的问题,请参考以下文章

小黑课堂计算机二级Python有刷题程序吗

2020年全国计算机等级考试《二级C语言程序设计》全套资料教材+历年真题+题库+考前冲刺

C语言计算机二级/C语言期末考试 刷题

二级C语言考试选择真题分类练习讲解——C语言基本语法

免费正版的计算机二级C语言题库模拟软件

怎样找到二级Python的刷题工具