《2023年西南交大c++实验报告.docx》由会员分享,可在线阅读,更多相关《2023年西南交大c++实验报告.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验 8实验报告教学班级:_26_学生学号:_20 1_学生姓名:实验日期:_5.2 6 实验地点: (机房)指导教师署名:实验成绩:一、实验目的1 .掌握对数值型一维数组的使用方法;2 .掌握对数组的插入、删除、修改、排序和查找等常用算法。二、实验任务1 .设有一批学生的程序设计课程的考试成绩(学生人数最多为N = 1()O人,数据如下:学号姓名程序设计成绩余学成83张思德721 111 1(提醒:可以建立三个一维数组来存放学生的数据,其中:学号为一个】ong类型的数组st uden tID,姓名为一个str in g类型的数组nam e ,成绩为一个i n t类型的数组grad e )(1
2、)由键盘获取学生人数n,规定学生人数n的取值范围1 1到N-2;(2)由键盘获取学生的相关数据;(3 )用选择排序法将学生的数据按学号进行升序排列并输出排序后的学生数据;2 .在任务1的基础上,在学生数据中,完毕以下任务:(1)键盘输入一个学生的学号,用折半查找法查找是否有该学生,若有该学生则输出该学生的所有信息,按如下格式输出:学号姓名程序设计成绩张思德72s e t w( 1 0 ) gra d e i bot) c o u t V 查无此人 e n d 1; 若该学生不存在,显示*,查 无此人”C:windowssystem32cmd.exe成绩成绩成绩信成为9刍A主贝9 8 99 9
3、8 5信成生名飞板哥生名哥普号 学把飞老亍世飞学 后小煤启后最小的个9个9个8依58依48依52学 主R6 上同 6.B6 4tx序 -序 th fl序号485258序号585248个绩008859 成1兰口召.名哥板飞. 3重飞. 息小,续 继学号585248键于464646t 子4646461001子464646意输58新请46更搜狗拼音输入法全:若没有该学生,则输出“查无此人”的信息。(2)插入一个新学生的数据,规定插入后学生的数据任按学号升序排列。3.在任务1的基础上,在学生数据中,完毕以下任务:用选择排序法将学生数据按学生程序设计课程成绩降序排列。键盘输入个学生的学号和程序设计课程的
4、新成绩,在学生数据中查找是否有该学 生,若有该学生则用键盘输入的新成绩替换该学生的原成绩,否则输出“杳无此人”的信息。 三、实验结果(涵程序+注释)输入并升序排列学生的成绩# in c 1 u d e in c 1 ude# i n clud e u si n g namesp a ce s(d;void main()|cout N a me: e n d 1;c o ut N u mbcr:20 e ndl:Mong slud e n t ID 1 00, t rans 1 ;定义两个长整型变量,其中一个是数组st r ing n a mc10 0 , trans2;定义两个字符串类变量,其
5、中一个是数组Ant gr a del 0 0 , n, i, j, trans3;scout n;从键盘输入学生的人数for (i = 0; i =n -1 ; i+)运用循环结构录入各学生的信息01c o ut 请依次输入第” i + 1个学生的学号、姓名、成绩” gra d e i ;0)ofor ( i = 0; i = n - 1 ; i+)运用嵌套循环和条件语句将信息按学号进行升序排 列(s for (j = i + I; j stu d e n t I D j )0 o trans 1 = stude n t I D i ; stu d e n tIDi = student I D
6、(j ; s tu d entIDj = trans 1;。 4r a ns2 = namei; n ame i = n a mej; namej = trans2;。 tra n s3 = gradeij; g ra d e i = g ra d ej ; g r ad e j= tr a ns3;a Iocoutvv”按学号升序排序后学生的成绩信息为 endl;coul setw (10) 学号 vvse t w (10)v 姓名 v s e tw(10) Vv“成绩 endl: 限定输出结果格式for ( i = 0;i =n- 1; i+)按特定格式输出排列后的学生信息c o ut s
7、e t w(l 0 ) st u dentl D i s e tw ( 1 0 ) namei setw( 10) g r ade i en d 1 :)“大键盘输入一个学生的学号,用折半查找法查找是否有该学生文/int b o t = n 1, m i d , t op = 0 ;N o ng number;co u t ”请输入待查学生的学号” en d 1;c i n n u mb e r;while (op n u mbcr) t op = m i d +1 ;a else if (st u d e ntIDmi d = I op)/当这个学生存在时,以特定格式输出该学生的信息cou
8、t 该学生的信息为:“vend 1;8cout setw (10) vV ”学号 vv se t w(10) 姓名 vv se t w(10) vv 成绩” e n dl;“co u t setw( 1 0) n umber s e t w( 1 0) n a mefmid =bot) cout 查无此人 endl; / /当该学生不存在时,显示“查无 此人”/*插入个新学生的数据,规定插入后学生的数据按学号升序排列*/ocoutv namefn g rad en;录入要插入的学生的信息4b r (i = 0; i = n; i+)/运用嵌套循环和条件语句,将插入后学生的数据按学号升 序排列f
9、 or(j =i + 1; j student I Dj)o t r ans 1 = s t ude n t I Di; s t uden t I D i = studentIDj ; s t u d e nt I D j J = tra n s 1; tran s 2 = n am e i ; namefil = n a me jl;n a me j = trans 2 ;strans3 = grad ci; gra d e i = gr a dc j ;grade j = trans3;000 )c out V插入并排序后学生的成绩信息为:“ VV end 1 ;cout setw(10)
10、 学号vv setw( 1 0) Vv姓名vV s etw(10) 成绩” e ndl: 限定提醒语句的输出格式for (i= 0;i= n; i+)(c out setw( 1 0) stude n(ID i s eiw(IO) n a mei setw( 10) gradefi endl;输出排序结果1请输入学生人到n 11三n:三98)请依嶂入第1个学生的学号、姓名、成绩4658启干哥99褊舂2个学生的学号、姓名、成绩请依嶂入第1个学生的学号、姓名、成绩4658启干哥99褊舂2个学生的学号、姓名、成绩请依次4647请而1648 小情依次争有51前人第3个学生的学号、姓名、成绩或曾含学生的
11、学号、姓名、成绩4652煤老板66按学号翼排序后薛4647撒寥工4648小飞飞4652嫌老板4658启子哥请输入待查学生的学号的成绩值甚为:成绩5159669916484648成绩 59括熠学生学号、姓名、成绩信息:77插入并战唇后学生4647 刷4648 小4652 爆4658 足 4666请按任意键继续.5159669977腰狗拼音布/*在任务1的基础上,在学生数据中,完毕以下任务:用选择排序法将学生数据按学生程序设计课程成绩降序排列。键盘输入一个学生的学号和程序设计课程的新成绩,在学生数据中查找是否有该学生, 若有该学生则用键盘输入的新成绩替换该学生的原成绩,否则输出“查无此人”的信息。
12、*/#includ e #inciu d e #i n c 1 u d e using name s pace st d ;void m a in()(c o u t Name: e n dl;cout N u mber: 201 endl;1 ong s tudentlDf 1 00, transit定义两个长整型变量,其中一个是数组o s tr i ng n a me 100 , trans2; /定义两个字符串类变量,其中一个是数组i nt gradefl00, n, i , j, t r a ns3;(:0世请输入学生人数门 (ll/nW98)” n;for (i = 0; i gra
13、d ei;运用循环结构录入各学生的信息)ofor (i = 0;i = n-l;i +)/ /运用嵌套循环和条件语句将信息按学号进行升序排列0 (gfor(j = i + 1 ; j st u d entID|jJ) t ransl = stud e ntID i ; s t ude n t ID ij = s tu d e n t ID jj;s t udentID j = tra nsl;g t rans2 = n ame i ; name i J = name j J; n a me j = trans 2 ;tr a n s3 = g r adef i 1; gr a de i = g
14、 r ade j; gra d e fjt r a ns3; oco ut V”按学号升序排序后学生的成绩信息为: endl;cout setw(10) 学号 VV setw(10) Vv 姓名 Vv se t w(10) V V ”成绩” e n dl;f or (i = 0; i = n 1; i+)输出按学号进行升序排列后的学生信息。s c out s e t w( 10) s t udentlD i s e tw (10) name i setw (10) gra d ei e n dl;)for (i = 0; i = n - 1; i+) 运用嵌套循环和条件语句将信息按成绩进行降序
15、排列(a f or (j = i + 1; j = n - 1 ; j+)0 i f (gr a d e i grade j )ooo |r ans 1 = studentlD i ; st u den t I Di = s t udent I D|j; stud e nt I D j=trans 1;。 trans 2 = namei; n a mei = namel j ; name j = t r ans2;4 r a n s3 = grade i ; g r adei = gra d ej ; grade j = tra n s 3;a)笺o ut ”按成绩降序排序后学生的成绩信息为/
16、 V endl; ocoulsetw ( 1 0) vv“学号 vV s e iw(10) vv”姓名 setw(10) ”成绩” V end 1 ;fo r (i = 0;i= n -1; i+) /输出按成绩进行降序排列后的学生信息 (。 cout setw(10) student I Di s e t w( 1 0 ) namei set w (I 0 ) gra d e i e ndl;cout stude n tIDn grade n ;/从键盘输入学生的学号和新成绩i n t t op=0, bot= n -1, mid;while (top st u dentl D (nl) t op = mid+1;else if ( $ tudcntIDm i d = t o p)若该学生存在,输出成绩更新后所有学生的信息 (。 gra dem i d = grade n ;更新后的学生信息为: endhcout set w(10)n- setw (10) V 姓名 setw (10) ”成绩 endl;for (i = 0; i = n - 1 ;i+) c o ut s e t w( 1 0 ) studen t IDi s etw(10) n amefil