求一段C++程序,300分,大家帮帮忙
1.《我猜!我猜!我猜猜猜!》游戏要求:用户希望开发一个新游戏。游戏面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
要求:
(1)只出10道题,每题10分,程序结束时显示游戏参与者得分;
(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
(3)每道题游戏参与者有三次机会输入答案,当游戏参与者输入错误答案时,提醒游戏参与者重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,游戏参与者第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
(5)当游戏参与者输入了正确得数后,随机显示评价结果,例如“Right!”、“Correct!”、“You got it!”、“That's the answer!”、“Bingo!”, “Gaoging!”等,若答案错误,则按照格式“No, the answer is …”输出答案。
补充:必须用C++,而且是要和我的问题要求完全相符的,如果真的写出来了,我还可以再送分的,急用,很急。。。
追问:恩 非常感谢。辛苦你了,不过你这个程序,倾向于只用了C++的输入输出,本质上还是C的程序。离我的要求有一定差距。。没有用到类,或者窗口界面啊。 。。。你这么辛苦,我一定会给你一定分数的,请放心,咱不缺积分。。。要是你能改进一下就更好了。。
答案:兄弟,可要采纳我呀, 写的辛苦的。 嘻嘻 #include <iostream>
#include <time.h>
#define ADD 1
#define SUB 0 //后来发现没用上 嘻嘻
using namespace std;
//产生题目,并要求输入答案,并且返回 回答是是否正确
int RandTiMu();
int main()
{
int zongfenshu=0;//总分数
//用系统时间当种子,对随机函数进行初始化
srand( (unsigned)time( NULL ) );
for (int i=0;i<10;++i)
{
switch (RandTiMu())
{
case 1:
zongfenshu+=10;
break;
case 2:
zongfenshu+=7;
break;
case 3:
zongfenshu+=5;
break;
}
}
cout<<"你的总成绩是:"<<zongfenshu<<endl;
return 0;
}
int RandTiMu()
{
int ia=0,ib=0,ic=0,iFuHao;
int num;//保存临时输入的答案
bool bWhlie=true;//用于结束循环
while(bWhlie)//用于随机生成题目
{
ia=rand()%51;
ib=rand()%51;
iFuHao=rand()%2;
if(iFuHao==ADD)//加法
ic=ia+ib;
else //减法
ic=ia-ib;
if (ic>=0&&ic<=50)
bWhlie=false;
}
for (int i=1;i<4;++i)
{
cout<<"请输入算式 "<<ia<<(iFuHao?'+':'-')<<ib<<"= 的答案:";
cin>>num;
if (num==ic)
{
switch (rand()%6)
{
case 0:
cout<<"Right!"<<endl;
break;
case 1:
cout<<"Correct!"<<endl;
break;
case 2:
cout<<"You got it!"<<endl;
break;
case 3:
cout<<"That's the answer!"<<endl;
break;
case 4:
cout<<"Bingo!"<<endl;
break;
case 5:
cout<<"Gaoging!"<<endl;
break;
}
return i;
}
else if(i!=3)
{
cout<<"你小子要加油啦,请重新输入答案."<<endl;
}
else
{
cout<<"算式 "<<ia<<(iFuHao?'+':'-')<<ib<<"= 正确的答案是"<<ic<<endl;
cout<<"你已经错过3次机会了,请回答下题。"<<endl;
}
}
return 0;
}
控制台程序还是窗体程序。
光那两个++都很头疼了,用MFC可以实现,,,MFC刚学,,如果用VB的话就很简单,,300分,可忘而不可及,唉
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
void getQuestion(int *a,int *b,char *c) { //获取题目,a为第一个操作数,b为第二个操作数,c为操作符
time_t t;//用于获取系统时间
int c1,r;//用于确定运算符号
srand((unsigned)time(&t));//取得系统时间,并将其转换为随机数序列的最小起点
while(1) {
*a = rand()%50;//随机产生1个50以内的整数给a
*b = rand()%50;//随机产生1个50以内的整数给b
c1 = rand()%4;//随机产生1个4以内的整数给c1,由c1的奇偶性决定运算法
//c1为偶数则运算法为加法,c1为奇数为减法(也可以设c1为奇数为加法)
if(c1%2 == 0) *c = '+';
else *c = '-';
//计算运算结果
if(*c == '+') r = *a + *b;
else r = *a - *b;
if(r >= 0 && r <= 50) break; //运算结果在0--50以内则合法。
}
}
void display(int score) {//输出总成绩等级
printf("\n\n\n实际得分:%d\n\n",score);
if(score >= 90) printf("\n\n\n 聪明!\n\n");
else if(score < 90 && score >= 80) printf("\n\n\n 很好!\n\n");
else if(score < 80 && score >= 70) printf("\n\n\n 好!\n\n");
else if(score <70 && score >= 60) printf("\n\n\n 及格。\n\n");
else printf("\n\n\n 再来一次。\n\n");
}
void main() {
int a,b;//用于存放两个操作数
int r;//用于存储答题结果
int i,n;
int score;//记录得分
char c;//用于存放运算符
score = 0;
for(i = 0;i < 10;i++) {
getQuestion(&a,&b,&c);//随机产生题目
n = 0;//记录回答同一问题的次数
while(1) {
printf("%d %c %d = ",a,c,b);
scanf("%d",&r);//回答问题
n++;
if(n == 3) break;//回答次数超过3次转到下一题
if(c == '+') { //加法运算
if((a + b) == r) { //回答正确
printf("√\n");
if(n == 1) {
score = score + 10;
break;
}
else if(n == 2) {
score = score + 7;
break;
}
else if(n == 3) {
score = score + 5;
break;
}
}
else printf("错了,再来一遍。\n");
}
else { //减法运算
if((a - b) == r) { //回答正确
printf("√\n");
if(n == 1) {
score = score + 10;
break;
}
else if(n == 2) {
score = score + 7;
break;
}
else if(n == 3) {
score = score + 5;
break;
}
}
else printf("错了,再来一遍。\n");
}
}
//答完1题输出正确答案
if(n == 3) {
if(c == '+') printf("正确答案:%d\n",a+b);
else printf("正确答案:%d\n",a-b);
}
}
display(score);//显示得分等级
}
该代码在VC环境下编译运行。
VB 可以写吗
上一个:有VB程序编辑器吗?
下一个:怎样才能学好VB程序?