| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 846 人关注过本帖
标题:[求助]请高手找一下该程序的错误
只看楼主 加入收藏
liujianying
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2005-8-31
收藏
得分:0 
谢谢哦,能否告诉我,在这个程序里面总么才能使提供的题目变成三个数运算,比如(3+4)+5=?
2005-09-07 17:39
jackrain
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2005-9-4
收藏
得分:0 
每次随机数生成3个就行了,不过如果要加括号的话就比较麻烦一些了。

真的很怀疑原来的程序是你写的?

程序和身体一样,健壮,再健壮! 我爱C++
2005-09-07 17:42
liujianying
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2005-8-31
收藏
得分:0 
你看一下我发给你的邮件
2005-09-07 17:56
liujianying
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2005-8-31
收藏
得分:0 
我改了这个程序,可以是三个数运算,可得出的结果是错误的,不知能否指出其中的错误?下面是我改了的程序:

/*引用函数库*/

#include<stdio.h>

#include <stdlib.h>

#include<time.h>

/*引用函数库结束*/

/*定义全局变量*/

char operation;/*进入相应模块的运算符*/

int loop;/*每次做题的次数*/

int rightAnswer;/*做题正确次数*/

int flag;/*函数调用出错标记为0表示正确,为1表示出错了*/

/*定义全局变量结束*/

/*定义函数*/

void OutputProblemType()

{

printf("*******************************\n");

printf("请你选择一个类型做题\n");

printf("1\t做加法(+)的题\n");

printf("2\t做减法(-)的题\n");

printf("3\t做乘法(*)的题\n");

printf("*******************************\n");

}

int AcceptUserInputChoice()

{

int userInput;

fflush(stdin);

scanf("%d",&userInput);

return userInput;

}

void CheckChoice(int i)

{

switch(i)

{

case 1: operation='+';break;

case 2: operation='-';break;

case 3: operation='*';break;

default : flag=1;

}

}

void ComeInModule()

{

int i;

i=AcceptUserInputChoice();

flag=0;

CheckChoice(i);

while(flag)

{

printf("*******************************\n\n");

printf("你刚才输入不合要求,请重新输入");

printf("\n\n*******************************\n");

i=AcceptUserInputChoice();

flag=0;

CheckChoice(i);

}

}

int ProduceRandom()

{

srand( (unsigned)time( NULL ) );

return rand();

}

int BringRandom(int seed)

{

srand(seed);

return rand();

}

int HomeRandom(int seed)

{

srand(seed);

return rand();

}

void OutputDoNumber()

{

int number[10]={1,3,5,8,10,15,18,20,30,50};

int i;

printf("*******************************\n");

printf("请你选择你做题次数\n");

for(i=0;i<10;i++)

{

printf("你要做%d次\n",number[i]);

}

printf("*******************************\n");

loop=AcceptUserInputChoice();

flag=1;

for(i=0;i<10;i++)

{

if(loop==number[i])

{

flag=0;

break;

}

}

while(flag)

{

printf("*******************************\n\n");

printf("你刚才输入不合要求,请重新输入");

printf("\n\n*******************************\n");

loop=AcceptUserInputChoice();

flag=1;

for(i=0;i<10;i++)

{

if(loop==number[i])

{

flag=0;

break;

}

}

}

}

void Outputexpression(int first,int second,int third,char oper)

{

printf("*******************************\n\n");

printf("%d%c%d%c%d=",first,oper,second,oper,third);

printf("\n\n*******************************\n");

}

void OutputRightAnswer(int trueAnswer)

{

printf("*******************************\n\n");

printf("正确答案是%d",trueAnswer);

printf("\n\n*******************************\n");

}

void DealUserAnswer(int first,int second,int third,char oper,int answer)

{

int trueAnswer;

switch(oper)

{

case '+':trueAnswer=first+second+third;break;

case '-':trueAnswer=first-second-third;break;

case '*':trueAnswer=first*second*third;break;

}

if(trueAnswer==answer)

{

rightAnswer++;

}

else

{

OutputRightAnswer(trueAnswer);

}

}

void BeginDo()

{

int userAnswer;

int time;

int firstRandomNumber;

int secondRandomNumber;

int thirdRandomNumber;

for(time=0;time<loop;time++)

{

firstRandomNumber=ProduceRandom();

secondRandomNumber=BringRandom(firstRandomNumber);

thirdRandomNumber=HomeRandom(secondRandomNumber);

Outputexpression(firstRandomNumber,secondRandomNumber,thirdRandomNumber,operation);

userAnswer=AcceptUserInputChoice();

DealUserAnswer(firstRandomNumber,secondRandomNumber,thirdRandomNumber,operation,userAnswer);

}

}

void EndDoOutRightNumber()

{

printf("*******************************\n");

printf("你做对了%d题\n",rightAnswer);

}

int IsOver()

{

printf("继续输入其它\n结束输入0\n");

printf("*******************************\n");

return AcceptUserInputChoice();

}

/*定义函数结束*/

/*程序开始处*/

main()

{

do

{

OutputProblemType();/*输出题目类型供用户选择*/

ComeInModule();/*根据用户的输入进入相应的模块*/

OutputDoNumber();/*输出每次做题目的次数供用户选择*/

BeginDo();/*开始做题*/

EndDoOutRightNumber();/*做题目输出做对的个数*/

}while(IsOver());/*是否结束程序*/

}

/*程序结束*/

2005-09-08 15:35
快速回复:[求助]请高手找一下该程序的错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036769 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved