当前位置:编程学习 > C/C++ >>

一道c语言课程设计题

由键盘输入25个学生a~y的某门课程的学习成绩60~99分
1.讲分数由低到高排序(用直接排序法和冒泡法),并显示学生姓名和对应的分数
2.用线性搜索法检索某个学生的成绩(输入姓名,显示成绩)
3.对分搜索法检索某个学生的成绩(输入姓名,显示成绩)

设计报告:
1,设计内容,设计要求;
2,设计思路;
3,程序设计流程图;
4,设计及调试中所遇问题,和解决方法;
5,体会及收获;
6,源程序(含注释)。

追问:先谢谢你了。可是build后有三个错误D:\我的文档\My Documents\Cpp1.cpp(9) : error C2146: syntax error : missing ';' before identifier 'data'
D:\我的文档\My Documents\Cpp1.cpp(9) : error C2501: 'structe' : missing storage-class or type specifiers
D:\我的文档\My Documents\Cpp1.cpp(9) : fatal error C1004: unexpected end of file found 就这三个错误。。。
答案:即然出了300分想解决这个问题那么就请你耐心仔细看看:

1>设计内容:如你题目所示的内容。设计要求:采用用直接排序法和冒泡法以级数据结构链存储和搜索策略。

2>设计思路:

① 输入25名学生成存入结构休数组:

struct data

{char *name;//姓名

float score;//成绩

} a[25];//25个学生

再根据学生的成绩进行扫描出分数顺序并存入新的结体数组b[0~25]中。再输出新数据结查。

图解:

=

②程序清单:

#include"stdio.h" //输入输出库函数

#include"string.h"//字符串库函数

#define MAX 25 //25个学生

structe data

{char *name; //姓名

float score; //成绩

}a[25];

struct new_data //排序好的新数据

{

char *name;

float score;

}b[25]'

void main()

{

int i,j; //循环变量

float t;//成绩的临时交换变量

char str[10]; //姓名

for (i=0;i<MAX;i++) //循环25次 ,存放25个学生成绩

{

scanf("%s %f",str,a[i].socre);

strcpy(a[i].name,str); //在结体中不能用scanf输入字符串,应调用strcpy将name复制给结构中name

}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////任选其一

for (i=0;i<MAX;i++) //冒泡法排序

for (j=0;j<MAX-i;j++)

{

if (a[j].score>a[j+1].score)

{

t=a[j].score; a[j].score=a[j+1].score;a[j+1].score=t; }

strcpy(b[MAX-I].name,a[MAX-i].name); //姓名赋给新结构体a ,为什么是MAX-1,冒泡法的思想每排一次则最后一个值确。

b[MAX-1].score=a[MAX-1].score; //成绩给新结构体b

}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

for (i=0;i<MAX;i++) //比较交换法

for (j=j+1;j<MAX-1;j++)

{

if (a[i].score>a[j].score)

{ t= a[j].score;a[j].score=a[i].score;a[i].score=t;}

strcpy(B[i].name,a[i].name); //新名赋给新结构体b,选择排序法每内循完一次第一个值确定。

b[i].score=a[i].score;

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

我是在其他地方照的 我也不是很懂 你看看行不

第一个人说的

C/C++ code//楼主最好把自己写的代码贴出来,即使有错大家也会帮你找的,要真正自己动手:-)//下面这个只实现了输入名字和分数,按分数排序#include&lt;iostream&gt;#include &lt;vector&gt;#include &lt;algorithm&gt;#include &lt;string&gt;using namespace std;/************学生结构*************/struct student{ string name; float score;};/************比较函数n*************/bool com(student* m,student* n);/***************主函数**************/int main(){ const int total=25; vector&lt;student*&gt; vec; student s[total]; int i; cout&lt;&lt;&quot;Please input your name and score!&quot;&lt;&lt;endl; for(i=0;i&lt;total;i++) { cin&gt;&gt;s.name&gt;&gt;s.score; vec.push_back(&amp;s); } sort(vec.begin(),vec.end(),com); for(i=0;i&lt;total;i++) cout&lt;&lt;vec-&gt;score&lt;&lt;&quot; &quot;; cout&lt;&lt;endl; return 0;}

第二个人

C/C++ code//比如:这么写#include &lt;stdio.h&gt; struct Student { char name[10]; float sorce;}s[25];void Input()//输入{ for (int i=0;i&lt;25;i++) { scanf(&quot;%s%f&quot;,&amp;s.name,&amp;s.sorce); }}void Print()//输出{ for (int i=0;i&lt;25;i++) { printf(&quot;%s %f\n&quot;,s.name,s.sorce); }}void Bubble_Sort()//冒泡排序{ Student temp; for (int i=0;i&lt;25;i++) for (int j=i+1;j&lt;25;j++) if (s.sorce&gt;s[j].sorce) { temp=s[j]; s[j]=s; s=temp; } }void main(){ Input(); Print(); printf(&quot;sdf\n&quot;); Bubble_Sort(); Print();}

第三个人

C/C++ code#include &lt;stdio.h&gt; struct Student { char name[10]; float sorce;}s[25];void Input()//输入{ for (int i=0;i&lt;25;i++) { scanf(&quot;%s%f&quot;,&amp;s.name,&amp;s.sorce); }}void Print()//输出{ for (int i=0;i&lt;25;i++) { printf(&quot;%s %f\n&quot;,s.name,s.sorce); }}void Bubble_Sort()//冒泡排序{ Student temp; for (int i=0;i&lt;25;i++) for (int j=i+1;j&lt;25;j++) if (s.sorce&gt;s[j].sorce) { temp=s[j]; s[j]=s; s=temp; } }void main(){ Input(); Print(); Bubble_Sort(); Print();}

上一个:谁会c语言程序设计
下一个:c语言的32个关键字?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,