计算机二级c语言笔试题库及答案_第1页
计算机二级c语言笔试题库及答案_第2页
计算机二级c语言笔试题库及答案_第3页
计算机二级c语言笔试题库及答案_第4页
计算机二级c语言笔试题库及答案_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机二级c语言笔试题库及答案计算机二级C语言笔试题库及答案一、选择题(30分,30题,每题1分)1.在C语言中,下列哪个是合法的标识符?A.2variableB.variable-nameC._variableD.int答案:【C】解析:C语言标识符命名规则:必须以字母或下划线开头,后面可以跟字母、数字或下划线。选项A以数字开头不合法;选项B包含连字符不合法;选项D是关键字不合法;只有选项C符合标识符命名规则。2.下列哪个不是C语言的基本数据类型?A.intB.floatC.charD.string答案:【D】解析:C语言的基本数据类型包括整型(int)、浮点型(float/double)、字符型(char)等,但没有string类型,字符串是通过字符数组实现的。选项A、B、C都是基本数据类型,而D不是。3.下列关于C语言中指针的描述,错误的是?A.指针是一种变量,用来存储内存地址B.指针可以指向任何数据类型的变量C.指针运算包括加、减、比较等D.指针的大小与它指向的数据类型有关答案:【D】解析:指针的大小取决于系统的位数(32位系统为4字节,64位系统为8字节),与它指向的数据类型无关。选项A、B、C都是正确的描述,只有D是错误的。4.下列哪个运算符的优先级最高?A.+B.C.=D.++答案:【D】解析:C语言运算符优先级从高到低为:单目运算符(如++、--)>算术运算符(、/、%)>关系运算符>逻辑运算符>赋值运算符。因此++的优先级最高。5.在C语言中,下列哪个是正确的for循环语句?A.for(i=0;i<10;i++);B.for(i=0;i<10;i++)C.for(i=0;i<10;i++);D.for(i=0;i<10;i++);答案:【B】解析:for循环的语法格式为:for(初始化表达式;条件表达式;增量表达式)循环体语句。循环体语句如果只有一条,可以省略大括号,但分号不能省略。选项A和C缺少循环体语句,选项D多了一个分号,只有B是正确的。6.在C语言中,下列哪个函数用于从标准输入设备读取一个字符?A.printf()B.scanf()C.getchar()D.puts()答案:【C】解析:getchar()函数用于从标准输入设备(通常是键盘)读取一个字符;printf()用于格式化输出;scanf()用于格式化输入;puts()用于输出字符串并换行。因此选项C是正确的。7.下列关于C语言中数组的描述,错误的是?A.数组元素在内存中是连续存储的B.数组的大小必须在编译时确定C.数组可以作为函数参数传递D.数组名表示数组的首地址答案:【B】解析:C语言中,数组的大小可以是常量表达式,也可以是变量(使用动态内存分配)。选项A、C、D都是正确的,只有B是错误的。8.在C语言中,下列哪个关键字用于定义结构体类型?A.structB.unionC.enumD.typedef答案:【A】解析:struct关键字用于定义结构体类型;union用于定义联合体;enum用于定义枚举类型;typedef用于类型定义。因此选项A是正确的。9.下列哪个函数用于计算字符串的长度?A.strlen()B.strcpy()C.strcat()D.strcmp()答案:【A】解析:strlen()函数用于计算字符串的长度(不包括结束符'\0');strcpy()用于字符串复制;strcat()用于字符串连接;strcmp()用于字符串比较。因此选项A是正确的。10.在C语言中,下列哪个是正确的文件打开模式?A."r+"B."w+"C."a+"D.以上都是答案:【D】解析:"r+"表示读写打开一个文本文件;"w+"表示读写创建一个新的文本文件;"a+"表示读写打开一个文本文件,文件指针在文件末。这些都是有效的文件打开模式,因此选项D是正确的。11.下列哪个是C语言中的关键字?A.includeB.defineC.sizeofD.main答案:【C】解析:include和define是预处理指令,不是关键字;main是函数名,不是关键字;sizeof是C语言的关键字,用于获取数据类型或变量的大小。因此选项C是正确的。12.在C语言中,下列哪个不是有效的赋值语句?A.a=b+c;B.a=b=c;C.a=b,c;D.a=(b=c);答案:【C】解析:赋值语句的左侧必须是一个可赋值的表达式(变量或数组元素等)。选项C中,a=b是有效的赋值,但逗号后的c单独存在,没有左侧表达式,因此不是有效的赋值语句。其他选项都是有效的。13.下列关于C语言中函数的描述,错误的是?A.函数可以有返回值,也可以没有返回值B.函数可以没有参数,也可以有多个参数C.函数可以调用自己,即递归调用D.函数必须在调用前定义答案:【D】解析:在C语言中,函数可以在调用前定义,也可以在调用后定义,但需要在调用前进行声明。选项A、B、C都是正确的,只有D是错误的。14.在C语言中,下列哪个运算符用于取地址?A.B.&C.%D.$答案:【B】解析:&运算符用于取变量的地址;运算符用于指针解引用;%是取余运算符;$不是C语言的运算符。因此选项B是正确的。15.下列哪个是C语言中的逻辑运算符?A.&&B.||C.!D.以上都是答案:【D】解析:&&是逻辑与运算符;||是逻辑或运算符;!是逻辑非运算符。这些都是C语言中的逻辑运算符,因此选项D是正确的。16.在C语言中,下列哪个是正确的条件语句?A.if(x>0)printf("positive");B.ifx>0thenprintf("positive");C.if(x>0){printf("positive");}D.以上都是答案:【C】解析:if语句的语法格式为:if(条件表达式)语句。如果语句有多条,需要用大括号括起来。选项A缺少大括号,虽然语法正确但不规范;选项B的语法错误;选项C是正确的。因此选项C是最佳答案。17.下列哪个函数用于动态分配内存?A.malloc()B.free()C.calloc()D.以上都是答案:【D】解析:malloc()用于分配指定字节数的内存;free()用于释放已分配的内存;calloc()用于分配并初始化内存。这些都是动态内存管理相关的函数,因此选项D是正确的。18.在C语言中,下列哪个是正确的switch语句?A.switch(x){case1:printf("one");break;}B.switch(x){case1:printf("one");}C.switch(x){case1:printf("one");break;default:printf("other");}D.以上都是答案:【D】解析:switch语句的语法格式为:switch(表达式){case常量表达式1:语句序列1;[break;]case常量表达式2:语句序列2;[break;]...default:语句序列;}。选项A、B、C都符合语法规则,因此选项D是正确的。19.下列哪个是C语言中的循环语句?A.forB.whileC.do-whileD.以上都是答案:【D】解析:for、while和do-while都是C语言中的循环语句,因此选项D是正确的。20.在C语言中,下列哪个是正确的宏定义?A.definePI3.14159B.definePI=3.14159C.definePI3.14159;D.definePI=3.14159;答案:【A】解析:宏定义的语法格式为:define宏名宏体。选项A是正确的宏定义;选项B、C、D都包含了额外的符号,不符合宏定义的语法规则。21.下列哪个函数用于关闭文件?A.fopen()B.fclose()C.feof()D.rewind()答案:【B】解析:fopen()用于打开文件;fclose()用于关闭文件;feof()用于检测文件结束标志;rewind()用于重置文件指针。因此选项B是正确的。22.在C语言中,下列哪个是正确的位运算符?A.&B.|C.^D.以上都是答案:【D】解析:&是按位与运算符;|是按位或运算符;^是按位异或运算符。这些都是C语言中的位运算符,因此选项D是正确的。23.下列哪个是C语言中的关系运算符?A.==B.!=C.>=D.以上都是答案:【D】解析:==是等于运算符;!=是不等于运算符;>=是大于等于运算符。这些都是C语言中的关系运算符,因此选项D是正确的。24.在C语言中,下列哪个是正确的条件运算符?A.?:B.if-elseC.switchD.case答案:【A】解析:?:是条件运算符,也称为三元运算符;if-else是条件语句;switch和case是多分支选择语句的一部分。因此选项A是正确的。25.下列哪个函数用于将字符串转换为浮点数?A.atoi()B.atof()C.atol()D.itoa()答案:【B】解析:atoi()用于将字符串转换为整数;atof()用于将字符串转换为浮点数;atol()用于将字符串转换为长整数;itoa()用于将整数转换为字符串。因此选项B是正确的。26.在C语言中,下列哪个是正确的数组声明?A.intarr[5];B.intarr[];C.intarr[5]={1,2,3,4,5,6};D.intarr={1,2,3,4,5};答案:【A】解析:数组声明必须指定大小(除非是作为函数参数);初始化列表中的元素个数不能超过数组大小;数组名不能直接赋值。因此只有选项A是正确的。27.下列哪个函数用于计算数的绝对值?A.abs()B.fabs()C.labs()D.以上都是答案:【D】解析:abs()用于计算整数的绝对值;fabs()用于计算浮点数的绝对值;labs()用于计算长整数的绝对值。这些都是计算绝对值的函数,因此选项D是正确的。28.在C语言中,下列哪个是正确的指针声明?A.intptr;B.intptr;C.intptr;D.以上都是答案:【D】解析:在C语言中,指针声明的格式可以是intptr;、intptr;或intptr;,都是合法的。星号可以靠近类型名,也可以靠近变量名,还可以在中间有空格。因此选项D是正确的。29.下列哪个是C语言中的标准输入输出头文件?A.stdio.hB.stdlib.hC.string.hD.math.h答案:【A】解析:stdio.h是标准输入输出头文件;stdlib.h是标准库头文件;string.h是字符串处理头文件;math.h是数学函数头文件。因此选项A是正确的。30.在C语言中,下列哪个是正确的结构体声明?A.structstudent{intid;charname[20];};B.structstudent{intid;charname[20]}C.structstudent{intid;charname[20];}D.structstudent{intid;charname[20];}student;答案:【A】解析:结构体声明的语法格式为:struct结构体名{成员列表;};。选项B缺少分号;选项C缺少分号;选项D在声明结构体的同时定义了一个变量,虽然语法正确但不是单纯的结构体声明。因此选项A是正确的结构体声明。二、填空题(20分,10题,每题2分)1.在C语言中,用于表示字符串结束的特殊字符是______。答案:【\0】解析:\0是空字符,在C语言中用作字符串的结束标志。当字符串处理函数遇到\0时,会认为字符串已经结束。这是C语言字符串处理的基本概念,也是初学者容易忽略的重要知识点。2.C语言中,用于定义常量的关键字是______。答案:【const】解析:const关键字用于定义常量,表示该变量的值在程序运行期间不能被修改。使用const可以提高代码的安全性,防止意外修改重要数据。例如:constintMAX=100;定义了一个整型常量MAX。3.在C语言中,用于获取变量地址的运算符是______。答案【&】解析:&运算符称为取地址运算符,用于获取变量在内存中的地址。例如:inta=10;intp=&a;定义了一个指针p,指向变量a的地址。这是指针操作的基础,也是理解C语言内存管理的关键。4.C语言中,用于动态分配内存的函数是______。答案:【malloc】解析:malloc函数用于动态分配内存,其原型为voidmalloc(size_tsize),参数size是要分配的字节数,返回值为分配内存的起始地址。使用malloc分配的内存需要手动释放,否则会导致内存泄漏。例如:intarr=(int)malloc(10sizeof(int));分配了一个包含10个整数的数组。5.在C语言中,用于打开文件的标准函数是______。答案:【fopen】解析:fopen函数用于打开文件,其原型为FILEfopen(constcharfilename,constcharmode),参数filename是文件名,mode是打开模式(如"r"表示只读,"w"表示只写等)。函数返回一个FILE指针,用于后续的文件操作。例如:FILEfp=fopen("data.txt","r");打开一个名为data.txt的文件用于读取。6.C语言中,用于计算字符串长度的函数是______。答案:【strlen】解析:strlen函数用于计算字符串的长度,其原型为size_tstrlen(constcharstr),参数str是要计算长度的字符串,返回值为字符串中字符的个数(不包括结束符\0)。例如:intlen=strlen("Hello");计算结果为5。使用strlen时要注意不要越界访问数组。7.在C语言中,用于将字符串转换为整数的函数是______。答案:【atoi】解析:atoi函数用于将字符串转换为整数,其原型为intatoi(constcharstr),参数str是要转换的字符串,返回值为转换后的整数值。例如:intnum=atoi("123");转换结果为整数123。如果字符串不能转换为有效的整数,atoi的行为是未定义的,因此在实际应用中应该使用更安全的函数如strtol。8.C语言中,用于定义结构体的关键字是______。答案:【struct】解析:struct关键字用于定义结构体,结构体是一种复合数据类型,可以包含不同类型的成员。例如:structPoint{intx;inty;};定义了一个表示点的结构体。结构体可以用于组织相关数据,提高代码的可读性和可维护性。9.在C语言中,用于执行循环语句的关键字是______。答案:【for】解析:for关键字用于定义for循环,其语法格式为:for(初始化表达式;条件表达式;增量表达式)循环体语句。for循环通常用于已知循环次数的场景。例如:for(inti=0;i<10;i++){printf("%d",i);}会输出0到9的数字。需要注意的是,for循环的三个部分都是可选的,但分号不能省略。10.C语言中,用于定义枚举类型的关键字是______。答案:【enum】解析:enum关键字用于定义枚举类型,枚举是一种命名的整数常量集合。例如:enumWeekday{MON,TUE,WED,THU,FRI,SAT,SUN};定义了一周中的每一天。枚举常量默认从0开始递增,但也可以显式指定值。枚举可以提高代码的可读性,使用有意义的名称代替魔术数字。三、判断题(10分,10题,每题1分)1.在C语言中,数组的大小可以在运行时确定。答案:【正确】解析:在C语言中,静态数组的大小必须在编译时确定,但可以使用动态内存分配在运行时确定数组大小。例如:intsize=10;intarr=(int)malloc(sizesizeof(int));这样就在运行时确定了一个大小为10的数组。这是C语言灵活性的体现,但需要注意内存管理。2.C语言中,函数可以有多个返回值。答案:【错误】解析:在C语言中,一个函数只能有一个返回值,但可以通过指针或结构体等方式实现类似多个返回值的效果。例如:voidswap(inta,intb){inttemp=a;a=b;b=temp;}通过指针参数交换了两个变量的值。初学者容易混淆返回值和参数传递的概念。3.在C语言中,switch语句的条件表达式可以是浮点数。答案:【错误】解析:switch语句的条件表达式必须是整数类型或枚举类型,不能是浮点数或其他类型。这是因为switch语句使用跳转表实现,而跳转表的索引必须是整数。如果需要基于浮点数的分支判断,应该使用if-else语句。这是C语言的一个语法限制,容易让初学者困惑。4.C语言中,指针的大小取决于它指向的数据类型。答案:【错误】解析:指针的大小取决于系统的位数(32位系统为4字节,64位系统为8字节),与它指向的数据类型无关。例如:intp1;charp2;doublep3;在32位系统上,p1、p2和p3的大小都是4字节。理解这一点对于指针运算和内存管理非常重要。5.在C语言中,字符串字面量可以修改。答案:【错误】解析:在C语言中,字符串字面量存储在只读内存区域,尝试修改字符串字面量会导致未定义行为。例如:charstr="hello";str[0]='H';这种行为是未定义的,可能导致程序崩溃。正确的做法是使用字符数组:charstr[]="hello";str[0]='H';这是初学者常见的错误。6.C语言中,函数参数的传递方式只有值传递一种。答案【错误】解析:虽然C语言中函数参数默认是值传递,但可以通过指针实现引用传递的效果。例如:voidincrement(intp){(p)++;}调用时increment(&x),可以修改x的值。这是C语言中实现"引用传递"的常用技巧,也是理解指针应用的关键。7.在C语言中,break语句只能用于循环和switch语句。答案【正确】解析:在C语言中,break语句确实只能用于循环(for、while、do-while)和switch语句,用于跳出当前的控制结构。break不能单独使用,也不能用于if语句。这是C语言的语法规则,理解break的适用范围对于程序流程控制很重要。8.C语言中,全局变量的作用域是整个程序。答案【正确】解析:全局变量在所有函数外部定义,其作用域是从定义点到程序结束。全局变量可以在程序的任何地方被访问,但应谨慎使用,因为全局变量可能导致程序难以维护和理解。这是C语言变量作用域的基本规则,也是程序设计中的重要概念。9.在C语言中,递归函数必须有终止条件。答案【正确】解析:递归函数必须有终止条件,否则会导致无限递归,最终引发栈溢出错误。例如:intfactorial(intn){if(n==0)return1;elsereturnnfactorial(n-1);}当n为0时返回1,这是终止条件。这是递归算法的基本要求,也是初学者容易忽略的重要点。10.C语言中,文件指针可以随机定位。答案【正确】解析:C语言提供了fseek函数用于随机定位文件指针,其原型为intfseek(FILEstream,longoffset,intwhence),参数offset是偏移量,whence是定位基准(SEEK_SET、SEEK_CUR或SEEK_END)。例如:fseek(fp,0,SEEK_SET);将文件指针定位到文件开头。这是文件操作的重要功能,可以实现随机访问文件。四、简答题(15分,3题,每题5分)1.简述C语言中指针和数组的关系。答案:【在C语言中,数组和指针有密切的关系。数组名表示数组的首地址,即第一个元素的地址。例如,intarr[5];intp=arr;将指针p指向数组arr的首元素。指针可以用于遍历数组,如for(p=arr;p<arr+5;p++){p=0;}将数组所有元素置0。数组作为函数参数传递时,实际上传递的是数组首地址,因此函数内部可以通过指针修改数组元素。然而,数组名和指针不完全相同,数组名是常量指针,不能修改,而指针变量可以指向不同的地址。理解指针和数组的关系对于C语言编程至关重要,也是许多高级概念的基础。】解析:指针和数组的关系是C语言中的核心概念。数组名表示数组的首地址,因此可以直接赋值给指针变量。指针可以用于遍历数组,通过指针运算可以访问数组的不同元素。数组作为函数参数传递时,实际上传递的是数组首地址,因此函数内部可以通过指针修改数组元素。然而,数组名是常量指针,不能修改,而指针变量可以指向不同的地址。理解这一点对于避免数组越界访问和正确使用指针非常重要。易错警示:初学者常混淆数组名和指针的概念,认为数组名就是指针,但实际上数组名是常量指针,不能进行++等运算。2.简述C语言中结构体和联合体的区别。答案:【结构体(struct)和联合体(union)都是C语言中复合数据类型,但有以下区别:1)内存分配方式:结构体成员各自分配独立的内存空间,结构体大小为所有成员大小之和;联合体所有成员共享同一块内存空间,联合体大小为最大成员的大小。2)数据存储:结构体可以同时存储多个成员的值;联合体同一时间只能存储一个成员的值,修改一个成员会影响其他成员。3)适用场景:结构体用于表示多个不同类型的数据集合,如表示学生信息;联合体用于表示同一数据的不同形式,如表示不同类型的数据。4)内存效率:结构体占用较多内存,但数据独立性高;联合体节省内存,但数据间可能相互干扰。例如:struct{inta;charb;}s;和union{inta;charb;}u;前者占用5字节,后者占用4字节。】解析:结构体和联合体都是C语言中用于组织不同类型数据的复合数据类型,但它们的内存分配方式和数据存储机制有本质区别。结构体为每个成员分配独立的内存空间,因此结构体的大小是所有成员大小的总和;而联合体所有成员共享同一块内存空间,联合体的大小是其最大成员的大小。这意味着结构体可以同时存储多个成员的值,而联合体同一时间只能存储一个成员的值,修改一个成员会影响其他成员。结构体适用于表示多个不同类型的数据集合,如学生信息;联合体适用于表示同一数据的不同形式,如不同类型的数据。理解两者的区别对于正确使用它们至关重要。易错警示:初学者容易混淆结构体和联合体的概念,特别是在使用联合体时,需要明确当前存储的是哪个成员,以避免数据错误。3.简述C语言中递归函数的优缺点及使用注意事项。答案:【递归函数的优缺点:优点:1)代码简洁优雅,特别是对于具有自相似性质的问题,如阶乘、斐波那契数列等;2)符合人的思维方式,易于理解和实现;3)可以将复杂问题分解为更小的子问题,降低问题复杂度。缺点:1)执行效率较低,因为函数调用需要保存现场、传递参数、返回结果等开销;2)可能导致栈溢出,特别是对于递归深度较大的问题;3)调试困难,因为函数调用栈复杂。使用注意事项:1)必须有明确的终止条件,否则会导致无限递归;2)递归深度不宜过大,避免栈溢出;3)对于性能敏感的场景,可以考虑使用迭代代替递归;4)在递归调用中,参数应逐渐接近终止条件;5)可以使用记忆化等技术优化递归性能。例如:计算阶乘的递归函数必须有当n为0或1时的终止条件。】解析:递归函数是一种在函数定义中调用自身的函数,它有许多优点,如代码简洁优雅,符合人的思维方式,能够将复杂问题分解为更小的子问题。然而,递归也有明显的缺点,如执行效率较低,可能导致栈溢出,调试困难等。使用递归时必须注意几个关键点:首先,必须有明确的终止条件,否则会导致无限递归;其次,递归深度不宜过大,避免栈溢出;再次,对于性能敏感的场景,可以考虑使用迭代代替递归;此外,在递归调用中,参数应逐渐接近终止条件;最后,可以使用记忆化等技术优化递归性能。理解递归的优缺点和注意事项对于正确使用递归解决问题非常重要。易错警示:初学者常忽略终止条件或递归深度控制,导致程序崩溃或性能问题,同时过度使用递归可能导致代码难以理解和维护。五、计算题(15分,3题,每题5分)1.给定以下C语言代码,写出程序运行后的输出结果:```cinclude<stdio.h>intmain(){inta=5,b=10,c;c=a+++++b;printf("a=%d,b=%d,c=%d\n",a,b,c);return0;}```答案:【a=6,b=11,c=16】解析:这道题考察自增运算符的使用和表达式的计算顺序。关键点在于a++和++b的区别:a++是先使用a的值,然后再将a加1;而++b是先将b加1,然后再使用b的值。计算过程:c=a+++++b=5+11=16;执行后a变为6,b变为11。易错警示:许多初学者混淆前置自增和后置自增的区别,导致计算错误。前置自增(++b)是先增加后使用,后置自增(a++)是先使用后增加,这是C语言中的基本概念,但容易出错。2.给定以下C语言代码,写出程序运行后的输出结果:```cinclude<stdio.h>intmain(){intarr[]={1,2,3,4,5};intp=arr+2;printf("%d,%d,%d\n",p,(p+1),(p-1));return0;}```答案:【3,4,2】解析:这道题考察指针和数组的关系。数组名arr表示数组的首地址,即arr[0]的地址。arr+2表示数组第三个元素(索引为2)的地址,即arr[2]的地址,值为3。p获取指针p指向的值,即3;(p+1)获取p+1指向的值,即arr[3]的值4;(p-1)获取p-1指向的值,即arr[1]的值2。易错警示:初学者容易混淆指针运算和数组索引的关系,特别是指针加减运算时要注意步长,对于int类型指针,p+1实际上是p+sizeof(int)个字节,而不是简单的地址加1。3.给定以下C语言代码,写出程序运行后的输出结果:```cinclude<stdio.h>intfunc(intn){if(n<=1)return1;elsereturnnfunc(n-1);}intmain(){printf("%d\n",func(5));return0;}```答案:【120】解析:这道题考察递归函数的执行过程。func函数计算阶乘,当n<=1时返回1,否则返回n乘以func(n-1)。计算func(5)的过程:func(5)=5func(4)=54func(3)=543func(2)=5432func(1)=54321=120。易错警示:递归函数的执行过程对于初学者来说可能比较难以理解,特别是函数调用栈的变化。此外,递归函数必须有明确的终止条件,否则会导致无限递归和栈溢出。在阶乘计算中,当n为0或1时返回1是终止条件。六、综合编程题(10分)编写一个C语言程序,实现以下功能:1.定义一个结构体Student,包含学号(id)、姓名(name)、三门课程成绩(score1,score2,score3)和平均分(average)字段;2.从键盘输入3个学生的信息;3.计算每个学生的平均分;4.按照平均分从高到低排序学生信息;5.输出排序后的学生信息。答案:【以下是完整的C语言程序:```cinclude<stdio.h>include<string.h>//定义学生结构体structStudent{intid;charname[20];floatscore1;floatscore2;floatscore3;floataverage;};//计算学生平均分的函数voidcalculateAverage(structStudents){s->average=(s->score1+s->score2+s->score3)/3.0;}//按照平均分从高到低排序学生信息voidsortStudents(structStudentstudents[],intn){structStudenttemp;for(inti=0;i<n-1;i++){for(intj=0;j<n-i-1;j++){if(students[j].average<students[j+1].average){//交换两个学生的信息temp=students[j];students[j]=students[j+1];students[j+1]=temp;}}}}//输出学生信息voidprintStudent(structStudents){printf("学号:%d\n",s.id);printf("姓名:%s\n",);printf("成绩1:%.1f\n",s.score1);printf("成绩2:%.1f\n",s.score2);printf("成绩3:%.1f\n",s.score3);printf("平均分:%.1f\n",s.average);printf("--------------------\n");}intm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论