全国计算机等级考试二级C语言真题库之选择题(15)
- 格式:doc
- 大小:101.50 KB
- 文档页数:10
全国计算机等级考试二级C语言之文件一、选择题:(1)以下叙述中错误的是A)C语言中对二进制文件的访问速度比文本文件快B)C语言中,随机文件以二进制代码形式存储数据C)语句 FILE fp; 定义了一个名为fp的文件指针D)C语言中的文本文件以ASCII码形式存储数据(2)有以下程序#includemain(){ FILE *fp; int i, k, n;fp=fopen("data.dat", "w+");for(i=1; i{ fprintf(fp,"%d ",i);if(i%3==0) fprintf(fp,"\n");}rewind(fp);fscanf(fp, "%d%d", &k, &n); printf("%d %d\n", k, n); fclose(fp);}程序运行后的输出结果是A)0 0B)123 45C)1 4D)1 2(3)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是A)feof(fp)B)ftell(fp)C)fgetc(fp)D)rewind(fp)(4)有以下程序#include "stdio.h"void WriteStr(char *fn,char *str){FILE *fp;fp=fopen(fn,"W");fputs(str,fp);fclose(fp);}main(){WriteStr("t1.dat","start");WriteStr("t1.dat","end");}程序运行后,文件t1.dat中的内容是A)startB)endC)startendD)endrt(5) 有如下程序#includemain(){FILE *fp1;fp1=fopen("f1.txt","w");fprintf(fp1,"abc");fclose(fp1);}若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为A) goodabcB) abcdC) abcD) abcgood(6) 有以下程序#includemain( ){ FILE *fp; int i,k=0,n=0;fp=fopen(“d1.dat”,”w”);for(i=1;ifclose(fp);fp=fopen(“d1.dat”,”r”);fscanf(fp,”%d%d”,&k,&n); printf(“%d %d\n”,k,n);fclose(fp);}执行后输出结果是A) 1 2B) 123 0C) 1 23D) 0 0(7) 有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END) ;语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)#includemain( ){ FILE *fp; int i,a[4]={1,2,3,4},b;fp=fopen("data.dat","wb");for(i=0;ifclose(fp);fp=fopen("data.dat","rb");fseek(fp,-2L*sizeof(int).SEEK_END) ;fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/ fclose(fp);printf("%d\n",B) ;}执行后输出结果是A) 2B) 1C) 4(8) 若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为A) 0B) 1C) -1D) 一个非0值(9) 下列关于C语言数据文件的叙述中正确的是A) 文件由ASCII码字符序列组成,C语言只能读写文本文件B) 文件由二进制数据序列组成,C语言只能读写二进制文件C) 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D) 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件(10) 以下叙述中不正确的是A)C语言中的文本文件以ASCⅡ码形式存储数据B)C语言中对二进制文件的访问速度比文本文件快C)C语言中,随机读写方式不适用于文本文件D)C语言中,顺序读写方式不适用于二进制文件(11) 以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。
全国二级计算机考试c语言试题及答案全国二级计算机考试C语言试题及答案一、选择题(每题1分,共10分)1. 在C语言中,以下哪个选项是合法的变量名?A. 2variableB. _intC. intD. variable2答案:B2. 下列关于C语言中数组的描述,正确的是:A. 数组的大小在定义后可以改变B. 数组的索引从0开始C. 数组可以存储不同类型的数据D. 数组必须在程序开始时定义答案:B3. 在C语言中,以下哪个关键字用于定义一个函数?A. structB. intC. voidD. return答案:C4. C语言中,以下哪个运算符用于取地址?A. *B. &C. %D. #答案:B5. 下列关于C语言中指针的描述,错误的是:A. 指针可以存储地址B. 指针可以被赋值为NULLC. 指针可以存储任何类型的数据D. 指针可以被解引用答案:C6. 在C语言中,以下哪个选项是正确的注释方式?A. // 这是注释B. /* 这是注释 */C. //* 这是注释 */D. /* 这是注释答案:A7. C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcpyB. strcatC. strcmpD. strlen答案:A8. 在C语言中,以下哪个选项是正确的文件操作函数?A. fopenB. fcloseC. fprintfD. All of the above答案:D9. C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A10. 在C语言中,以下哪个选项是正确的条件语句?A. if (x)B. if xC. if (x == 0)D. if (x != 0)答案:A二、填空题(每题2分,共10分)1. 在C语言中,______关键字用于声明一个变量。
答案:int2. 一个C语言程序的执行从______函数开始。
、选择题(1) 下面叙述正确的是(C)A. 算法的执行效率与数据的存储结构无关B. 算法的空间复杂度是指算法程序中指令(或语句)的条数C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止D. 以上三种描述都不对(2) 以下数据结构中不属于线性数据结构的是(C)A. 队列B. 线性表C. 二叉树D. 栈(3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得A. 8B. 16C. 32D. 15-(4) 下面描述中,符合结构化程序设计风格的是(A)A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B. 模块只有一个入口,可以有多个出口C. 注重提高程序的执行效率D. 不使用goto语句(5) 下面概念中,不属于面向对象方法的是(D) 注:P55-58A. 对象B. 继承C. 类D. 过程调用(6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B)A. 可行性分析B. 需求分析C. 详细设计D. 程序编码(7) 在软件开发中,下面任务不属于设计阶段的是(D)A. 数据结构设计B. 给出系统模块结构C. 定义模块算法D. 定义需求并建立系统模型(8) 数据库系统的核心是(B)A. 数据模型B. 数据库管理系统C. 软件工具D. 数据库(9) 下列叙述中正确的是(C)A.数据库是一个独立的系统,不需要操作系统的支持B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题D.数据库系统中,数据的物理结构必须与逻辑结构一致(10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108A. 内模式B. 外模式C. 概念模式D. 逻辑模式(11) 算法的时间复杂度是指(C)A. 执行算法程序所需要的时间B. 算法程序的长度C. 算法执行过程中所需要的基本运算次数D. 算法程序中的指令条数(12) 算法的空间复杂度是指(D)A. 算法程序的长度B. 算法程序中的指令条数C. 算法程序所占的存储空间D. 算法执行过程中所需要的存储空间(13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出A. 349B. 350C. 255D. 351-(14) 结构化程序设计主要强调的是(B)A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性(15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(D) 注:即第一个阶段A. 概要设计B. 详细设计C. 可行性分析D. 需求分析(16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。
全国计算机等级考试二级C语言笔试试题及答案一、选择题1. 以下关于C语言的描述中,正确的是(A)A. C语言是一种结构化程序设计语言B. C语言是面向对象的程序设计语言C. C语言是一种解释型语言D. C语言是一种高级汇编语言答案:A2. 在C语言中,以下哪个选项是非法的整型常量?(D)A. 012B. 0x123C. 0XabcD. 0123答案:D3. 若变量已正确定义并赋值,以下正确的表达式是(C)A. a = b ++ + 1;B. a = b ++ = a++;C. a = b + b++;D. a = ++b + ++b;答案:C4. 在C语言中,以下哪个函数用于输出字符?(B)A. printfB. putcharC. putcharcD. putchart答案:B5. 已知 int a = 5, b = 3;,以下哪个选项的结果为1?(D)A. a % bB. a / bC. a + bD. a - b答案:D二、填空题1. 在C语言中,一个int类型的数据在内存中占______个字节。
答案:42. C语言中,逻辑运算符“或”用______表示。
答案:||3. 若定义 int a = 10, b = 20;,则执行语句 a += b -= a; 后,b的值为______。
答案:104. 在C语言中,函数的返回值类型为void时,表示该函数______。
答案:无返回值5. 在C语言中,以下函数的返回类型为______。
int max(int a, int b) {return (a > b) ? a : b;}答案:int三、判断题1. C语言中的数组名可以作为指针使用。
(正确)2. 在C语言中,静态存储区的数据在程序运行期间一直存在。
(正确)3. 在C语言中,结构体是一种用户自定义的数据类型。
(正确)4. 在C语言中,函数的参数传递都是按值传递的。
(错误,部分按引用传递)5. 在C语言中,文件操作完成后必须关闭文件,否则可能导致数据丢失。
全国计算机考试二级c语言真题题库答案一、单项选择题(每题2分,共40分)1. 在C语言中,以下哪个选项是正确的数据类型?A. intB. floatC. doubleD. A、B和C都是答案:D2. 下列哪个是合法的C语言变量名?A. 2variableB. variable-nameC. _variableD. variable name答案:C3. 在C语言中,以下哪个选项表示逻辑“与”操作?A. &&B. ||C. !D. =答案:A4. 以下哪个选项是C语言中的控制语句?A. ifB. switchC. whileD. A、B和C都是5. 在C语言中,哪个函数用于计算并返回一个浮点数的平方根?A. sqrt()B. pow()C. log()D. sin()答案:A6. 在C语言中,以下哪个选项是正确的数组声明?A. int array[10];B. int array[];C. int [10] array;D. A和B都是答案:D7. 在C语言中,以下哪个选项是正确的字符串声明?A. char str[] = "Hello";B. char str[6] = "Hello";C. char str = "Hello";D. A和B都是答案:D8. 在C语言中,以下哪个选项是正确的函数声明?A. void function();B. int function();C. void function(int a);D. A、B和C都是答案:D9. 在C语言中,以下哪个选项表示“或”逻辑操作?B. ||C. !D. =答案:B10. 在C语言中,以下哪个选项是正确的结构体声明?A. struct {int id;char name[50];} employee;B. struct employee {int id;char name[50];};C. A和B都是D. A和B都不是答案:C11. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int ptr[];C. int *ptr = NULL;D. A和C都是答案:D12. 在C语言中,以下哪个选项是正确的文件操作函数?A. fopen()B. fclose()C. fprintf()D. A、B和C都是13. 在C语言中,以下哪个选项表示“非”逻辑操作?A. &&B. ||C. !D. =答案:C14. 在C语言中,以下哪个选项是正确的枚举类型声明?A. enum Color {Red, Green, Blue};B. enum {Red, Green, Blue} color;C. A和B都是D. A和B都不是答案:C15. 在C语言中,以下哪个选项是正确的宏定义?A. #define PI 3.14159B. const double PI = 3.14159;C. A和B都是D. A和B都不是答案:A16. 在C语言中,以下哪个选项是正确的联合体声明?A. union {int a;float b;} data;B. struct {int a;float b;C. A和B都是D. A和B都不是答案:A17. 在C语言中,以下哪个选项是正确的位运算符?A. &B. |C. ^D. A、B和C都是答案:D18. 在C语言中,以下哪个选项是正确的类型转换?A. (int)3.14B. (float)3C. A和B都是D. A和B都不是答案:C19. 在C语言中,以下哪个选项是正确的递归函数声明?A. void function();B. void function(int a);C. void function(void function());D. A和B都是答案:B20. 在C语言中,以下哪个选项是正确的预处理指令?A. #includeB. #defineC. #ifdefD. A、B和C都是二、程序填空题(每题5分,共20分)1. 请填写以下代码段中缺失的部分,以实现计算并打印一个整数的平方:```c#include <stdio.h>int main() {int num, square;scanf("%d", &num);square = num _____ num;printf("Square: %d\n", square);return 0;}```答案:*2。
计算机二级c语言考试真题及答案详解一、单项选择题(每题2分,共40分)1. 在C语言中,以下哪个选项是合法的整型常量?A. 0x12B. 0x12.3C. 0x12LD. 0x12.3L答案:A2. 若有定义int a=1, b=2;,则以下哪个表达式的值不为真?A. a<bB. a<=bC. a>bD. a!=b答案:C3. 在C语言中,以下哪个选项是合法的字符串字面量?A. "Hello, World"B. 'Hello, World'C. "Hello, World\n"D. "Hello, World\0"答案:A4. 下列哪个函数不能正确计算数组元素的总和?A. sum = 0; for(i=0; i<n; i++) sum += array[i];B. sum = 0; for(i=0; i<n; i++) sum = sum + array[i];C. sum = 0; for(i=0; i<n; i++) sum = array[i];D. sum = 0; for(i=0; i<n; i++) sum += array[i];答案:C5. 在C语言中,以下哪个选项是合法的函数声明?A. int add(int, int);B. int add();C. int add(int a, int b);D. int add(a, b);答案:C6. 若有定义int a[10];,则以下哪个表达式是合法的数组元素访问?A. a[10]B. a[-1]C. a[3.5]D. a[3]答案:D7. 在C语言中,以下哪个选项是合法的指针声明?A. int *ptr;B. int *ptr[];C. int ptr*;D. int ptr[];答案:A8. 若有定义int x=10;,则以下哪个表达式是合法的赋值语句?A. x = x + 1;B. x = 1 + x;C. x = x++;D. x = ++x;答案:A9. 在C语言中,以下哪个选项是合法的循环语句?A. for(;;)B. while(1)C. do {} while(0)D. for(;;) {}答案:D10. 若有定义int a[5] = {1, 2, 3, 4, 5};,则以下哪个表达式是合法的数组元素访问?A. a[5]B. a[-1]C. a[2.5]D. a[2]答案:D11. 在C语言中,以下哪个选项是合法的switch语句?A. switch(x) { case 1: break; }B. switch(x) { default: break; }C. switch(x) { case 1: case 2: break; }D. switch(x) { case 1: default: break; }答案:C12. 若有定义int x=5;,则以下哪个表达式是合法的自增运算?A. x++;B. ++x;C. x--;D. --x;答案:A13. 在C语言中,以下哪个选项是合法的函数原型声明?A. void func();B. int func(int);C. void func(int a);D. All of the above答案:D14. 若有定义int a=3;,则以下哪个表达式是合法的位运算?A. a & 2B. a | 2C. a ^ 2D. All of the above答案:D15. 在C语言中,以下哪个选项是合法的宏定义?A. #define PI 3.14159B. #define PI 3.14159fC. #define PI 3.14159LD. All of the above答案:A二、编程题(每题30分,共60分)1. 编写一个函数,计算并返回一个整数数组中所有元素的和。
全国计算机等级考试二级c语言题库及答案全国计算机等级考试二级C语言题库及答案1. 以下关于C语言的叙述中,错误的是:A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言支持模块化程序设计答案:B2. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. forC. returnD. void答案:D3. 若有定义:int a=3, b=4; 则表达式 a+b 的值是:A. 7B. 6C. 3.4D. 43答案:A4. 在C语言中,以下哪个选项不是合法的变量名?A. _sumB. sum_C. 2valueD. sum$答案:C5. 在C语言中,以下哪个选项是正确的二维数组声明?A. int array[3][2];B. int array[][];C. int array[3][];D. int array[2,3];答案:A6. 若有定义:char c1='a', c2='b'; 则表达式 c1-c2 的值是:A. -1B. 1C. 97D. 98答案:A7. 在C语言中,以下哪个选项不是合法的字符串字面量?A. "Hello"B. 'Hello'C. "123"D. "C\"Language"答案:B8. 若有定义:int x=10; 则表达式 x++ 的结果是:A. 10B. 11C. 9D. 无法确定答案:A9. 在C语言中,以下哪个关键字用于声明一个指针?A. intB. charC. floatD. pointer答案:B10. 若有定义:int a[5] = {1, 2, 3, 4, 5}; 则表达式 a[2] 的值是:A. 3B. 4C. 5D. 无法确定答案:A11. 在C语言中,以下哪个选项不是合法的循环控制语句?A. forB. whileC. do-whileD. repeat答案:D12. 若有定义:float x=3.14; 则表达式 (int)x 的值是:A. 3B. 3.14C. 4D. 无法确定答案:A13. 在C语言中,以下哪个选项不是合法的函数参数类型?A. intB. floatC. doubleD. void答案:D14. 若有定义:int a=5, b=10; 则表达式 a%b 的值是:A. 5B. 0C. 1D. 无法确定答案:B15. 在C语言中,以下哪个选项不是合法的输入输出函数?A. printfB. scanfC. coutD. getchar答案:C16. 若有定义:int a=2, b=4; 则表达式 a&b 的值是:A. 0B. 2C. 4D. 6答案:B17. 在C语言中,以下哪个选项不是合法的逻辑运算符?A. &&B. ||C. !D. <答案:D18. 若有定义:int a=3; 则表达式 a<<2 的值是:A. 6B. 12C. 9D. 无法确定答案:B19. 在C语言中,以下哪个选项不是合法的文件操作函数?A. fopenB. fcloseC. removeD. delete答案:D20. 若有定义:int a=6; 则表达式 a==6 的值是:A. 1B. 0C. 6D. 无法确定答案:A。
国家二级计算机考试c语言试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言中变量的描述,错误的是:A. 变量名必须以字母开头B. 变量名可以包含数字和下划线C. 变量名区分大小写D. 变量名可以以数字开头答案:D2. C语言中,用于定义一个整型变量的关键字是:A. intB. floatC. doubleD. char答案:A3. 在C语言中,以下哪个运算符用于计算两个数的乘积?A. +B. -C. *D. /答案:C4. 下列哪个选项不是C语言中的控制结构?A. 顺序结构B. 选择结构C. 循环结构D. 函数结构5. 在C语言中,用于定义函数的关键字是:A. intB. voidC. returnD. function答案:B6. C语言中,用于声明一个字符型变量的关键字是:A. intB. charC. floatD. double答案:B7. 在C语言中,以下哪个选项是正确的注释方式?A. //B. /* */C.D. @@答案:B8. C语言中,用于定义一个浮点型变量的关键字是:A. intB. floatC. doubleD. char答案:B9. 在C语言中,以下哪个选项不是合法的整数常量?B. 0x1AC. 0123D. 1.23答案:D10. 在C语言中,以下哪个选项不是合法的标识符?A. _nameB. name2C. 2nameD. name-name答案:C二、填空题(每题2分,共20分)1. 在C语言中,使用________关键字可以定义一个数组。
答案:int2. C语言中,使用________函数可以输出格式化的字符串。
答案:printf3. 如果要定义一个指向整型数据的指针,应该使用________关键字。
答案:int*4. 在C语言中,使用________关键字可以定义一个结构体。
答案:struct5. 使用________函数可以获取当前系统时间。
答案:time6. 在C语言中,使用________关键字可以定义一个枚举类型。
计算机二级c语言考试题库和答案一、单项选择题(每题2分,共40分)1. 在C语言中,以下哪个选项是正确的整型常量?A. 0x12B. 0x12.3C. 0x12LD. 0x12U答案:A2. C语言中,以下哪个选项是正确的字符串字面量?A. "Hello"B. 'Hello'C. "Hello", "World"D. 'Hello', 'World'答案:A3. 下列哪个选项是合法的C语言变量名?A. 2variableB. variable2C. _variableD. variable-2答案:B4. 在C语言中,以下哪个选项是正确的浮点型常量?A. 3.14E2B. 3.14e-2C. 3.14ED. 3.14e答案:B5. 下列哪个选项是C语言中的保留字?A. defineB. sizeofC. includeD. myFunction答案:B6. 在C语言中,以下哪个选项是正确的数组声明?A. int array[5] = {1, 2, 3, 4, 5};B. int array[] = {1, 2, 3, 4, 5};C. int array[5] = {1, 2, 3};D. int array = {1, 2, 3, 4, 5};答案:B7. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. !D. All of the above答案:D8. 在C语言中,以下哪个选项是正确的函数声明?A. void myFunction();B. int myFunction();C. int myFunction(int x);D. All of the above答案:D9. 下列哪个选项是C语言中的位运算符?A. &B. |C. ^D. All of the above答案:D10. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int ptr[];C. int *ptr = 0;D. All of the above答案:D11. 下列哪个选项是C语言中的循环结构?A. forB. whileC. do-whileD. All of the above答案:D12. 在C语言中,以下哪个选项是正确的条件语句?A. ifC. if-elseD. All of the above答案:D13. 下列哪个选项是C语言中的输入输出函数?A. printf()B. scanf()C. Both A and BD. None of the above答案:C14. 在C语言中,以下哪个选项是正确的结构体声明?A. struct {int a;float b;B. struct myStruct {int a;float b;};C. Both A and BD. None of the above答案:C15. 下列哪个选项是C语言中的动态内存分配函数?A. malloc()B. calloc()C. realloc()D. All of the above答案:D16. 在C语言中,以下哪个选项是正确的枚举类型声明?A. enum Color {RED, GREEN, BLUE};B. enum {RED, GREEN, BLUE};C. Both A and BD. None of the above答案:C17. 下列哪个选项是C语言中的联合体声明?A. union {int a;float b;} myUnion;B. union myUnion {int a;float b;};C. Both A and BD. None of the above答案:C18. 在C语言中,以下哪个选项是正确的宏定义?A. #define PI 3.14B. const double PI = 3.14;C. Both A and BD. None of the above答案:A19. 下列哪个选项是C语言中的文件操作函数?A. fopen()B. fclose()C. Both A and BD. None of the above答案:C20. 在C语言中,以下哪个选项是正确的递归函数声明?A. int factorial(int n);B. void printNumbers(int n);C. int factorial(int n) {if (n == 0) return 1;return n * factorial(n - 1);}D. All of the above答案:D二、填空题(每题2分,共20分)21. 在C语言中,`sizeof`运算符用于获取______的字节大小。
c语言二级考试题及答案一、单项选择题(本大题共40小题,每小题2分,共80分)1. 在C语言中,下列哪个选项是正确的整型常量?A. 0.5B. 0x12C. 0x12.0D. 0x12L答案:B2. C语言中,下列哪个选项是正确的字符串字面量?A. "hello"B. 'hello'C. "hello'"D. 'hello"答案:A3. 在C语言中,下列哪个选项是合法的标识符?A. 2variableB. variable2C. _variableD. variable-2答案:C4. 下列哪个选项是C语言中的关键字?A. intB. integerC. realD. double答案:A5. 在C语言中,下列哪个选项是正确的二进制常量表示?A. 0x1BB. 0b1101C. 0B1101D. 0x1101答案:B6. C语言中,下列哪个选项是正确的浮点型常量表示?A. 3.14B. 3.14e2C. 3.14E-2D. 3.14f答案:C7. 在C语言中,下列哪个选项是正确的字符常量表示?A. 'a'B. "a"C. 'ab'D. '0x61'答案:A8. 下列哪个选项是C语言中合法的数组声明?A. int a[5] = {1, 2, 3, 4, 5};B. int a[] = {1, 2, 3, 4, 5};C. int a[5] = {1, 2, 3};D. int a = {1, 2, 3, 4, 5};答案:A9. 在C语言中,下列哪个选项是正确的函数声明?A. int add(int a, int b);B. int add();C. int add(int, int);D. int add(int a, b);答案:A10. 下列哪个选项是C语言中合法的指针声明?A. int *p;B. int *p[];C. int *p[5];D. int (*p)();答案:A11. 在C语言中,下列哪个选项是正确的结构体声明?A. struct Point { int x, y; };B. struct { int x, y; } Point;C. struct Point { int x; int y; };D. struct { int x; int y; };答案:C12. 下列哪个选项是C语言中合法的枚举声明?A. enum {RED, GREEN, BLUE} color;B. enum color {RED, GREEN, BLUE};C. enum {RED, GREEN, BLUE};D. enum color {0, 1, 2};答案:B13. 在C语言中,下列哪个选项是正确的宏定义?A. #define PI 3.14159B. #define PI = 3.14159C. #define PI(3.14159)D. #define PI 3.14159;答案:A14. 下列哪个选项是C语言中合法的文件包含指令?A. #include <stdio.h>B. #include "stdio.h"C. #include <stdio.h>D. #include "stdio.h"答案:A15. 在C语言中,下列哪个选项是正确的条件语句?A. if (a > b) { ... }B. if a > b { ... }C. if (a > b) then { ... }D. if a > b then { ... }答案:A16. 下列哪个选项是C语言中合法的循环语句?A. for (i = 0; i < n; i++) { ... }B. for i = 0; i < n; i++ { ... }C. for (i = 0; i < n; i++) { ... }D. for i = 0 to n { ... }答案:A17. 在C语言中,下列哪个选项是正确的switch语句?A. switch (a) { case 1: ...; case 2: ...; }B. switch (a) { case 1: ...; case 2: ...; default: ...; }C. switch (a) { case 1: ...; case 2: ...; break; }D. switch (a) { case 1: ...; case 2: ...; default: ...; }答案:D18. 下列哪个选项是C语言中合法的goto语句?A. goto label;B. goto 10;C. label: ...D. goto;答案:C19. 在C语言中,下列哪个选项是正确的函数调用?A. printf("%d", 10);B. scanf("%d", &a);C. printf("%d", a);D. scanf("%d", a);答案:B20. 下列哪个选项是C语言中合法的函数定义?A. int add(int a, int b) { return a + b; }B. int add(int a, b) { return a + b; }C. int add(int a, int b) { return a + b; }D. int add(a, b) { return a + b; }答案:A21. 在C语言中,下列哪个选项是正确的递归函数调用?A. int factorial(int n) { return n * factorial(n - 1); }B. int factorial(int n) { if (n == 0) return 1; else return n * factorial(n - 1); }C. int factorial(int n) { return n * factorial(n + 1); }D. int factorial(int n) { if (n == 1) return 1; else return n * factorial(n - 1); }答案:B22. 下列哪个选项是C语言中合法的数组初始化?A. int a[5] = {1, 2, 3, 4, 5};B. int a[5] = {1, 2, 3, 4};C. int a[5] = {1, 2, 3};D. int a[5] = {1, 2, 3, 4, 5, 6};答案:A23. 在C语言中,下列哪个选项是正确的字符串复制?A. strcpy(a, b);B. strcopy(a, b);C. copy(a, b);D. strcp(a, b);24. 下列哪个选项是C语言中合法的内存分配?A. int *p = (int *)malloc(sizeof(int) * 10);B. int *p = malloc(10 * sizeof(int));C. int *p = (int *)malloc(10);D. int *p = malloc(sizeof(int) * 10);答案:A25. 在C语言中,下列哪个选项是正确的内存释放?A. free(p);B. delete p;C. deallocate p;D. dispose p;答案:A26. 下列哪个选项是C语言中合法的指针运算?B. p--;C. p += 2;D. p = 2;答案:A27. 在C语言中,下列哪个选项是正确的结构体赋值?A. Point p1 = {1, 2};B. Point p1 = p2;C. Point p1 = {1, 2};D. Point p1 = {1, 2, 3};答案:B28. 下列哪个选项是C语言中合法的枚举值使用?A. color = RED;B. color = 0;C. color = "RED";D. color = 1;答案:A29. 在C语言中,下列哪个选项是正确的宏替换?A. #define SQUARE(x) x * xB. #define SQUARE(x) (x) * (x)C. #define SQUARE(x) x * xD. #define SQUARE(x) (x) * (x)答案:D30. 下列哪个选项是C语言中合法的文件操作?A. FILE *fp = fopen("file.txt", "r");B. FILE *fp = open("file.txt", "r");C. FILE *fp = fopen("file.txt", "w");D. FILE *fp = open("file.txt", "w");答案:A31. 在C语言中,下列哪个选项是正确的文件读取?A. fscanf(fp, "%d", &a);B. scanf(fp, "%d", &a);C. fscanf(fp, "%d", a);D. scanf(fp, "%d", a);答案:A32. 下列哪个选项是C语言中合法的文件写入?A. fprintf(fp, "%d", a);B. printf(fp, "%d", a);C. fprintf(fp, "%d", &a);D. printf(fp, "%d", &a);答案:A33. 在C语言中,下列哪个选项是正确的文件关闭?A. close(fp);B. fclose(fp);C. fclose(fp);D. close(fp);答案:B34. 下列哪个选项是C语言中合法的错误处理?A. if (fp == NULL) { perror("Error opening file"); exit(1); }B. if (fp == NULL) { printf("Error opening file"); exit(1); }C. if (fp == NULL) { perror("Error opening file"); return 1; }D. if (fp == NULL) { printf("Error opening file"); return 1; }答案:A35. 在C语言中,下列哪个选项是正确的位运算?A. a & b;B. a && b;D. a || b;答案:A36. 下列哪个选项是C语言中合法的逻辑运算?A. a && b;B. a || b;C. a & b;D. a | b;答案:A37. 在C语言中,下列哪个选项是正确的自增运算?A. a++;B. ++a;C. a += 1;D. a = a + 1;38. 下列哪个选项是C语言中合法的自减运算?A. a--;B. --a;C. a -= 1;D. a = a - 1;答案:A39. 在C语言中,下列哪个选项是正确的类型转换?A. (int)a;B. int(a);C. (int)(a);D. int a;答案:C40. 下列哪个选项是C语言中合法的sizeof运算?A. sizeof(a);B. sizeof int;C. sizeof(int);D. sizeof "string";答案:C二、程序填空题(本大题共2小题,每小题10分,共20分)1. 给定以下代码片段,请填写缺失的部分以实现计算并打印两个整数的和。
全国计算机等级考试等级考试真题库之选择题(15)1.下列链表中,其逻辑结构属于非线性结构的是A) 二叉链表B) 循环链表C) 双向链表D) 带链的栈参考答案:A【解析】在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。
带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。
在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。
循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。
二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。
答案为A选项。
2.设循环队列的存储空间为Q(1: 35),初始状态为front=rear=35。
现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A) 15B) 16C) 20D) 0或35参考答案:D【解析】在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。
在循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。
只不过当头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。
由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。
答案为D选项。
3.下列关于栈的叙述中,正确的是A) 栈底元素一定是最后入栈的元素B) 栈顶元素一定是最先入栈的元素C) 栈操作遵循先进后出的原则D) 以上说法均错误参考答案:C【解析】栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。
栈的修改是按后进先出的原则进行的。
因此,栈称为先进后出表,或"后进先出"表,所以选择C。
4.在关系数据库中,用来表示实体间联系的是A) 属性B) 二维表C) 网状结构D) 树状结构参考答案:B【解析】关系模型实体间的联系采用二维表来表示,简称表。
选项C为网状模型实体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。
则实体部门和职员间的联系是A) 1:1联系B) m:1联系C) 1:m联系D) m:n联系参考答案:C【解析】两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系(1:1)、一对多联系(1:m)、多对一联系(m:1)、多对多联系(m:n)。
对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系(1:m),答案选C。
6.A) 选择B) 投影C) 自然连接D) 并参考答案:A【解析】由关系R到关系S为一元运算,排除C和D。
关系S是关系R的一部分,是通过选择之后的结果,因此选A。
7.数据字典(DD) 所定义的对象都包含于A) 数据流图(DFD图)B) 程序流程图C) 软件结构图D) 方框图参考答案:A【解析】在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来就构成了数据字典。
因此选A,而B,C,D都不符合。
8.软件需求规格说明书的作用不包括A) 软件验收的依据B) 用户与开发人员对软件要做什么的共同理解C) 软件设计的依据D) 软件可行性研究的依据参考答案:D【解析】软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。
软件需求规格说明书有以下几个方面的作用。
①便于用户、开发人员进行理解和交流,B正确;②反映出用户问题的结构,可以作为软件开发工作的基础和依据,C正确;③作为确认测试和验收的依据,A正确。
9.下面属于黑盒测试方法的是A) 语句覆盖B) 逻辑覆盖C) 边界值分析D) 路径覆盖参考答案:C【解析】黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。
在使用黑盒测试法时,手头只需要有程序功能说明就可以了。
黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为C。
而A、B、D均为白盒测试方法。
10.下面不属于软件设计阶段任务的是A) 软件总体设计B) 算法设计C) 制定软件确认测试计划D) 数据库设计参考答案:C【解析】从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。
所以A、B、D正确,C为软件测试阶段的任务。
11.以下叙述中正确的是A) N-S流程图只能描述简单的顺序结构的程序B) 程序的算法只能使用流程图来描述C) 结构化程序的三种基本结构是循环结构、选择结构、顺序结构D) 计算机可以直接处理C语言程序,不必进行任何转换参考答案:C【解析】N-S流程图是可以描述循环结构、选择结构、顺序结构等多种结构的程序,所以A选项错误。程序的算法可以用流程图、伪代码、N-S结构图等方法表示,所以B选项错误。计算机只能处理二进制表示的目标程序,不能直接执行由C语言编写的源程序,所以D选项错误。12.以下叙述中正确的是A) 书写源程序时,必须注意缩进格式,否则程序会有编译错误B) 程序的主函数名除main外,也可以使用Main或_mainC) 程序可以包含多个主函数,但总是从第一个主函数处开始执行D) 在C程序中,模块化主要是通过函数来实现的参考答案:D解析】C语言的源程序中对缩进没有要求,所以A选项错误。C语言中区分大小写,main函数不能写成Main或_main,所以B选项错误。一个C程序有且只有一个主函数,所以C选项错误。13.C语言中double 类型数据占字节数为A) 4B) 8C) 12D) 16参考答案:B【解析】double型数据在内存中占8个字节,float型数据占4个字节,int型数据占2个字节,char 型数据占1个字节。所以选择B。14.以下叙述中正确的是A) 语言中的关键字不能作变量名,但可以作为函数名B) 标识符的长度不能任意长,最多只能包含16个字符C) 标识符总是由字母、数字和下划线组成,且第一个字符不得为数字D) 用户自定义的标识符必须"见名知义",如果随意定义,则会出编译错误参考答案:C解析】C语言中的关键字即不能做变量名也不能做用户函数名,所以A错误。标识符的命名规则,即由下划线字母数字组成,且必须以下划线和字母开始,也不能和关键字一致。不同C语言规定标识符的有效长度可能会不同,但没有限制最大长度,所以B错误。用户定义的标识符只要满足标识符命名规则没有特殊要求,不必一定"见名知义",所以D错误。15.以下叙述中正确的是A) 由printf输出的数据都隐含左对齐B) scanf和printf是C语言提供的输入和输出语句C) 赋值语句是一种执行语句,必须放在函数的可执行部分D) 由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的参考答案:C【解析】scanf和printf是C语言提供的输入输出函数,所以B错误。由printf输出的数据都隐含右对齐,所以A错误。Printf输出数据所占的宽度由系统决定,所以D错误。16.以下叙述中正确的是A) 复合语句在语法上包含多条语句,其中不能定义局部变量B) 花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的C) 空语句就是指程序中的空行D) 当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键) 前,可以任意修改参考答案:D【解析】复合语句可以包含多条语句,在其中可以定义局部变量,所以A错误。花括号对{}不仅用来表示函数的开头和结尾,也可以用于表示复合语句,所以B错误。C语言中的语句必须以分号";"结束,所以空语句表示为";",不是空行,所以C错误。17.以下叙述中正确的是A) 在C语言中,逻辑真值和假值分别对应1和0B) 关系运算符两边的运算对象可以是C语言中任意合法的表达式C) 对于浮点变量x和y,表达式:x==y 是非法的,会出编译错误D) 分支结构是根据算术表达式的结果来判断流程走向的参考答案:B【解析】A选项中,在C语言中,逻辑真值对应非0;C选项中,表达式:x==y 是合法的;D 选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。
因此B选项正确。
18.以下叙述中正确的是A) 对于逻辑表达式:a++ || b++,设a的值为1,则求解表达式的值后,b的值会发生改变B) 对于逻辑表达式:a++ && b++,设a的值为0,则求解表达式的值后,b的值会发生改变C) else不是一条独立的语句,它只是if语句的一部分D) 关系运算符的结果有三种:0,1,-1参考答案:C【解析】B选项和A选项中,对于逻辑表达式,其中b的值不会因为表达式的结果发生改变;D选项中,关系运算符的结果有"真"和"假"两种。
因此C选项正确。
19.以下叙述中正确的是A) continue语句使得整个循环终止B) break语句不能用于提前结束for语句的本层循环C) 使用break语句可以使流程跳出switch语句体D) 在for语句中,continue与break的效果是一样的,可以互换参考答案:C【解析】break语句通常用在循环语句和开关语句中。
当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,即满足条件时便跳出循环。
continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。
A、B和D三个选项中均有错误。
因此C选项正确。
20.以下叙述中正确的是A) 循环发生嵌套时,最多只能两层B) 三种循环for,while,do-while可以互相嵌套C) 循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误D) for语句的圆括号中的表达式不能都省略掉参考答案:B【解析】A选项中,循环发生嵌套时,没有规定层数;C选项中,循环嵌套时,书写代码时没有要求必须缩进;D选项中,for语句的圆括号中的表达式都可以省略掉。
因此B选项正确。
21.下面选项中合法的字符常量是A) "X"B) 'X'C) 'abc'D) '\'参考答案:B【解析】字符常量是用单引号括起来的一个字符。
A选项中,使用双引号,所以是错误的;C选项中,'abc'是字符串,字符常量只能是单个字符,不能是字符串;D选项中,以反斜线"\"开头的是转义字符。