关于随机数 求大神指导

wong_nwu 2014-11-17 05:37:38
#include "stdio.h"
#include "stdlib.h"//srand,random
#include "time.h"//time(NULL)
#define RANGENUM 10//控制随机数的范围为0-100
void main()
{
char cFlag,cEnter;//定义循环变量,消除回车
cFlag='y';
int nGrade=0;//定义分数。
printf("考试开始\n");
printf("输入y开始计算,输入n退出。\n");
scanf("%c%c",&cFlag,¢er);
while(cFlag=='y'||cFlag=='Y')
{
int a[3];//定义3个随机数
char cOperator;//定义运算符号。
int nResult,nTrue;//定义计算结果、真实结果
srand(time(NULL)); // 让每次产生的随机数都不一样
for(int i=1;i<=3;i++) //产生10个随机数
a[i]=rand()%RANGENUM;//生成随机数,并利用取余数控制数值范围
//用随机数确定加减号并计算真实结果
if(a[0]%2==0)
{
cOperator='+';
nTrue=a[1]+a[2];
}//end if
else
{
//保证结果为非负数,即a[1]>=a[2]。
if(a[1]<a[2])
{
int t=a[1];
a[1]=a[2];
a[2]=a[1];
}//end if
cOperator='-';
nTrue=a[1]-a[2];
}//end else
//提示用户开始计算并输入答案
printf("请计算下面题目。\n %d %c %d = ",a[1],cOperator,a[2]);
//用户输入答案
scanf("%d%c",&nResult,¢er);
//判断计算结果是否正确
if(nTrue-nResult==0)
{
nGrade++;
printf("\n恭喜你!计算正确,分数加一。\n你现在的分数为%d。\n",nGrade);
printf("是否还要继续计算?输入y继续计算,输入n退出计算。\n");
}//end if
else
{
printf("\n好可惜~计算错误。\n你现在的分数为%d。\n",nGrade);
printf("是否还要继续计算?输入y继续计算,输入n退出计算。\n");
}//end else
//确定是否继续计算
scanf("%c%c",&cFlag,¢er);
}//end while
//输出分数
printf("本次计算结束。\n");
}


求大神指导
这段程序运行,成绩变量nGrade总是随机输出,而不是按照原本意图,正确加一,错误不变。
...全文
74 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wong_nwu 2014-11-17
  • 打赏
  • 举报
回复
改成功了,谢谢大神。
starytx 2014-11-17
  • 打赏
  • 举报
回复
int a[3];//定义3个随机数 char cOperator;//定义运算符号。 int nResult,nTrue;//定义计算结果、真实结果 srand(time(NULL)); // 让每次产生的随机数都不一样 for(int i=1;i<=3;i++) //产生10个随机数 -------------- 先发现了这个错误。定义了3个元素的数组,循环里越界访问了
wong_nwu 2014-11-17
  • 打赏
  • 举报
回复
改后试了下,还是不行啊
starytx 2014-11-17
  • 打赏
  • 举报
回复
srand(time(NULL)); 放在main开始试试

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧