最新C语言 第1-9章基本概念练习题ans(最全)

合集下载

最新C语言 第1-9章基本概念练习题ans(最全)

最新C语言  第1-9章基本概念练习题ans(最全)

第一单元(1-5章)基本概念练习题一、单选选择(直接在正确的选项上打勾,每题)1、下面关于C语言特点的描述,不正确的是( )。

DA、C语言兼有高级语言和低级语言的双重特点,执行效率高B、C语言既可以用来编写应用程序,又可以用来编写系统软件C、C语言是一种结构式模块化程序设计语言D、C语言的可移植性较差2、C语言规定,在一个源程序中,main函数的位置( )。

BA、必须在最开始B、可以任意C、必须在最后D、必须在系统调用的库函数的后面3、下列说法中正确的是( )。

CA、C程序书写时,不区分大小写字母B、C程序书写时,一行只能写一个语句C、C程序书写时,一个语句可分成几行书写D、C程序书写时每行必须有行号4、C语言编译程序的首要工作是( )。

AA、检查C语言程序的语法错误B、检查C语言程序的逻辑错误C、检查程序的完整性D、生成目标文件5、C语言程序经过连接以后生成的文件名的后缀为( )。

CA、.cB、.objC、.exeD、.cpp6、以下关于算法的说法中,错误的是( )。

DA、一个算法应包含有限个步骤B、在计算机上实现的算法是用来处理数据对象的C、算法的目的是为了求解D、算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现7、算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性之一的是( )。

CA、确定性B、有穷性C、零个或多个输出D、零个或多个输入8、以下不属于结构化程序设计三种基本结构之一的是( )。

BA、顺序B、递归C、循环D、选择9、下列数据中,不合法的C语言实型数据是( )。

CA、0.123B、123e3C、2.1e3.5D、789.010、若变量a、i已正确定义,且i已正确赋值,以下属于合法的C语句是( )。

A、a==1B、++i;C、a=a++=5;D、a=int(i);11、已有定义int a=6; 则执行语句a+=a-=a*a;后,a的值为( )。

c语言第九章题库及详解答案

c语言第九章题库及详解答案

c语言第九章题库及详解答案C语言第九章题库及详解答案一、选择题1. 在C语言中,以下哪个关键字用于定义数组?A. arrayB. listC. setD. define2. 以下哪个选项是正确的C语言数组声明?A. int myArray[];B. int myArray[10] = {};C. int myArray = 10;D. int myArray(10);3. 数组元素的默认初始化值是什么?A. 0B. 1C. -1D. 随机值4. 在C语言中,数组的索引是从哪个数字开始的?A. 0B. 1C. -1D. 105. 以下哪个函数可以用于计算数组中元素的个数?A. count()B. size()C. length()D. sizeof()二、填空题6. 在C语言中,声明一个具有10个整数元素的数组的语句是:________。

答案:int myArray[10];7. 如果数组的索引从0开始,那么数组myArray[10]的最后一个元素的索引是:________。

答案:98. 要初始化一个数组的所有元素为0,可以使用:________。

答案:int myArray[10] = {0};9. 在C语言中,可以使用________运算符来访问数组的元素。

答案:[]10. 当数组作为参数传递给函数时,实际上传递的是数组的________。

答案:首地址三、简答题11. 解释C语言中数组的内存分配方式。

答案:在C语言中,数组是连续存储在内存中的。

数组的内存分配是静态的,即在编译时分配。

数组的元素按照声明的顺序在内存中连续排列。

12. 说明数组和指针在C语言中的关系。

答案:在C语言中,数组名可以作为指针使用。

数组名代表数组的首地址。

当数组作为参数传递给函数时,数组名退化为指向数组第一个元素的指针。

四、编程题13. 编写一个C语言程序,实现对一个整数数组的排序。

答案:```c#include <stdio.h>void sortArray(int arr[], int size) {int i, j, temp;for (i = 0; i < size - 1; i++) {for (j = i + 1; j < size; j++) {if (arr[i] > arr[j]) {temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}}int main() {int myArray[] = {5, 3, 8, 2, 1};int size = sizeof(myArray) / sizeof(myArray[0]);sortArray(myArray, size);printf("Sorted array: ");for (int i = 0; i < size; i++) {printf("%d ", myArray[i]);}return 0;}```14. 编写一个C语言程序,实现查找数组中的最大值和最小值。

C++1-9章基础知识(含答案)

C++1-9章基础知识(含答案)

D、 C++程序中,main 函数只能位于程序的最前面
3. 以下叙述中不正确的是______。
A、C++语言中不区分字母的大小写
B、C++程序中的注释不参与程序的运行
C、C++语言是 C 语言的扩展
D、C++程序总是从 main 函数开始执行
4. C++源程序文件的扩展名为 ______。 ?工作区文件、工程文件、目标文件、可执行文
A、sizeof(a)的值与 sizeof(p)的值相等
B、sizeof(a)的值与 strlen(p)的值相等
C、strlen(p)的值与 strlen(a)的值相等
D、sizeof(p)的值与 strlen(a)的值相等
31. 以下不能正确进行字符串赋初值的语句是 ______。
A、char str[5]="good!";
A、case for int C、 bool class long
B、default then while D、 goto return char
10. 已定义 ch 为字符型变量,以下赋值语句中错误的是__________。
A、ch=’\’;
B、ch=62+3; C. ch=NULL;
D. ch=’\xaa’;
A、 1 B、0 C、与 x 值相同 D、与 x 值相反
19. 字符串"a+b=12\n"的长度为__________。
A、6
B、7
C、8 D、9
20. 执行如下语句序列后 z 的值为______。
int x=5, y=6, z ; float a=5 ; z=y/x + y/a +a ;

C语言全部章节习题集(参考答案)

C语言全部章节习题集(参考答案)

C语言全部章节习题集(参考答案).txt如果真诚是一种伤害,请选择谎言;如果谎言是一种伤害,请选择沉默;如果沉默是一种伤害,请选择离开。

第一章 C语言概述一、选择题:1、一个C程序的执行是从( A )。

A本程序的main函数开始,到main函数结束B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束D本程序文件的第一个函数开始,到本程序main函数结束2、在 C 语言中,每个语句必须以( D )结束。

A. 回车符B. 冒号C. 逗号D. 分号3、C 语言规定:在一个源程序中,main函数的位置( C )。

A. 必须在最开始B. 必须在系统调用的库函数的后面C. 可以任意D. 必须在最后4、一个C 语言程序是由( B )。

A. 一个主程序和若干子程序组成B. 函数组成C. 若干过程组成D. 若干子程序组成5、下列说法中错误的是( D )。

A. 主函数可以分为两个部分:主函数说明部分和主函数体B. 主函数可以调用任何非主函数的其他函数C. 任何非主函数可以调用其他任何非主函数D. 程序可以从任何非主函数开始执行6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。

A. 生成可执行目标文件B. 生成目标文件C. 输出运行结果D. 自动保存源文件二、填空题:1、C 语言只有 32 个关键字和 9 种控制语句。

2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。

3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 \* 符号作为开始标记,以 */ 符号作为结束标记。

4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函数 printf 完成的。

5、系统默认的C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标文件的扩展名是 .obj ,经过连接后生成的可执行文件的扩展名是 .exe 。

(完整版)【推荐】C语言各章节练习题(含答案)

(完整版)【推荐】C语言各章节练习题(含答案)

一、C语言概述练习题选择1.一个C程序的执行是从 A 。

本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序文件的第一个函数开始,到本程序main函数结束D) 本程序的main函数开始,到本程序文件的最后一个函数结束2.以下叙述不正确的是 D 。

A) 一个C源程序必须包含一个main函数 B)一个C源程序可由一个或多个函数组成C) C程序的基本组成单位是函数在C程序中,注释说明只能位于一条语句的后面3.以下叙述正确的是 C 。

A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误B) 在C程序中,main函数必须位于程序的最前面语言本身没有输入输出语句 D) C程序的每行中只能写一条语句4.一个C语言程序是由 B 。

A)一个主程序和若干个子程序组成函数组成 C) 若干过程组成 D) 若干子程序组成二、数据类型、运算符与表达式选择. 1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C.x=(i=4,j=16,k=32) A) 4 B) 16 D) 522.下列四组选项中,均不是C语言关键字的选项是 A 。

C) include case scanf D) while go pow3.下列四组选项中,均是不合法的用户标识符的选项是 B 。

4.下列四组选项中,均是合法转义字符的选项是 A 。

\”’‘\\’‘\n’ B)‘\’‘\017’‘\”’ C)‘\018’‘\f’‘xab’ D)‘\\0’‘\101’‘xlf’5.下面不正确的字符常量是 A 。

“c”B) ‘\\’’C) ‘’D) ‘K’6.以下叙述不正确的是 D 。

A) 在C程序中,逗号运算符的优先级最低 B) 在C程序中,MAX和max是两个不同的变量C) 若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值7.以下叙述正确的是 B 。

C语言练习题答案.doc

C语言练习题答案.doc

第一章C语言基础知识一,选择题1答案是AA正确课本第2页11行B{}可以作为复合语句的标志Cmain函数不是用户命名的,C语言中规定只能有一个主函数,这是C语言规定好的,不是用户自己定义的。

D分号是语句结束的标志,是语句的一部分做这个题R需要对书上的概念透彻的理解2答案是AA错误课本第4页关于用户标识符是这样介绍的…标识符只能由字母、下划线和数字构成。

并且不能以数字开头。

命名时,标识符的选择由用户自定,但是不能与关键字相同,所以A选项错误。

这个题目考察用户标识符3答案是B-用户标识符:只能由字母、下划线和数字构成。

并且不能以数字开头。

不能和关键字相同。

A答案中中划线是不能出现的;C答案中下划线是可以放在标识符的开头,D答案中,数字字符不可以出现在标识符的开头。

4答案是B用户标识符:只能由字母、下划线和数字构成。

并且不能以数字开头。

不能和关键字相同。

用户标识符可以和与定义标识符相同。

A答案:int位关键字故不可以。

C答案:int位关键字故不可以。

D答案:printf位预定义标识符,故可以作为用户标识符,只是printf 会失去原有的含义。

5答案是D用户标识符:只能由字母、下划线和数字构成。

并且不能以数字开头。

不能和关键字相同。

用户标识符可以和预定义标识符相同。

long是关键字,参照附录二注:6-13考察用户标识符概念掌握用户标识符的概念:用户标识符:只能由字母、下划线和数字构成。

并且不能以数字开头。

不能和关键字相同。

用户标识符可以和与定义标识符相同。

6答案是DD答案以数字2开头了,不符合标识符定义7答案是CC答案以数字开头了8答案是Dint是关键字9答案是B答案A是关键字,答案C是以数字开头,不符合概念,答案D出现了小数点10答案是A答案A 出现了小数点11答案是C答案C 以数字开头了12答案是AB答案中float是关键字,C答案中3c以数字3开头,D答案中中中划线不属于字母,数字,下划线中一种13答案是AB答案中-max + +划线错误,C答案中3COM以字母3数字开头,D 答案中int是关键字,不是用户标识符的命名规则。

(完整版)C语言各章练习题

(完整版)C语言各章练习题

目录第一章程序设计和C语言 (2)第二章最简单的C程序设计 (2)第三章选择结构程序设计 (4)第四章循环结构程序设计 (7)第五章数组 (11)第六章函数 (14)第七章指针 (18)第一章程序设计和C语言一、选择题:1.一个C程序的执行是从( )A、本程序的main函数开始,到main函数结束B、本文件第一个函数开始,到本文件的最后一个函数结束C、本程序的main函数开始,到本文件的最后一个函数结束D、本文件的第一个函数开始,到本文件的main结束2.以下说法不正确的是()A、一个C源程序可由一个或多个函数组成B、一个C程序必须包含一个main函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面3.C语言规定:在一个源程序中,main函数的位置()A、必须在开始B、必须在系统调用的库函数的位置C、可以任意D、必须在最后4.源程序program.c经编译产生的目标文件和连接后产生的可执行文件是( )A、program.bak和program.objB、program.obj和program.exeC、program.exl和program.cD、program.bak和prgram.exe第二章最简单的C程序设计一、选择题1.是合法的用户自定义标识符的( )A、ah-spksB、doubleC、<ctrl>D、_myapple2.以下正确的C语言标识符是()A、%xB、a+bC、a123D、test!3.以下不能定义为用户标识符的是( )A、V oidB、b_2C、intD、name4.以下选项中可作为C语言合法整数的是( )A、11010(B)B、0583C、x2b2D、0xafb5.VC++6.0中的短整型数值在计算机中占用的字节个数是( )A、1B、2C、3D、46.设short int型的数据长度为2个字节,则unsigned short 类型数据的取值范围是()P34A、均为2个字节B、0至65535C、-3276至32767D、-256至255 7.以下选项中可作为C语言合法常量的是()(指数E或e前必须有数字,后面必须有整数)A、-80.0B、-080C、-8e1.2D、-80.0e8.在VC++6.0编译环境下,下列式中,值不为4的表达式是()P34,double为8字节A、sizeof(unsigned long)B、sizeof(long)C、sizeof(unsigned int)D、sizeof(double)9.设有说明语句:char a=’\123’;则变量a( )一个ascii字符A、包含1个字符B、包含2个字符C、3个字符D、说明不合法10.设x为一数字字符,则其所对应的十进制数值为()。

C++基础练习题1-9章 自测题 题库带答案

C++基础练习题1-9章 自测题 题库带答案

1.概念填空题1.1用编写的程序称为“源程序”。

计算机(能/不能)直接识别源程序,必须将其翻译成二进制代码才能在机器上运行。

一旦编译成功,目标程序就可以反复执行。

1.2 C++的程序由一个或多个组成,其中一定有一个称为主函数的函数。

在组成程序的函数中,它是程序执行的,也是程序运行的。

对函数的描述由“{ }”中的语句序列完成,每个语句以符号结束。

C++程序大小写。

1.3布尔型数值只有两个:,。

在C++的算术运算式中,分别当作,。

1.4字符由括起来,字符串由括起来。

字符只能有个字符,字符串可以有个字符。

空串的表示方法为。

1.5 &&与||表达式按的顺序进行计算,以&&连接的表达式,如果左边的计算结果为,右边的计算就不需要进行了,整个逻辑表达式的结果为。

以||连接的表达式,如果左边的计算结果为,就能得到整个逻辑表达式的结果为。

1.6 >>运算符将一个数右移n位,相当于将该数2n,<<运算数将一个数左移n位,相当于将该数2n。

1.7 前置++、--的优先级于后置++、--。

2.概念填空题1.1用高级语言编写的程序称为“源程序”。

计算机不能(能/不能)直接识别源程序,必须将其翻译成二进制代码才能在机器上运行。

一旦编译成功,目标程序就可以反复执行。

1.2 C++的程序由一个或多个函数组成,其中一定有一个称为主函数的main函数。

在组成程序的函数中,它是程序执行的入口,也是程序运行的结束点。

对函数的描述由“{ }”中的语句序列完成,每个语句以;符号结束。

C++程序区别大小写。

1.3布尔型数值只有两个:true ,false。

在C++的算术运算式中,分别当作1,0。

1.4字符由‘括起来,字符串由“括起来。

字符只能有1个字符,字符串可以有0-多个个字符。

空串的表示方法为NULL 。

1.5 &&与||表达式按优先级的顺序进行计算,以&&连接的表达式,如果左边的计算结果为false,右边的计算就不需要进行了,整个逻辑表达式的结果为false。

(完整版)C教材习题答案(1-8章)

(完整版)C教材习题答案(1-8章)
#include <stdio.h>
main()
{
int score;
char ch;
printf("请输入一个百分制分数:");
scanf("%d",&score);
if(score>100 || score<0){
printf("非法输入!\n");
return 0;
}
switch(score/10) {
#include<math.h>
main(){
float s=0;
int i,j,n,t;
printf("请输入n的值:");
scanf("%d",&n);
for(i=1;i<=n;i++){
t=1;
for(j=1;j<=i;j++)
t*=j;
s+=1.0/t;
}
printf("%.2f\n",s);
}
2.输出100以内所有能被13和17整除的数。
#include<stdio.h>
main(){
int i;
for(i=1;i<=100;i++)
if(i%13==0 || i%17==0)
printf("%4d",i);
}
3整元换零钱问题。把5元兑换成1角,2角,5角的硬币,一共有多少种换法,编写求解此问题。
printf("5角:%d个\t2角:%d个\t1角:%d个\n",i,j,k);
n++;

第1章 c语言概述(习题答案及解析)

第1章 c语言概述(习题答案及解析)

习题1 参考答案一、选择题1.1 C 分析:简单程序设计步骤为:确定数据结构、确定算法、编码、调试、整理文档,不包括安装编译程序,故答案为C选项。

1.2 D 分析:一个算法应该具有以下五个重要的特征:有穷性,确定性,输入,输出以及可行性,故答案选D选项。

1.3 A 分析:编译就是把高级语言变成计算机可以识别的二进制语言,不经过编译的源程序是不能运行的,A选项正确。

算法不一定要包含所有三种基本结构,也可以只包含一种或两种,B选项错误。

结构化程序主要由3种基本控制结构组成,循环结构、选择结构、顺序结构,它们组成的算法结构可以解决任何复杂的问题,C选项错误。

算法的复杂程序不是由操作步骤多少决定的,而是按时间复杂度与空间复杂度来衡量,D选项错误。

1.4 A 分析:计算机只能识别机器语言,不能直接识别由高级语言编写的程序,答案为A选项。

1.5 A 分析:C语言程序必须要定义main()函数,B选项错误;只有同时包含三种基本结构时,程序才是结构化程序,C选项错误;程序中的语法错误在编译时能显现,排除D选项,答案选A。

1.6 A 分析:计算机只能识别机器码,机器码是由二进制构成的,因此只能识别二进制构成的代码程序,不可以直接识别由十六进制代码构成的程序,十六进制的代码必须转为二进制才能在计算机上直接执行。

因此选项A错误。

1.7 A 分析:书写风格良好的程序易读性好,方便团队合作,分模块来完成复杂的程序设计,B选项叙述正确。

但是书写风格与程序执行效率无关,程序执行效率与程序的数据结构有关,由算法的时间复杂度和空间复杂度决定,A选项叙述错误。

C语言程序书写规范中,良好的书写习惯中一般一行上写一条语句,这样方便阅读,但是一行写多条语句是符合C程序编写规则的,C选项叙述正确。

C程序允许将一条较长的语句分写在多行,D选项叙述正确。

叙述中错误的是A选项,故选择A选项。

1.8 A 分析:程序中,注释可以出现在程序的任何位置,B选项错误;注释中间不能嵌套另一个注释,C选项错误;注释内容不影响程序编译,D选项错误,答案为A选项。

c语言分章节试题及答案

c语言分章节试题及答案

c语言分章节试题及答案1. 变量声明- 题目:在C语言中,以下哪个选项是正确的变量声明方式?A. int a = 0;B. int a = 0.0;C. int a = "hello";D. int a = 0, b = 0;- 答案:A和D。

2. 数据类型- 题目:以下哪个选项不是C语言中的基本数据类型?A. intB. floatC. charD. string- 答案:D。

3. 运算符优先级- 题目:在C语言中,以下哪个运算符的优先级最高?A. 乘法B. 加法C. 赋值D. 条件运算符- 答案:A。

4. 函数定义- 题目:以下哪个是正确的C语言函数定义?A. int myFunction(int a, int b) { return a + b; }B. int myFunction(int a, int b) { return a - b; }C. int myFunction(int a, int b) { return a * b; }D. All of the above- 答案:D。

5. 数组初始化- 题目:以下哪个是正确的C语言数组初始化方式?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[5] = {1, 2, 3};C. int arr[5] = {1, 2, 3, 4};D. int arr[5] = {1, 2, 3, 4, 5, 6};- 答案:A。

6. 指针- 题目:以下哪个选项正确地声明了一个指向整数的指针?A. int *ptr;B. int ptr[];C. int *ptr = 0;D. int ptr = 0;- 答案:A和C。

7. 字符串操作- 题目:以下哪个函数用于比较两个字符串是否相等?A. strcat()B. strcmp()C. strcpy()D. strlen()- 答案:B。

8. 条件语句- 题目:以下哪个是C语言中正确的if语句?A. if (x > 10)x = 20;B. if (x > 10)x = 20C. if (x > 10)x = 20;else x = 10;D. All of the above- 答案:A。

C语言第章基本概念练习题ans

C语言第章基本概念练习题ans

C语言第章基本概念练习题a n sDocument serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】第一单元(1-5章)基本概念练习题一、单选选择(直接在正确的选项上打勾,每题)1、下面关于C语言特点的描述,不正确的是( )。

DA、C语言兼有高级语言和低级语言的双重特点,执行效率高B、C语言既可以用来编写应用程序,又可以用来编写系统软件C、C语言是一种结构式模块化程序设计语言D、C语言的可移植性较差2、C语言规定,在一个源程序中,main函数的位置( )。

BA、必须在最开始B、可以任意C、必须在最后D、必须在系统调用的库函数的后面3、下列说法中正确的是( )。

CA、C程序书写时,不区分大小写字母B、C程序书写时,一行只能写一个语句C、C程序书写时,一个语句可分成几行书写D、C程序书写时每行必须有行号4、C语言编译程序的首要工作是( )。

AA、检查C语言程序的语法错误B、检查C语言程序的逻辑错误C、检查程序的完整性D、生成目标文件5、C语言程序经过连接以后生成的文件名的后缀为( )。

CA、 .cB、 .objC、 .exeD、 .cpp6、以下关于算法的说法中,错误的是( )。

DA、一个算法应包含有限个步骤B、在计算机上实现的算法是用来处理数据对象的C、算法的目的是为了求解D、算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现7、算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性之一的是( )。

CA、确定性B、有穷性C、零个或多个输出D、零个或多个输入8、以下不属于结构化程序设计三种基本结构之一的是( )。

BA、顺序B、递归C、循环D、选择9、下列数据中,不合法的C语言实型数据是( )。

CA、0.123B、123e3C、2.1e3.5D、789.010、若变量a、i已正确定义,且i已正确赋值,以下属于合法的C语句是( )。

C语言练习题-ans

C语言练习题-ans

C语⾔练习题-ans1.下⾯程序的输出是#includemain ( ){ int x=1, y=0, a=0, b=0;switch ( x ){ case 1: switch ( y ){ case 0: a++; break;case 1: b++; break;}case 2: a++; b++;break;}printf ("a=%d,b=%d\n", a, b );}A.a=1,b=0B.a=1,b=1C.a=2,b=1D.a=2,b=22. 求取满⾜式的n,正确的语句是____A.for(i=1,s=0;(s=s+i*i)<=1000;n=++i)B.for(i=1,s=0;(s=s+i*i)<=1000;n=i++)C.for(i=1,s=0;(s=s+i*i++)<=1000;n=i)D.for(i=1,s=0;(s=s+i*++i)<=1000;n=i)3已知int i=1;执⾏语句while (i++<4) ;后,变量i的值为A.3C.4D.64.在C语⾔中,字符型数据在内存中以形式存放。

A. 原码B. BCD码C. 反码D. ASCII码5.分析以下程序, 下列说法正确的是。

main(){int x=5,a=0,b=0;if(x=a+b)printf("* * * *\n");elseprintf("# # # #\n");}A. 有语法错,不能通过编译B. 通过编译,但不能连接C. 输出* * * *D. 输出# # # #6.编程题判断⼀个数是否是素数输⼊⼀个整数n,判断n是不是素数,如果是那么给出结论n是素数;如果n不是素数,给出n的分解⽅式。

例如输⼊n=7,输出n是素数;输⼊n=8输出n=4*2或者n=2*4。

#include#includeint primer(int);void part(int,int);int main(void){int n,i,m;printf("enter a number:\n");scanf("%d",&n);printf("%d=%d",n,1);for(i=2;i<=n;i++)if(primer(i)==1)part(n,i);}printf("\n");printf("\n");printf("\n");return 0;}void part(int n,int i) { int j=0;if(n%i==0){while(n%i==0){n=n/i;j++;}printf("*(%d^%d)",i,j); } }int primer(int n){int i,z=0;if(n==2)z=1;else{for(i=2;i{if(n%i!=0){z=1;continue;}else{z=0;break;}}}return z;7.编程题冒泡排序的继续实现。

《C语言数据结构》第1至9章自测题答案大全

《C语言数据结构》第1至9章自测题答案大全

积少成多,争取每天进步一点。

第一章概论自测题答案姓名班级题号一二三四五六总分题分3315982015100得分一、填空题(每空1分共33分)1. 一个计算机系统包括硬件系统和软件系统两大部分2. 一台计算机中全部程序的集合称为这台计算机的软件资源 /(系统)3. 计算机软件可以分为系统软件和应用软件两大类科学计算程序包属于应用软件诊断程序属于系统软件(工具)4. 一种用助忆符号来表示机器指令的操作符和操作数的语言是汇编语言5. 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科6. 数据结构被形式地定义为(DR)其中D是数据元素的有限集合R是D上的关系有限集合7. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容8. 数据结构按逻辑结构可分为两大类它们分别是线性结构和非线性结构9. 线性结构中元素之间存在一对一关系树形结构中元素之间存在一对多关系图形结构中元素之间存在多对多关系10.在线性结构中第一个结点没有前驱结点其余每个结点有且只有 1个前驱结点;最后一个结点没有后续结点其余每个结点有且只有1个后续结点11. 在树形结构中树根结点没有前驱结点其余每个结点有且只有 1 个前驱结点;叶子结点没有后续结点其余每个结点的后续结点数可以任意多个12. 在图形结构中每个结点的前驱结点数和后续结点数可以任意多个13.数据的存储结构可用四种基本的存储方法表示它们分别是顺序、链式、索引和散列14. 数据的运算最常用的有5种它们分别是插入、删除、修改、查找、排序15. 一个算法的效率可分为时间效率和空间效率16. 〖00年省统考〗任何一个C程序都由一个主函数和若干个被调用的其它函数组成17. 【00年省统考题】变量一经说明就确定该变量的取值范围(即存储单元)及确定变量所允许的运算二、单项选择题(每小题1分共15分)( B ) 1. 通常所说的主机是指∶A) CPU B) CPU和内存C) CPU、内存与外存D) CPU、内存与硬盘( C )2. 在计算机内部一切信息的存取、处理和传送的形式是∶A) ACSII码 B) BCD码C)二进制D)十六进制( D )3. 软件与程序的区别是∶A) 程序价格便宜、软件价格昂贵;B) 程序是用户自己编写的而软件是由厂家提供的;C) 程序是用高级语言编写的而软件是由机器语言编写的;D) 软件是程序以及开发、使用和维护所需要的所有文档的总称而程序只是软件的一部分( C )4. 所谓"裸机"是指∶A) 单片机B)单板机C) 不装备任何软件的计算机D) 只装备操作系统的计算机( D )5. 应用软件是指∶A)所有能够使用的软件 B) 能被各应用单位共同使用的某种软件 C)所有微机上都应使用的基本软件 D) 专门为某一应用目的而编制的软件(*A )6. 〖00年省统考〗C语言中的常量可分为整型常量、实型常量、字符型常量及 (枚(A)符号常量(B)长整型常量(C)逻辑常量(D)二进制整数(*C )7. 编译程序的功能是∶A)发现源程序中的语法错误B)改正源程序中的语法错误C)将源程序编译成目标程序 D)将某一高级语言程序翻译成另一种高级语言程序( A )8. 系统软件中最重要的是∶A) 操作系统 B) 语言处理系统 C) 工具软件 D) 数据库管理系统( C )9. 可移植性最好的计算机语言是∶A) 机器语言B)汇编语言C) 高级语言D) 自然语言( B )10. 非线性结构是数据元素之间存在一种:A)一对多关系 B)多对多关系 C)多对一关系 D)一对一关系( C )11. 数据结构中与所使用的计算机无关的是数据的结构;A) 存储 B) 物理 C) 逻辑 D) 物理和存储( C )12. 算法分析的目的是:A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性( A )13. 算法分析的两个主要方面是:A) 空间复杂性和时间复杂性 B) 正确性和简明性C) 可读性和文档性 D) 数据复杂性和程序复杂性( C )14. 计算机算法指的是:A) 计算方法 B) 排序方法 C) 解决问题的有限运算序列 D) 调度方法( B )15. 计算机算法必须具备输入、输出和等5个特性A) 可行性、可移植性和可扩充性 B) 可行性、确定性和有穷性C) 确定性、有穷性和稳定性 D) 易读性、稳定性和安全性三、简答题(每小题3分1.我们知道计算机只能执行机器指令为什么它能运行用汇编语言和高级语言编写的程序?答:靠汇编程序将汇编语言或高级语言翻译转换为目标程序(即机器语言)2.【严题集1.2②】数据结构和数据类型两个概念之间有区别吗?答:简单地说数据结构定义了一组按某些关系结合在一起的数组元素数据类型不仅定义了一组带结构的数据元素而且还在其上定义了一组操作3. 简述线性结构与非线性结构的不同点答:线性结构反映结点间的逻辑关系是一对一的非线性结构反映结点间的逻辑关系是多对多的四、〖00年统考题〗阅读下列C程序段写出相应的执行结果(每小题4分共8分)1. printf("Input x");scanf("%d"&x);if (x<=30)if(x>20) y=x;else if (x>10) y=2*x;if (x>0&&x<30)printf("x=%dy=%d"xy);else printf("输入数据错!");试写出当x分别为188时的执行结果答:运行结果为:x=18y=36x=8y=运行前的值且从x=30开始为数据错五、【严题集1.8④】分析下面各程序段的时间复杂度(每小题5分共20分)六、设有数据逻辑结构S=(DR)试按各小题所给条件画出这些逻辑结构的图示并确定相对于关系R哪些结点是开始结点哪些结点是终端结点?(每小题5分共15分)1. 【严蔚敏习题集P7 1.3②】D={d1d2d3d4} R={(d1d2)(d2d3)(d3d4) }答: d1→d2→d3→d4 d1-无直接前驱是首结点 d4-无直接后继是尾结点2. D={d1d2...d9}R={(d1d2)(d1d3)(d3d4)(d3d6)(d6d8)(d4d5)(d6d7)(d8d9) }答:此图为树形结构 d1-无直接前驱是根结点 d2d5d7d9-无直接后继是叶子结点3. D={d1d2...d9}R={(d1d3)(d1d8)(d2d3)(d2d4)(d2d5)(d3d9)(d5d6)(d8d9)(d9d7)(d4d7)(d4d6)}答:此图为图形结构 d1d2-无直接前驱是开始结点 d6d7-无直接后继是终端结点(2) (3) 第2章自测卷答案姓名班级题号一二三四五六七总分题分1310101071040100得分一、填空(每空1分共13分)1. 【严题集2.2①】在顺序表中插入或删除一个元素需要平均移动表中一半元素具体移动的元素个数与表长和该元素在表中的位置有关2. 线性表中结点的集合是有限的结点间的关系是一对一的3. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时需向后移动 n-i+1 个元素4. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时需向前移动 n-i 个元素5. 在顺序表中访问任意一结点的时间复杂度均为 O(1)因此顺序表也称为随机存取的数据结构6. 【严题集2.2①】顺序表中逻辑上相邻的元素的物理位置必定相邻单链表中逻辑上相邻的元素的物理位置不一定相邻7. 【严题集2.2①】在单链表中除了首元结点外任一结点的存储位置由其直接前驱结点的链域的值指示8.在n个结点的单链表中要删除已知结点*p需找到它的前驱结点的地址其时间复杂度为O(n)二、判断正误(在正确的说法后面打勾反之打叉)(每小题1分共10分)(×)1. 链表的每个结点中都恰好包含一个指针答:错误链表中的结点可含多个指针域分别存放多个指针例如双向链表中的结点可以含有两个指针域分别存放指向其直接前趋和直接后继结点的指针(×)2. 链表的物理存储结构具有同链表一样的顺序错链表的存储结构特点是无序而链表的示意图有序(×)3. 链表的删除算法很简单因为当删除链中某个结点后计算机会自动地将后续的各个单元向前移动错链表的结点不会移动只是指针内容改变(×)4. 线性表的每个结点只能是一个简单类型而链表的每个结点可以是一个复杂类型错混淆了逻辑结构与物理结构链表也是线性表!且即使是顺序表也能存放记录型数据(×)5. 顺序表结构适宜于进行顺序存取而链表适宜于进行随机存取错正好说反了顺序表才适合随机存取链表恰恰适于"顺藤摸瓜"(×)6. 顺序存储方式的优点是存储密度大且插入、删除运算效率高错前一半正确但后一半说法错误那是链式存储的优点顺序存储方式插入、删除运算效率较低在表长为n的顺序表中插入和删除一个数据元素平均需移动表长一半个数的数据元素(×)7. 线性表在物理存储空间中也一定是连续的错线性表有两种存储方式顺序存储和链式存储后者不要求连续存放(×)8. 线性表在顺序存储时逻辑上相邻的元素未必在存储的物理位置次序上相邻错误线性表有两种存储方式在顺序存储时逻辑上相邻的元素在存储的物理位置次序上也相邻(×)9. 顺序存储方式只能用于存储线性结构错误顺序存储方式不仅能用于存储线性结构还可以用来存放非线性结构例如完全二叉树是属于非线性结构但其最佳存储方式是顺序存储方式(后一节介绍)(×)10. 线性表的逻辑顺序与存储顺序总是一致的错理由同7链式存储就无需一致三、单项选择题(每小题1分共10分)( C )1.数据在计算机存储器内表示时物理地址与逻辑地址相同并且是连续的称之为:(A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构( B )2.一个向量第一个元素的存储地址是100每个元素的长度为2则第5个元素的地址是(A)110 (B)108 (C)100 (D)120( A )3. 在n个结点的顺序表中算法的时间复杂度是O(1)的操作是:(A)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)(B)在第i个结点后插入一个新结点(1≤i≤n)(C)删除第i个结点(1≤i≤n)(D)将n个结点从小到大排序( B )4. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变平均要移动个元素(A)8 (B)63.5 (C)63 (D)7( A )5. 链接存储的存储结构所占存储空间:(A)分两部分一部分存放结点值另一部分存放表示结点间关系的指针(B)只有一部分存放结点值(C)只有一部分存储表示结点间关系的指针(D)分两部分一部分存放结点值另一部分存放结点所占单元数( B )6. 链表是一种采用存储结构存储的线性表;(A)顺序(B)链式(C)星式(D)网状( D )7. 线性表若采用链式存储结构时要求内存中可用存储单元的地址:(A)必须是连续的(B)部分地址必须是连续的(C)一定是不连续的(D)连续或不连续都可以( B )8.线性表L在情况下适用于使用链式结构实现(A)需经常修改L中的结点值(B)需不断对L进行删除插入(C)L中含有大量的结点(D)L中结点结构复杂( C )9.单链表的存储密度(A)大于1;(B)等于1;(C)小于1;(D)不能确定( B )10.设a1、a2、a3为3个结点整数P034代表地址则如下的链式存储结构称为P034P0-->a13-->a24-->A3(A)循环链表(B)单链表(C)双向循环链表(D)双向链表四、简答题(每小题5分共10分)1. 【严题集2.3②】试比较顺序存储结构和链式存储结构的优缺点在什么情况下用顺序表比链表好?答:①顺序存储时相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的优点:存储密度大(=1?)存储空间利用率高缺点:插入或删除元素时不方便②链式存储时相邻数据元素可随意存放但所占存储空间分两部分一部分存放结点值另一部分存放表示结点间关系的指针优点:插入或删除元素时很方便使用灵活缺点:存储密度小(<1)存储空间利用率低顺序表适宜于做查找这样的静态操作;链表宜于做插入、删除这样的动态操作若线性表的长度变化不大且其主要操作是查找则采用顺序表;若线性表的长度变化较大且其主要操作是插入、删除操作则采用链表2 .【严题集2.1①】描述以下三个概念的区别:头指针、头结点、首元结点(第一个元素结点)在单链表中设置头结点的作用是什么?答:首元结点是指链表中存储线性表中第一个数据元素a1的结点为了操作方便通常在链表的首元结点之前附设一个结点称为头结点该结点的数据域中不存储线性表的数据元素其作用是为了对链表进行操作时可以对空表、非空表的情况以及对首元结点进行统一处理头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针若链表中附设头结点则不管线性表是否为空表头指针均不为空否则表示空表的链表的头指针为空这三个概念对单链表、双向链表和循环链表均适用是否设置头结点是不同的存储结构表示同一逻辑结构的问题头结点head-->datalink头指针首元结点简而言之头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针;头结点是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息(内放头指针?那还得另配一个头指针!!!)首元素结点是指链表中存储线性表中第一个数据元素a1的结点五、【软考题】线性表具有两种存储方式即顺序方式和链接方式现有一个具有五个元素的线性表L={2317470531}若它以链接方式存储在下列100~119号地址空间中每个结点由数据(占2个字节)和指针(占2个字节)组成如下所示:05U17X23V31Y47Z^^100120其中指针XYZ的值分别为多少?该线性表的首结点起始地址为多少?末结点的起始地址为多少?(10分)答:X= 116 Y= 0 Z= 100 首址= 108 末址= 112六、阅读分析题(10分)【严题集2.10②】指出以下算法中的错误和低效(即费时)之处并将它改写为一个既正确又高效的算法答:错误有两处:①参数不合法的判别条件不完整例如表长为10若从第一位置(i=1)删除10个元素(k=10)要求合理但会被判为非法合法的入口参数条件为(0<i≤a.length)^ (0≤k≤a.length-i)应将if ( i<1 || k<0 || i+k> a.length ) return INFEASIBLE改为:if (!((0<i≤a.length)^ (o≤k≤a.length-i))) return INFEASIBLE 第二个FOR语句中元素前移的次序错误应将for ( j = a.length; j>=i+1; j--) a.elem[j-1] = a.elem[j];改为for (j>=i+1; j = a.length; j++) a.elem[j-1] = a.elem[j];七、编程题(每题10分共40分)1. 【徐士良题集2002年1月省统考题】写出在顺序存储结构下将线性表逆转的算法要求使用最少的附加空间解:输入:长度为n的线性表数组A(1:n)输出:逆转后的长度为n的线性表数组A(1:n)C语言描述如下(其中ET为数据元素的类型):2. 【严题集2.6②】已知L是无表头结点的单链表且P结点既不是首元结点也不是尾元结点请写出在P结点后插入S结点的核心语句序列答:此题答案不唯一但若从已给定序列中挑选则限制颇多(7) Q=P;(11) P=L;(8) while(P->next!=Q)P=P->next;(10) P=Q;(4) S->next=P->next;P->next=S;3. 编写程序将若干整数从键盘输入以单链表形式存储起来然后计算单链表中结点的个数(其中指针P指向该链表的第一个结点)注:统计结点个数是【省统考样题】的要求也是教材P60 4-6计算链表长度的要求编程又简单很容易作为考题解:编写C程序如下(已上机通过):全局变量及函数提前说明:---------------------------------#include<stdio.h>#include<stdlib.h>typedef struct liuyu{int data;struct liuyu*link;}test;liuyu *p*q*r*head;int m=sizeof(test);void main () /*第一步从键盘输入整数不断添加到链表*/{int i;head=(test*)malloc(m); /*m=sizeof(test);*/p=head; i=0;while (i!=-9999){ printf("/ninput an integer [stop by '-9999']:");scanf("%d"&i);p->data=i; /* input data is saved */p->link=(test*)malloc(m); /*m=sizeof(test));*/q=p;p=p->link;}q->link=NULL; /*原先用p->link=NULL似乎太晚!*/p=head; i=0; /*统计链表结点的个数并打印出来*/ while (p->link!=NULL){printf("%d"p->data);p=p->link;i++;}printf("\n node number=%d\n"i-1); /*结点的个数不包括-9999*/}0301陈建武:3.程序中统计结点数应是i个而不是i-1.假设链表表长为ni从0开始则在统计某一结点后 i 加一此时p已指向下一个结点第一结点统计结束i为1p指向第二结点即当p指向尾结点(第n个结点)时i的值为n-1while循环条件不符(指针域为null)退出循环即得统计的结点数为n-1.所以 i 的值就是结点数不必再减一4. 请编写26个字母按特定字母值插入或删除的完整程序可自行选用顺序存储或链表结构答:#include<stdio.h> /*全局变量及函数提前说明:*/ #include<stdlib.h>typedef struct liuyu{char data;struct liuyu*link;}test; liuyu *p*q*r*head;int L; /*元素的个数*/int m=sizeof(test);void build(); /* 主函数中会被调用的函数应当预先说明 */ void display();int insert_char(charchar); /*插入一个字母在第字母Y之前若无字母则加到末尾*/int delet_char(char); /* 删除元素X注意保存X的前趋元素指针! *//*---------------------------------------------------------*/void build() /*字母链表的生成*/{int i;head=(test*)malloc(m); /*m=sizeof(test);*/p=head;for(i=1;i<L;i++){ p->data=i+'a'-1; /* 'a'也可用其ASCII码97来表示 */ p->link=(test*)malloc(m); /*m=sizeof(test));*/p=p->link; }p->data=i+'a'-1;p->link=NULL;}/*---------------------------------------------------------*/void display() /*字母链表的输出*/{p=head;while (p->link!=NULL){ printf("%c"p->data);p=p->link; }printf("%c\n"p->data);}/*---------------------------------------------------------*/int insert_char(char Xchar Y) /*插入一个字母X在某个字母Y之前若找不到Y字母则加到末尾*/{p=head;r=(test*)malloc(m);r->data=X;if(head->data==Y){ head=r;r->link=p; }else{ while((p->data!=Y)&&(p->link!=NULL)) {q=p; p=p->link;} if(p->data==Y) { q->link=r; r->link=p; }else{p->link=r;r->link=NULL;}}L++;return(0);}/*---------------------------------------------------------*/ int delet_char(char X) /* 删除元素X注意保存X的前趋元素指针! */{ p=head;if(head->data==X){head=head->link;free(p);}else{ while((p->data!=X)&&(p->link!=NULL)){q=p;p=p->link;}if(p->data==X){ q->link=p->link;free(p); }else return(-1);}L--;return(0);}/*---------------------------------------------------------*/ void main(void) /*字母线性表的生成和输出*/{ L=26;build();display();printf("insert return value=%d\n"insert_char('L''W'));display();printf("delete return value=%d\n"delet_char('z'));display();}附:屏幕上显示的执行结果是:a b c d e f g h i j k l m n o p q r s t u v w x y zinsert return value=0a b c d 9 e f g h i j k l m n o p q r s t u v w x y z Ldelete return value=0a b c d e f g h i j k l m n o p q r s t u v w x y L0301陈建武修改意见:一. display()函数代码可优化为四行void display() /*字母链表的输出*/{p=head;while (p->link!=NULL)//改为while(p)因为当p指向尾结点时p不为null条件成立循环//printf()然后p被赋值为null此时循环条件不符退出正好.{ printf("%c"p->data);p=p->link; }printf("%c\n"p->data); //用while(p)此行可删}二.对int insert_char(char Xchar Y)若用带头结点的链表代码可减为10行我的程序如下(若参数没有slist p代码要多一行让q指向头指针)void InsertFind(slist pchar insertcharchar insertpos)//字母insertpos前插入字母insertchar{slist ppriornewnode; //newnode新结点pprior为插入位置结点的直接前驱newnode = new liuyu; //为新结点分配内存newnode->data = insertchar; //对结点数据域初始化while(p) //当p指向尾结点时最后一次循环 {pprior = p; //pprior从头指针开始指向p的直接前驱p = p->next; //p从首元结点开始不断前移直至最后p为nullif(p&&(p->data == insertpos)) //当p为null或者结点p的数据域为所要插入的字母break; //则退出循环}newnode->next = pprior->next; //在找到的位置前插入pprior->next = newnode;}对删除结点的操作若有头结点同样可以减少代码由此可见创建一个头结点对简化程序有很大的帮助.上面的观点仅供参考不对之处请指教!第3章栈和队列自测卷答案姓名班级题号一二三四五六总分题分151020202015100得分一、填空题(每空1分共15分)1. 【李春葆】向量、栈和队列都是线性结构可以在向量的任何位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素2. 栈是一种特殊的线性表允许插入和删除运算的一端称为栈顶不允许插入和删除运算的一端称为栈底3. 队列是被限定为只能在表的一端进行插入运算在表的另一端进行删除运算的线性表4. 在一个循环队列中队首指针指向队首元素的前一个位置5. 在具有n个单元的循环队列中队满时共有 n-1 个元素6. 向栈中压入元素的操作是先移动栈顶指针后存入元素7. 从循环队列中删除一个元素时其操作是先移动队首指针后取出元素8. 〖00年统考题〗带表头结点的空循环双向链表的长度等于 0解:二、判断正误(判断下列概念的正确性并作出简要的说明)(每小题1分共10分)(×)1. 线性表的每个结点只能是一个简单类型而链表的每个结点可以是一个复杂类型错线性表是逻辑结构概念可以顺序存储或链式存储与元素数据类型无关(×)2. 在表结构中最常用的是线性表栈和队列不太常用错不一定吧?调用子程序或函数常用CPU中也用队列(√)3. 栈是一种对所有插入、删除操作限于在表的一端进行的线性表是一种后进先出型结构(√)4. 对于不同的使用者一个表结构既可以是栈也可以是队列也可以是线性表正确都是线性逻辑结构栈和队列其实是特殊的线性表对运算的定义略有不同而已(×)5. 栈和链表是两种不同的数据结构错栈是逻辑结构的概念是特殊殊线性表而链表是存储结构概念二者不是同类项(×)6. 栈和队列是一种非线性数据结构错他们都是线性逻辑结构栈和队列其实是特殊的线性表对运算的定义略有不同而已(√)7. 栈和队列的存储方式既可是顺序方式也可是链接方式(√)8. 两个栈共享一片连续内存空间时为提高内存利用率减少溢出机会应把两个栈的栈底分别设在这片内存空间的两端(×)9. 队是一种插入与删除操作分别在表的两端进行的线性表是一种先进后出型结构错后半句不对(×)10. 一个栈的输入序列是12345则栈的输出序列不可能是12345错有可能三、单项选择题(每小题1分共20分)( B )1. 〖00年元月统考题〗栈中元素的进出原则是A.先进先出B.后进先出C.栈空则进D.栈满则出( C )2. 〖李春葆〗若已知一个栈的入栈序列是123...n其输出序列为p1p2p3...pn若p1=n则pi为A.i B.n=i C.n-i+1 D.不确定解释:当p1=n即n是最先出栈的根据栈的原理n必定是最后入栈的那么输入顺序必定是123...n则出栈的序列是n...321( B )3. 〖李春葆〗判定一个栈ST(最多元素为m0)为空的条件是A.ST->top<>0 B.ST->top=0 C.ST->top<>m0 D.ST->top=m0( B )4. 〖李春葆〗判定一个队列QU(最多元素为m0)为满队列的条件是A.QU->rear - QU->front = = m0 B.QU->rear - QU->front -1= =m0C.QU->front = = QU->rear D.QU->front = = QU->rear+1( D )5.数组Q[n]用来表示一个循环队列f为当前队列头元素的前一位置r为队尾元素的位置假定队列中元素的个数小于n计算队列中元素的公式为(A)r-f; (B)(n+f-r)% n; (C)n+r-f; (D)(n+r-f)% n6. 【98初程P71】从供选择的答案中选出应填入下面叙述?内的最确切的解答把相应编号写在答卷的对应栏内设有4个数据元素a1、a2、a3和a4对他们分别进行栈操作或队操作在进栈或进队操作时按a1、a2、a3、a4次序每次进入一个元素假设栈或队的初始状态都是空现要进行的栈操作是进栈两次出栈一次再进栈两次出栈一次;这时第一次出栈得到的元素是 A第二次出栈得到的元素是 B 是;类似地考虑对这四个数据元素进行的队操作是进队两次出队一次再进队两次出队一次;这时第一次出队得到的元素是 C第二次出队得到的元素是 D最后在栈中或队中的元素还有 E 个供选择的答案:A~D:①a1 ②a2 ③ a3 ④a4E:①1 ②2 ③ 3 ④ 0答:ABCDE=241227. 【94初程P75】从供选择的答案中选出应填入下面叙述?内的最确切的解答把相应编号写在答卷的对应栏内栈是一种线性表它的特点是 A设用一维数组A[1...n]来表示一个栈A[n]为栈底用整型变量T指示当前栈顶位置A[T]为栈顶元素往栈中推入(PUSH)一个新元素时变量T的值 B ;从栈中弹出(POP)一个元素时变量T的值 C设栈空时有输入序列abc经过PUSHPOPPUSHPUSHPOP操作后从栈中弹出的元素的序列是 D变量T的值是 E供选择的答案:A:①先进先出②后进先出③进优于出④出优于进⑤随机进出BC:①加1 ②减1 ③不变④清0 ⑤加2 ⑥减2 D:① ac ③ca ④ba ⑤ cb ⑥ acE:① n+1 ②n+2 ③ n ④ n-1 ⑤ n-2答案:ABCDE=22164注意向地址的高端生长称为向上生成堆栈;向地址低端生长叫向下生成堆栈本题中底部为n向地址的低端递减生成称为向下生成堆栈8. 【91初程P77】从供选择的答案中选出应填入下面叙述?内的最确切的解答把相应编号写在答卷的对应栏内在做进栈运算时应先判别栈是否 A ;在做退栈运算时应先判别栈是否 B当栈中元素为n个做进栈运算时发生上溢则说明该栈的最大容量为 C为了增加内存空间的利用率和减少溢出的可能性由两个栈共享一片连续的内存空间时应将两栈的 D 分别设在这片内存空间的两端这样只有当 E 时才产生上溢供选择的答案:AB:①空②满③上溢④下溢C:①n-1 ② n ③ n+1 ④ n/2D:①长度②深度③栈顶④栈底E:①两个栈的栈顶同时到达栈空间的中心点②其中一个栈的栈顶到达栈空间的中心点。

C语言基础知识练习题

C语言基础知识练习题

D)(x>=1) | | (x<=10) && (x>=200) | | (x<=210)
3.C语言对嵌套if语句的规定是:else总是与

A)其之前最近的if配对
B)第一个if配对
C)缩进位置相同的if配对
D)其之前最近的且尚未配对的if配对
4.设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b) && (n=c>d)后n的
D)-1023.012, -1023.012
2.对于下述语句,若将10赋给变量k1和k3,将20赋给变量k2和k4,则
应按 方式输入数据。
int k1,k2,k3,k4;
scanf(“%d%d”,&k1,&k2);
scanf(“%d,%d”,&k3,&k4);
A)1020↙ B)10 20↙ C)10,20↙ D)10 20↙
达式。【 】 6.在C程序的表达式中,为了明确表达式的运算次序,常使用括 号“()”。【 】 7.%运算符要求运算数必须是整数。【 】 8.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整 型数。【 】 9.在C程序中,逗号运算符的优先级最低。【 】 10.C语言不允许混合类型数据间进行运算。【 】
D)24
5.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和
B,当从第一列开始输入数据时,正确的输入方式是

int a1,a2; char c1,c2;
scanf(“%d%d”,&a1,&a2);
scanf(“%c%c”,&c1,&c2);

c语言全部章节习题答案

c语言全部章节习题答案

c语言全部章节习题答案C语言是一门广泛应用于计算机编程的高级编程语言。

它的简洁和强大使得它成为了许多程序员的首选语言。

然而,学习一门新的编程语言并不总是容易的,特别是对于初学者来说。

为了帮助那些正在学习C语言的人们,本文将提供C语言全部章节习题的答案,以期为读者提供一些指导和帮助。

在学习C语言时,习题是巩固所学知识的重要方式。

通过解决习题,学生可以加深对C语言的理解,并提高他们的编程技能。

然而,有时候习题的解答并不容易找到,特别是对于初学者来说。

因此,本文将提供C语言教材中的全部章节习题的答案,以供读者参考。

在第一章中,我们学习了C语言的基本概念和语法。

习题主要涉及变量的声明和赋值,以及简单的算术运算。

以下是第一章习题的答案:1. 声明一个整型变量x,并将其赋值为10。

答案:int x = 10;2. 声明一个字符型变量ch,并将其赋值为'A'。

答案:char ch = 'A';3. 声明两个整型变量a和b,并将其相加的结果赋值给变量c。

答案:int a = 5;int b = 3;int c = a + b;第二章主要介绍了C语言中的控制结构,如条件语句和循环语句。

以下是第二章习题的答案:1. 编写一个程序,判断一个整数是否为偶数。

如果是偶数,输出"Even",否则输出"Odd"。

答案:#include <stdio.h>int main() {int num;printf("Enter an integer: ");scanf("%d", &num);if(num % 2 == 0) {printf("Even");} else {printf("Odd");}return 0;}2. 编写一个程序,计算1到100之间所有偶数的和。

c语言第九章题库及详解答案

c语言第九章题库及详解答案

c语言第九章题库及详解答案C语言第九章题库及详解答案一、选择题1. 下列哪个选项是C语言中的关键字?- A. `int`- B. `float`- C. `double`- D. `string`答案:A2. 在C语言中,哪个运算符用于计算两个数的乘积?- A. `+`- B. `-`- C. `*`- D. `/`答案:C3. 以下哪个语句是正确的C语言数组声明?- A. `int array[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};` - B. `int [10] array = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};` - C. `int array[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};`- D. 以上都是答案:D二、填空题1. 在C语言中,用于定义函数的关键字是______。

答案:void 或其他返回类型(根据函数定义)2. 以下代码段中,`printf`函数的返回类型是______。

```cint main() {printf("Hello, World!\n");return 0;}```答案:void三、简答题1. 请简述C语言中指针和引用的区别。

答案:在C语言中,指针是一个变量,它存储了另一个变量的内存地址。

指针可以被重新赋值为其他地址,并且可以通过指针来修改它所指向的变量的值。

而引用在C语言中并不存在,这是C++中的一个概念,它是一个别名,引用必须在定义时被初始化,并且不能被重新赋值为另一个变量的别名。

2. 解释C语言中的递归函数是如何工作的。

答案:递归函数是在其定义中调用自身的函数。

它通常用于解决可以被分解为相似子问题的问题。

递归函数工作时,首先检查是否有基本情况(base case),如果没有达到基本情况,它会进入递归调用,每次调用都会处理问题的一个更小的部分,直到达到基本情况,然后逐层返回结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一单元(1-5章)基本概念练习题一、单选选择(直接在正确的选项上打勾,每题)1、下面关于C语言特点的描述,不正确的是( )。

DA、C语言兼有高级语言和低级语言的双重特点,执行效率高B、C语言既可以用来编写应用程序,又可以用来编写系统软件C、C语言是一种结构式模块化程序设计语言D、C语言的可移植性较差2、C语言规定,在一个源程序中,main函数的位置( )。

BA、必须在最开始B、可以任意C、必须在最后D、必须在系统调用的库函数的后面3、下列说法中正确的是( )。

CA、C程序书写时,不区分大小写字母B、C程序书写时,一行只能写一个语句C、C程序书写时,一个语句可分成几行书写D、C程序书写时每行必须有行号4、C语言编译程序的首要工作是( )。

AA、检查C语言程序的语法错误B、检查C语言程序的逻辑错误C、检查程序的完整性D、生成目标文件5、C语言程序经过连接以后生成的文件名的后缀为( )。

CA、.cB、.objC、.exeD、.cpp6、以下关于算法的说法中,错误的是( )。

DA、一个算法应包含有限个步骤B、在计算机上实现的算法是用来处理数据对象的C、算法的目的是为了求解D、算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现7、算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性之一的是( )。

CA、确定性B、有穷性C、零个或多个输出D、零个或多个输入8、以下不属于结构化程序设计三种基本结构之一的是( )。

BA、顺序B、递归C、循环D、选择9、下列数据中,不合法的C语言实型数据是( )。

CA、0.123B、123e3C、2.1e3.5D、789.010、若变量a、i已正确定义,且i已正确赋值,以下属于合法的C语句是( )。

A、a==1B、++i;C、a=a++=5;D、a=int(i);11、已有定义int a=6; 则执行语句a+=a-=a*a;后,a的值为( )。

DA、36B、0C、-24D、-6012、若有以下程序段,其输出结果是( )。

Bint a = 0, b = 0, c = 0;c = ( a -= a - 5), (a -= 3,++b);printf(“%d,%d,%d\n”,a, b, c);A、0,0,-10B、2,1,5C、-10,-3,-10D、3,3,-1013、有以下定义:int i = 10, j = 1; 执行语句printf("%d,%d\n",i--, ++j); 后输出结果是( )。

BA、9,2B、10,2C、9,1D、10,114、字符串"\t\"\065\xff\n"的长度为( )。

AA、5B、14C、8D、输出项不合法,无正常输出15、已有定义:char c;执行赋值语句c=('z'-'a')/2+'A';后,变量c的值为( )。

AA、MB、NC、OD、Q16、以下4个选项中,不能看做一条语句的是( )。

DA、;B、a=5,b=2.5,c=3.6;C、if(a<5);D、if(b!=5)x=2;y=6;17、设a、b和c都是int变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是( )。

DA、a&&bB、a<=bC、a||b+c&&b-cD、!((a<b)&&!c||1)18、若有定义语句int a, b;double x;则下列选项中没有错误的是( )。

CA、switch(x%2)B、switch((int)x/2.0){ case 0: a++; break; { case 0: a++; break;case 1: b++; break; case 1: b++; break;default : a++; b++; default : a++; b++;} }C、switch((int)x%2)D、switch((int)(x)%2){ case 0: a++; break; { case 0.0: a++; break;case 1: b++; break; case 1.0: b++; break;default : a++; b++; default : a++; b++;} }19、以下程序段的输出结果是( )。

Dmain(){ int x,y,z;x = 0; y = 2; z = 3;switch(x){ case 0: switch( y == 2){ case 1: printf("*"); break;case 2: printf("%"); break;}case 1: switch( z ){ case 1: printf("$");case 2: printf("*"); break;default : printf("#");}}}A、*B、%C、$*D、*#20、以下程序的输出结果是( )。

Cmain(){ int a=45,b=40,c=50,d;d=a>=30?b:c;switch(d){ case 30 : printf("%d",a);case 40 : printf("%d",b);case 50 : printf("%d",c);break;default : printf("#");}}A、304050#B、304050C、4050D、#21、以下程序的输出结果是( )。

Bmain(){ int a, b, c, x=35;a =b =c = 0; x = 35;if(!a)x--;else if(b) ;if(c)x = 3;elsex = 4;printf("%d\n",x);}A、35B、4C、3D、3422、当c的值不为0时,能正确将c的值赋给变量a和b的选项是( )。

CA、c=b=aB、(a=c)||(b=c)C、(a=c)&&(b=c)D、a=c=b23、若变量已定义为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是( )。

BA、10<回车>22<回车>33<回车>B、10.0,22.0,33.0<回车>C、10.0<空格>22.0 <空格>33.0<回车>D、10<Tab> 22<Tab>33<回车>24、下面程序段的输出结果是( )。

Aint x=1,y=10;if( x=y ) printf("AAA");else printf("BBB");A、AAAB、BBBC、AAABBBD、不确定25、下面程序段的输出结果是( )。

Afor (x=9 ;x>0;x--)if (x%3!=0){ printf("%d",--x);continue;}A、741B、852C、963D、87542126、对以下循环:for(a=0,b=0;(b!=123)&&(a<=4);a++);说法正确的是( )。

DA、无限循环B、循环次数不定C、执行4次D、执行5次27、在下列程序中,while循环的循环次数是( ) 。

Dmain( ){ int i=0;while(i<10){ if(i<1) continue;if(i==5) break;i++;}......}A、1B、10C、6D、死循环、不能确定次数28、以下程序的输出结果是( )。

Bmain(){ int i=0,a=0;while(i<20){ for(;;){ if((i%10)= =0)break;else i--;}i+=11;a+=i;}printf("%d\n",a);}A、21B、32C、33D、1129、当输入为"quert?"时,下面程序的执行结果是( )。

Cmain(){ while(putchar(getchar())!='?'); }A、quertB、RvfsuC、quert?D、rvfsu?30、以下能正确计算1×2×3×…×10的程序段是( )。

A、do{i=1;s=1; s=s*i; i++; }while(i<=10);B、do{i=1;s=0; s=s*i; i++; }while(i<=10);C、i=1;s=1;do{s=s*i; i++; }while(i<=10);D、i=1;s=0;do{s=s*i; i++; }while(i<=10);二、绘制NS算法流程图(1)输入10个数,求其中的最大值。

(2) 输入2个数,求它们的最大公约数。

第6章-数组基本概念练习题1、在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。

A、floatB、intC、doubleD、任何类型答案:B2、以下对一维整型数组a的正确定义是( )。

A、int a(10);B、int n=10,a[n];C、int n; scanf(“%d”,&n); int a[n];D、#define SIZE 10int a[SIZE];答案:D3、以下能对一维数组a进行正确初始化的语句是( )。

A、int a[10]=(0,0,0,0,0);B、int a[10]={ };C、int a[]={0};D、int a[10]= "abcdefg"; 答案:C4、不能给数组的首元素赋值的语句是( )。

A、int a[2]={1};B、int a[2]={1*2};C、int a[2];scanf (“%d”,a);D、int a[2];a[1]=1; 答案:D5、下面程序的运行结果是( )。

main(){ int a[6],i;for(i=1;i<6;i++){ a[i]=9*(i-2+4*(i>3))%5; printf("%2d",a[i]); }}A、-4 0 4 0 4B、-4 0 4 0 3C、-4 0 4 4 3D、-4 0 4 4 0答案:C6、下列定义正确的是( )。

相关文档
最新文档