文档介绍:习题5
3.
(1)利用数据流图画出的软件结构如图:
4.
(1)数据流图如下:
分解后:
(2)需求说明:
1. 功能需求:可以输入调资的标准,输入教师档案,经调资给出新的教师档案,需要存储档案
2. 性能需求:,更新处理要快
3. 灵活需求:当需求发生某些变化时,该软件应该能够适应这些变化
4. 故障处理要求:出现错误时,应给予警告或提示
(3)
HIPO图
(A)
工资调整系统
保留原有工资档案
调整工资
打印工资表
输入工资档案
输入调整工资标准
检索
验证
更新新工资数据
计算新工资
(B)
工资调整系统
保留原有工资档案
调整工资
打印工资表
输入工资档案
输入调整工资的标准
按工资多少排序
计算新工资
验证
更新新工资数据
(a)比较耗时,因为它要检索所有的档案,(b)从速度上看比较快,但是(b)需要排序算法,比较复杂,(a)对于设计来讲比较简单
(4)画出的数据流图比较适合(A)的算法
5.
扑克牌游戏程序代码:
#include ""
int rabl(int a,int b,int *r)
{
int l,k,m,i,p;
k=b-a+1;
l=2;
while(i<=1)
{
k=k+k+k+k+k;
k=k%m;
l=k/4+a;
if(l<=b) {p=l;i=i+1;}
}
*r=k;
return(p);
}
int max(int T[10][10])
{
int t=0;
if(T[0][0]>T[1][0])
t=T[0][0];
else t=T[1][0];
if(t<T[2][0])
t=T[2][0];
return t;
}
int E1(int T[10][10])
{
if(T[0][1]==T[1][1]&&T[1][1]==T[2][1])
return 1;
else return 0;
}
int E2(int T[10][10])
{
int q=0;
if(((max(T[10][10])-1)==T[0][0]||(max(T[10][10])-1)==T[1][0]||(max(T[10][10])-1)==T[2][0])&&((max(T[10][10])-2)==T[0][0]||(max(T[10][10])-2)==T[1][0]||(max(T[10][10])-2)==T[2][0]))
// if(q=max(T[][10]))
return 1;
else return 0;
}
int E3(int T[10][10])
{
if(T[0][0]==T[1][0]==T[2][0])
return 1;
else return 0;
}
int E4(int T[10][10])
{
if(T[0][0]==T[1][0]&&T[0][0]!=T[2][0])
return 1;
else if(T[0][0]==T[2][0]&&T[0][0]!=T[1][0])
return 1;
else if(T[1][0]==T[2][0]&&T[1][0]!=T[0][0])
return 1;
else return 0;
}
void main()
{
int times=0,e1=0,e2=0,e3=0,e4=0,e5=0;
int A[10][10],B[10][10];
int r1=2,r2=3;
printf("请输入游戏的次数\n");
scanf("%d",&times);
for(int j=0;j<times;j++)
{
for(int i=0;i<3;i++)
{
A[i][0]=rabl(1,13,&r1);
A[i][1]=rabl(14,17,&r2);
B[i][0]=rabl(1,13,&r1);
B[i][1]=rabl(14,17,&r2);
}
if(E1(A[][10])>E1(B[][10]))
{
e1++;
printf("A赢,同花顺\n");
}
else if(E1(A[][10])<E1(B[][10]))
{
e1++;
printf("B赢,同花顺\n");
}
else if(E1(A[][10]==E1(B[][10])&&E1(B[][10])==1)
{
e1++