一道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<iostream>#include <vector>#include <algorithm>#include <string>using namespace std;/************学生结构*************/struct student{ string name; float score;};/************比较函数n*************/bool com(student* m,student* n);/***************主函数**************/int main(){ const int total=25; vector<student*> vec; student s[total]; int i; cout<<"Please input your name and score!"<<endl; for(i=0;i<total;i++) { cin>>s.name>>s.score; vec.push_back(&s); } sort(vec.begin(),vec.end(),com); for(i=0;i<total;i++) cout<<vec->score<<" "; cout<<endl; return 0;} |
第二个人
C/C++ code//比如:这么写#include <stdio.h> struct Student { char name[10]; float sorce;}s[25];void Input()//输入{ for (int i=0;i<25;i++) { scanf("%s%f",&s.name,&s.sorce); }}void Print()//输出{ for (int i=0;i<25;i++) { printf("%s %f\n",s.name,s.sorce); }}void Bubble_Sort()//冒泡排序{ Student temp; for (int i=0;i<25;i++) for (int j=i+1;j<25;j++) if (s.sorce>s[j].sorce) { temp=s[j]; s[j]=s; s=temp; } }void main(){ Input(); Print(); printf("sdf\n"); Bubble_Sort(); Print();}
第三个人
C/C++ code#include <stdio.h> struct Student { char name[10]; float sorce;}s[25];void Input()//输入{ for (int i=0;i<25;i++) { scanf("%s%f",&s.name,&s.sorce); }}void Print()//输出{ for (int i=0;i<25;i++) { printf("%s %f\n",s.name,s.sorce); }}void Bubble_Sort()//冒泡排序{ Student temp; for (int i=0;i<25;i++) for (int j=i+1;j<25;j++) if (s.sorce>s[j].sorce) { temp=s[j]; s[j]=s; s=temp; } }void main(){ Input(); Print(); Bubble_Sort(); Print();}
上一个:谁会c语言程序设计
下一个:c语言的32个关键字?