结对编程 测试
关于黄金点游戏,我负责测试部分
由于我的队友苏钰涵他用的是VC6.0我用的是Visual studio我们出现过代码在vc上能运行在我这运行错误的情况。
1.vs不支持scanf
2.黄金点输出错误
3.得分第一个恒为人数,最后一个恒为-2
4.在VS上没有输出最后一轮结果和总得分就退出了,没有显示
修改
1.VS支持scanf_S
2.调用求总数的函数时出错
3.添加#include<windows.h>库函数,用system("pause");z执行
一.输入函数,编码是未考虑到非有理数的输入,当输入字符时程序回自动结束。建议添加一个判单项,如果输入的是字符时判单下,自动报错,并返回上一项在重新输入,得到符合要求的有理数为止。玩家输入的有理数是以次给数组赋值,一旦输错或其中一个没输如,程序将指向错误运行。
void main() { int i, j, m, n;float s[50], sum = 0; //定义 printf("游戏人数为:"); scanf_s("%d", &n); printf("游戏轮数为:"); scanf_s("%d", &m); //输入 for (j = 0; j<m; j++) { printf("第%d轮的输入为\n", j + 1); for (i = 0; i<n; i++) scanf_s("%f", &s[i]); } }
二.计算总和,平均数,G值。调用了一个求和函数,黄金点和平均数在主函数里。建议将求平均数和黄金点G也放入函数中或另重新构造一个函数。输出黄金点的时候printf("黄金G=%f\n",0.618*A);建议先求出黄金点在输出。
void main() { int c[50], n, ; double A; float s[50], sum = 0; sum = count(s, n); printf("和%f", sum); A = sum / n; printf("黄金点G=%f\n", 0.618*A); } float count(float a[], int size) { int i; float sum = 0.0; for (i = 0; i<size; i++) { sum = sum + a[i]; } return sum; }//求和函数
三.j计算最大值,最小值和打分。这部分也在主函数中,求最大值,最小值和打分时有代码冗余。最好合并了。
void main() { int i,c[50]; double max,min,b[50]; min = b[0]; max = b[0]; for (i = 0; i<n; i++) { if (b[i]<min) min = b[i]; } for (i = 0; i<n; i++) { if (b[i] == min) c[i] = n; else c[i] = 0; } for (i = 0; i<n; i++) { if (b[i]>max) max = b[i]; } for (i = 0; i<n; i++) { if (b[i] == max) c[i] = -2; } }
四.得分和总分。得总得分输出在运行几次循环的外边,只能输出最后总得分。
void main() { int i,c[50],n,num[50]={0}; //将每个人的成绩累加 printf("********************\n*得分为: *\n"); for (i = 0; i<n; i++) printf("* %2d *\n", c[i]); printf("********************\n"); //输出每轮成绩 } printf("********************\n*总得分为: *\n"); for (i = 0; i<n; i++) printf("* %2d *\n", mun[i]); printf("********************\n"); }
我俩认真编程的合影
程序的设计过程请见苏钰涵同学的博客
http://home.cnblogs.com/u/syh2013040101006/
代码已上传到coding
关于我上传的结对编程 开发项目不在这次作业范围