c++编程5题--每题都以实验报告格式书写~(最先完整答对4题即可追加100分)完整哦~~

实验报告格式:
一、实验内容与要求
二、问题分析
1、程序的功能要求
2、程序的错误处理
三、方案设计
1、解题思路
2、数据结构描述
3、程序框架结构
4、关键算法描述
四、附源代码

----------------------------------------------------------------
题目:
一.程序运行后在屏幕上有提示:“Please input int matrix B[3][3]:”也就是提示输入9个整数,并存入二维数
组B中,再提示输入另外的9个数并放到二维数组C〔3〕〔3〕中。
输入完毕后,输出两矩阵的值,将两个矩阵相乘,并按下图中的格式进行输出。

二.1.在主函数中正确输入每个学生的学号及各科成绩,输入时有必要的提示信息。
2.设计求每个学生各科平均成绩的子函数;
3.设计求每门课程的平均成绩子函数;
4.在主函数中进行数据的输出。要求:输出格式清晰、规范。

输入示例:
请按以下顺序输入:学号、数学、语文、英语:
30801110 80 90 70
30801111 80 60 70
30801213 60 70 65
输出示例:
学号30801110的各科平均成绩为80
学号30801110的各科平均成绩为70
学号30801110的各科平均成绩为65
数学平均成绩为73
语文平均成绩为73
英语平均成绩为68
三,假设有n项物品,大小分别为s1,s2,...,si,...,sn,其中si满足:1 <= si <= 100的整数。问题是要把这些物品装入到容量为100的一批箱子(序号1~n)中。装箱方法是:对每项物品si, 依次扫描所有这些箱子,把si放入足以
能够容下它的第一个箱子中。写一个程序(n<=80)来模拟这个装箱的过程,并输出每个物品所在的箱子序号。最后输出
所需的箱子数目。
输入要求:先输入n,再输入n个物品的大小值。
输出要求:按输入的物品顺序输出每个物品所在的箱子编号;并输出所需箱子总数。

四,超市门口的存包柜有n个存包箱,并且有1个投币开箱控制器,每个逛超市的顾客若要存一下自己的手提包后小件物品时,只要往控制器投入1个1元的硬币,如果有空的箱子,就会自动打开一个空的箱子,并且自动打印输出一张小
小的密码纸条;如果箱子没有空,则提示本柜已满。当顾客离开超市时,用密码纸条上指定的数字密码依次输入到开箱控制器,则顾客所存包的箱子门就自动打开,顾客取走物品后,关上门。请编写开箱控制程序实现上述过程。
输入数据时,可先输入存包柜总数n,再由用户选择是“投硬币”还是“输密码”。
如果“投硬币”,则只有硬币值是1才开箱。如果有空柜,则输出空柜编号及密码(长度自定);如果无空柜,则提示:“本柜已满”。
如果“输密码”,如果输入的密码与某一柜子密码相符,则显示打开的柜子编号,否则输出提示:“密码错误”。
五,医院有A、B、C、D、E、F、G 7位大夫,在一星期内(星期一至星期天)每人要轮流值班一天,如果已知:
(1) A大夫比C大夫晚1天值班;
(2) D大夫比E大夫晚1天值班;
(3) E大夫比B大夫早2天值班
(4) B大夫比G大夫早4天值班;
(5) F大夫比B大夫晚1天值班;
(6) F大夫比C大夫早1天值班;
(7) F大夫星期四值班。
就可以确定周一至周日的值班人员分别为:E、D、B、F、C、A、G。
输入要求:先输入一个整数n,再输入n组条件,要求根据输入的条件能够确定唯一的值班表,且输入的n组条件中能够直接或间接得到任意两位大夫的关联关系,例如上面的条件(2)直接显示了D与E间的关系,而通过条件(1)、(6)、(5)可以间接得到A与B的关系。
条件输入格式有2种:
格式1:编号 比较运算符 编号 天数
其中比较运算符有2种: > 或 < ,分别表示“早”或“晚”
例如:A<C1 表示: A大夫比C大夫晚1天值班
格式2:编号 = 数值
例如:F=4 表示: F大夫在星期四值班
输出要求:根据输入信息,输出每位大夫在星期几值班。
解题思路+关键算法描述+编程代码也可~~省去些你们的麻烦~~~

1:
不晓得你要实现什么乘法,所以只有写输入和对应元素相乘了。
int a[3][3];
int b[3][3];
int c[3][3];
for(int i=0;i<3;i++)//输入
{
for(int j=0;j<3;j++)
{
cin>>a[i][j];
}
}

for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
c[i][j]=a[i][j]*b[i][j];
}
}
2:
#include<iostream>
#include<string>
using namespace std;

class Student
{
public:
string num;
int score[3];
int ave(int score[]);
private:
int i;

};

int Student::ave(int score[])
{
double ave_num;
double sum=0;
for(i=0;i<3;i++)
sum+=score[i];
ave_num=sum/3;
cout<<ave_num<<endl;
return 0;
}

int main()
{
int count;
int sum=0;
int i=0;
int ave_ke_num[20];
cin>>count;
Student Stu[count];
string str[3]={"数学:","语文:","英语:"};
while(i<count)
{
cout<<"输入:"<<endl;
cin>>Stu[i].num>>Stu[i].score[0]>>Stu[i].score[1]>>Stu[i].score[2];
i++;
}
for(i=0;i<count;i++)
{
Stu[i].ave(Stu[i].score);
}
for(int j=0;j<3;j++)
{
for(i=0;i<count;i++)
{
sum+=Stu[i].score[j];
}
ave_ke_num[j]=sum/count;
cout<<str[j]<<ave_ke_num[j]<<endl;
sum=0;
}
system("pause");
return 0;
}

3:
int cage[80];
int thi[80];
int i=0;
for(int j=0;j<80;j++)
{
int left=cage[j];
while(left>=0&&i<80)
{
left=cage[j]-thi[i++];
}
i=i-1;
}
4:
int n;
int i;
cin>>n;
int box[n];
int num[20];
int code;
int box_num;
for(i=0;i<n;i++)
{
box[i]=0;
}
string str;
while(cin>>str)
if(str=="存")
{
for(i=0;i<n;i++)
{
if(box[i]==0)
{
box[i]==1;
cin>>code;
num[i]=code;
}
break;
}
}
else if(str=="取")
{
cin>>box_num>> code;
if(code==num[box_num])
cout<<"第"<<box_num<<"号储物柜打开"<<endl;
else
cout<<"密码错误"<<endl;
}

5:
int n;
int i;
int j;
cin>>n;
char ch[4];
int num[7]={A,B,C,D,E,F,G};
enum{A=1;B,C,D,E,F,G};
string str;
for(i=0;i<n;i++)
{
cin>>str;//对初始num排序,每次都只做交换操作。
strcpy(ch,str.c_str());
for(j=0;j<7;j++)
{
if(ch[1]=='=')
{
swap(num[ch[0]],num[ch[2]]);
}
if(ch[1]=='>')//E>B
{
if(ch[2]-1>=0)
swap(num[ch[0]],num[ch[2]-1]);
else
swap(num[ch[2]],num[ch[0]+1]);
}
if(ch[1]=='<')
{
if(ch[2]+1<=7)
swap(num[ch[0]],num[ch[2]+1]);
else
swap(num[ch[2]],num[ch[0]-1]);
}
}
}

0
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-07
2。#include<string>
#include<iostream>
using namespace std;
class student
{

public:

student()
{
number=1;
name;
math=0;
english=0;
computer=0;
double b=0;

}
int b;//平均成绩

void shuru() //输入各科成绩
{ cout<<"请输入学号";cin>>number;
cout<<"请输入姓名";cin>>name;
cout<<"请输入各科成绩"<<endl;
cout<<"请输入数学成绩";cin>>math;
cout<<"请输入英语成绩";cin>>english;
cout<<"请输入电脑成绩";cin>>computer;
}

void sum()
{
he=math+english+computer;
cout<<"学生的总成绩为"<<he<<"分!!!!"<<endl;
}

void average( ) //三门课程的平均成绩
{
b=(math+english+computer)/3;
cout<<"学生的平均成绩为"<<b<<"分!!!!"<<endl;
}
void coutall()
{cout<<"总成绩最高的同学详情"<<"学号"<<number<<endl<<"姓名"<<name<<endl<<"数学成绩"<<math<<endl<<"外语成绩"<<english<<endl<<"电脑成绩"<<computer<<endl;
}
void cout80( ) //输出平均成绩大于80的同学:
{if(b>80.0)
cout<<"平均成绩大于80的同学"<<endl<<number<<endl<<name<<endl<<math<<endl<<english<<endl<<computer<<endl;
}

private:
int number;//学号
string name;//学生姓名
int math;//数学成绩
int english;//英语成绩
int computer;//电脑成绩
int he; //临时变量

};

void main()
{ student s[3];
int k,u;
double averagemax;

for(k=1;k<3;k++)
{
s[k].shuru();
s[k].sum();
s[k].average();
s[k].cout80();
}
averagemax=s[1].b;//求平均成绩最大的
for(k=1;k<4;k++)
{if(s[k].b>averagemax)
{averagemax=s[k].b;
u=k;
}
};
s[u].coutall();
cout<<"★按任意键退出★"<<endl;
}
3...#include<iostream>
using namespace std;
class box
{
private:
int no;
int m;
int last;
int a[100];
public:
box *next;
box(int getno,int getm)
{
int i;
no=getno;
last=100;
m=getm;
next=NULL;
for(i=0;i<100;i++)
a[i]=0;
}
int isenough(int t)
{
if((last-t)>=0)
return 1;
else
return 0;
}
void setm(int m,int t)
{
a[m]=t;
}
int getm()
{
return m;
}
void addm()
{
m++;
}
void setlast(int t)
{
last-=t;
}
void display()
{
int i;
for(i=0;i<m;i++)
{
cout<<a[i]<<" "<<no<<endl;
}
}
};
void main()
{
int s,n,i,j;
box *p,*head,*tail;
cout<<"Please input n and the numbers!"<<endl;
cin >>n;
p=new box(0,0);
head=p;
tail=head;
cin>>s;
(*p).setm((*p).getm(),s);
(*p).addm();
(*p).setlast(s);
for(i=1,j=0;i<n;i++)
{
cin>>s;
if((*p).isenough(s))
{
(*p).setm((*p).getm(),s);
(*p).addm();
(*p).setlast(s);
}
else
{
j++;
p=new box(j,0);
tail->next=p;
tail=p;
(*p).setm((*p).getm(),s);
(*p).addm();
(*p).setlast(s);
}
}
for(p=head;p!=NULL;)
{
(*p).display();
p=p->next;
}
cout<<"共需"<<j+1<<"个箱子";
cin>>i;
}
4.
5。#include<iostream>
#include<stdlib.h>
int a[8];
char *day[]={"","MONDAY","TUESDAY","WEDNESDAY","THURSDAYT",
"FRIDAY","SATUDAY","SUNDAY"}; /*建 立星期表*/
int main()
{
int i,j,t;
a[4]=6; /*星期四是F值班*/
for(i=1;i<=3;i++)
{
a[i]=2; /*假设B值班的日期*/
if(!a[i+3]) a[i+3]=7; /*若三天后无人值班则安排G值班*/
else{ a[i]=0;continue;} /*否则B值班的日期不断对*/
for(t=1;t<=3;t++) /*假设E值班的时间*/
{
if(!a[t]) a[t]=5; /*若当天无人值班则安排E值班*/
else continue;
if(!a[t+2]) a[t+2]=4; /*若E值班两天后无人值班则应为D*/
else{ a[t]=0;continue;} /*否则E值班的日期不对*/
for(j=5;j<7;j++)
{
if(!a[j]) a[j]=3; /*若当天无人值班,则安排C值班*/
else continue;
if(!a[j+1]) a[j+1]=1; /*C之后一天无人值班则应当是A值班*/
else{ a[j]=0;continue;} /*否则A值班日期不对*/
for(i=1;i<=7;i++) /*安排完毕,输出结果*/
cout<<"Doctor %c is on duty ."<<","<<'A'+a[i]-1<<day[i];
exit(0);
}
}
}
}
第2个回答  2010-06-07
int i,j,t;
a[4]=6; /*星期四是F值班*/
for(i=1;i<=3;i++)
{
a[i]=2; /*假设B值班的日期*/
if(!a[i+3]) a[i+3]=7; /*若三天后无人值班则安排G值班*/
else{ a[i]=0;continue;} /*否则B值班的日期不断对*/
for(t=1;t<=3;t++) /*假设E值班的时间*/
{
if(!a[t]) a[t]=5; /*若当天无人值班则安排E值班*/
else continue;
if(!a[t+2]) a[t+2]=4; /*若E值班两天后无人值班则应为D*/
else{ a[t]=0;continue;} /*否则E值班的日期不对*/
for(j=5;j<7;j++)
{
if(!a[j]) a[j]=3; /*若当天无人值班,则安排C值班*/
else continue;
if(!a[j+1]) a[j+1]=1; /*C之后一天无人值班则应当是A值班*/
else{ a[j]=0;continue;} /*否则A值班日期不对*/
for(i=1;i<=7;i++) /*安排完毕,输出结果*/
cout<<"Doctor %c is on duty ."<<","<<'A'+a[i]-1<<day[i];
exit(0);
第3个回答  2010-06-07
作业吧........
还要报告的格式,我可以提供你编程思想甚至给你编码,报告你自己写
第4个回答  2010-06-07
傻x才做。。。。。
相似回答