广州大学学生实验报告
开课学院及实验室:计算机学院/电子信息楼 202x年 月 日
学 院 | 计算机 | 年级/专业/班 | 计科 | 姓名 | Great Macro | 学号 | |
实验课程名称 | 程序设计基础 | 成绩 | |||||
实验项目名称 | 实验4 程序设计基础应用实验 | 指导老师 |
(***(1)报告只能为文字和图片;(2)实验项目名称不能有任何改动;(3)必须填写正确的姓名和学号;否则会影响最后成绩的统计,后果自负***)
一、实验目的及要求
1.培养学生将实际问题转化为数学模型再用C语言编程解决该问题的综合应用方法;
2.训练学生灵活掌握本课程所学的有关章节知识;
3.掌握基本的数据结构知识和更多的计算方法;
4. 掌握模块化程序设计的方法。
二、实验设备与平台
1. 实验设备:计算机;
2. 平台:Windows操作系统,Visual C++ 6.0或Microsoft Visual Studio 2005/2008/2010/2012/2013/2015/2017/2019;或适合的C/C++编程环境。
三、实验内容
(下面3题选做2题)编写程序,解下列问题,然后把编写的程序代码和运行结果截图复制到题目后面的空白处。
1、掷骰子游戏
编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,投两枚骰子之后,计算点数之和。如果第一次投的点数和为7或11,则游戏者获胜;如果第一次投的点数和为2、3或12,则游戏者输;如果第一次投的点数和为4、5、6、8、9或10,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数时算是游戏者获胜。如果投掷7次仍未赚到该点数,则游戏者输。
#include <iostream> #include <ctime> using namespace std; int main() { int i, a[3], M; srand(time(0)); cout << "下面开始掷骰子游戏" << endl; a[0] = rand()%6 + 1; a[1] = rand()%6 + 1; a[2] = a[0] + a[1]; cout << "本次掷出点数分别为:" << a[0] <<"," << a[1] << endl; if(a[2] == 7 || a[2] == 11) { cout << "恭喜你,胜利了" << endl; } else if(a[2] == 2 || a[2] == 3 || a[2] == 12) { cout << "很遗憾,你输了" << endl; } else { M = a[2]; for(i = 0; i < 7; i++) { a[0] = rand()%6 + 1; a[1] = rand()%6 + 1; a[2] = a[0] + a[1]; cout << "本次掷出点数分别为:" << a[0] <<"," << a[1] << endl; if(a[2] == M) { cout << "恭喜你,胜利了" << endl; break; } } if(i >= 7) { cout << "很遗憾,你输了" << endl; } } return 0; }
2、如果将游戏规则改为:计算机“想”一个数作为一个骰子掷出的点数(在用户输入数据之前不显示该点数),用户从键盘输入一个数作为另一个骰子掷出的点数,再计算两点数之和。其余规则相同,然后请重新编写该程序。
#include <iostream> #include <ctime> using namespace std; int main() { int i, a[3], M; srand(time(0)); cout << "下面开始掷骰子游戏" << endl; a[0] = rand()%6 + 1; cout << "请输入点数(1~6):"; cin >> a[1]; a[2] = a[0] + a[1]; cout << "本次掷出点数分别为:" << a[0] <<"," << a[1] << endl; if(a[2] == 7 || a[2] == 11) { cout << "恭喜你,胜利了" << endl; } else if(a[2] == 2 || a[2] == 3 || a[2] == 12) { cout << "很遗憾,你输了" << endl; } else { M = a[2]; for(i = 0; i < 7; i++) { a[0] = rand()%6 + 1; cout << "请输入点数(1~6):"; cin >> a[1]; a[2] = a[0] + a[1]; cout << "本次掷出点数分别为:" << a[0] <<"," << a[1] << endl; if(a[2] == M) { cout << "恭喜你,胜利了" << endl; break; } } if(i >= 7) { cout << "很遗憾,你输了" << endl; } } return 0; }
3、要求能够运用多文件程序完成一个完整的程序功能操作流程。
输入一串字符,再输入一个指定字符,将字符串中删去指定字符再显示出来。要求程序把输入字符串、删除指定字符和显示字符串的功能分别在各自单独的.cpp文件中由外部函数来处理,主文件中的主函数只作调用各外部函数实现程序功能。
注意:由于分文件演示很复杂在博客表示出来,这里使用单文件,根据所学知识自行修改
#include <iostream> #include <cstring> using namespace std; // 输出函数 void input(char *s, char *a) { cout << "请输入一串字符:"; cin >> s; cout << "请输入一个指定要删除的字符:"; cin >> a; } // 删除函数 void del(char *s, char a) { int i, j, len; len = strlen(s); for(i = 0; i <= len; i++) { // 如果从是s[i]后面开始的字符往前挪完后,还有s[i] == a,需要重复进行 while(s[i] == a) { // 所有从s[i]后面开始的字符往前挪一个单位 for(j = i; j <= len - 1; j++) { s[j] = s[j + 1]; } } } } // 输出函数 void output(char *s) { int i = 0; while(s[i]) { cout << s[i]; i++; } cout << endl; } int main() { char a, s[50]; input(s, &a); del(s, a); output(s); return 0; }