c++设计一个歌唱比赛排名的程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编号:29计算机软件技术基础(VC)课程设计报告
一、题目:
设计一个歌唱比赛排名的程序(C)
二、设计思路
1、总体设计
1)分析程序的功能
按照出场顺序输入歌唱比赛选手成绩,程序进行处理,输出选手排名.
2)系统总体结构:该程序由一个主函数和输入输出两个分函数模块组成,分函数分别为in和out,输入函数实现把得分输入数组,输出函数实现按得分进行排名并输出。
2、各功能模块的设计:
输入成绩:用if语句实现功能选择,先按1,进行数据输入,储存在定义的一维数组中。
排名输出:先用冒泡法对数据进行排序,再通过循环语句实现数据的处理和输出。
3、设计中的主要困难及解决方案
1)使用函数调用,结构较难构造。
解决:认真分析构思结构,在清晰的模块下进行编写。
2)基础知识不牢固导致大量错误并难以修改。
解决:重新翻书,以及请教其他成绩优秀的的同学,多交流。
4、你所设计的程序最终完成的功能
1)说明你编制的程序能完成的功能
运用此程序可输入选手成绩输出选手排名。
2)准备的测试数据及运行结果
测试数据:5347356 结果:方案一:3541532;方案二:3651632.
三、程序清单
#include<iostream.h>
const int M=7;
void in(int *a); //输入函数数据
void out(int *a); //排序
void main()
{
int x,a[M];
do
{
编号:29 cout<<"请输入您要实现的功能!"<<endl;
cout<<"1.数据输入!"<<endl;
cout<<"2.选手排名!"<<endl;
cout<<"0.退出"<<endl;
cin>>x;
if(x==1)
in(a); //调用函数
else if(x==2)
out(a); //调用函数
else if(x==0)
;
else
cout<<"输入错误,请重新输入"<<endl;
cout<<endl;
}while(x);
}
void in(int *a) //输入得分
{
int i;
cout<<"请按出场顺序输入得分!"<<endl;
for(i=0;i<M;i++)
cin>>a[i];
}
void out(int *a)
{
int b[M],c[M],e[M],f[M];
int i,j,z;
for(i=0;i<M;i++)
{
b[i]=a[i]; //复制得分的数组
f[i]=a[i];
}
for(i=0;i<M;i++) //对复制得到的数组进行排序{
for(j=0;j<M-1-i;j++)
if(b[j]<b[j+1])
{
z=b[j];
b[j]=b[j+1];
b[j+1]=z;
}
}
for(i=M-1;i>=0;i--)
{
for(j=0;j<M;j++)
if(b[i]==a[j])
e[j]=i+1;
}
int n=M;
for(i=0;i<M;i++) //先将b数组里重复的去掉for(j=i+1;j<n;j++)
{
if(b[i]==b[j])
{
for(;j<M-1;j++)
b[j]=b[j+1];
n--;
j--;
}
}
for(int k1=0;k1<n;k1++) //将a和b数组里的数比较,为a标记名次在c中{
for(int k2=0;k2<M;k2++)
{
if(b[k1]==a[k2])
c[k2]=k1+1;
}
}
cout<<"方案1"<<endl; //方案1
for(i=0;i<M;i++)
cout<<i+1<<"\t"; //输出出场顺序
cout<<endl;
for(i=0;i<M;i++)
cout<<a[i]<<"\t"; //输出得分
cout<<endl;
for(i=0;i<M;i++)
cout<<c[i]<<"\t"; //输出名次
cout<<endl;
cout<<"方案2"<<endl; //方案2
for(i=0;i<M;i++)
cout<<i+1<<"\t"; //输出出场顺序
cout<<endl;
for(i=0;i<M;i++)
cout<<a[i]<<"\t"; //输出得分
cout<<endl;
for(i=0;i<M;i++)
cout<<e[i]<<"\t"; //输出名次
cout<<endl;
}
五、收获及心得体会
1、通过本次课程设计,自己在哪些方面的能力有所提高。
函数结构的缔造能力,与人沟通交流的能力,对结构体数组运用,循环结构,函数的调用能力有所加强。
2、收获和心得体会。
由于知识上的欠陷会导致常常出现同样的错误,应认真与人交流汲取知识,自我完善;新的知识可能导致程序的大量简化,思路更清楚结构,结构更简单,应不停的学习,并通过练习提高能力。
日期: 2009年 6月 21 日
#include<iostream.h>
void main()
{
int year,month,day,ds=0,nian=1900,ds1=0,ds2=0,week;
cout<<"please input the year,month,day:"<<endl;
cin>>year>>month>>day;
for(nian=1900;nian<year;nian++)
{
if(year%4==0&&year%100!=0||year%400==0)
ds1+=366;
else
ds1+=365;
}
switch (month-1);
{
case 11:ds2+=30;
case 10:ds2+=31;
case 9:ds2+=30;
case 8:ds2+=31;
case 7:ds2+=31;
case 6:ds2+=30;
case 5:ds2+=31;
case 4:ds2+=30;
case 3:ds2+=31;
case 2:
{
if(year%4==0&&year%100!=0||year%400==0)
ds2+=29;
else
ds2+=28;
}
case 1:ds2+=31;
}
if(year<1900)
cout<<"无法判断"<<endl;
else
ds=ds1+ds2+day;
week=ds%7;
cout<<"这天是星期:"<<week<<endl;
}。