主题:[原创]【高手帮帮忙】这运算程序能运行,但结果停留时间太短,不能随机,请高手调试一下
[size=5]#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <time.h>
void menu();
int m,n;
int x,y,z;
int num,op;
int h,k,l,m,p=0,j=0,f=1;
int a,c,e,g,i;
int jiafa(int x,int y,int z);
int jianfa(int x,int y,int z);
int jiajianfa(int x,int y,int z);
int Getanum(int num);
char choice,ch ;
char cut;
void menu()
{
char choice,ch ;
do
{
do
{
system("cls");
printf("******************************\n");
printf("* 请选择你想要的题目类型 *\n");
printf("* *\n");
printf("* 按 1 键 加 法 *\n");
printf("* *\n");
printf("* 按 2 键 减 法 *\n");
printf("* *\n");
printf("* 按 3 键 随机加减运算 *\n");
printf("* *\n");
printf("* 按 4 键 程序说明 *\n");
printf("* *\n");
printf("* 按 0 键 退 出 *\n");
printf("******************************\n");
printf("\t\t\t请输入(1或2或3或4或0,然后按Enter键): ");
system("pause");
fflush(stdin);
choice=getchar();
}
while(choice!='1'&&choice!='2'&&choice!='3'&&choice!='4'&&choice!='5'&&choice!='0');
switch(choice)
{
case '1':
{
system("cls");
x=h;
y=k;
z=p;
jiafa(h,k,p);
break ;
}
case '2' :
{
system("cls");
x=h;
y=k;
z=p;
jianfa(h,k,p);
system("pause");
break ;
}
case '3' :
{
system("cls");
x=h;
y=k;
z=p;
jiajianfa(h,k,p);
system("pause");
break ;
}
case '4' :
{
printf("\t\t\t\t欢迎使用本程序\n\n\n");
printf("游戏说明:\n 部分\n ");
printf("游戏说明:\n 部分\n");
printf("游戏说明:\n 部分\n");
printf("游戏说明:\n 部分\n");
printf("祝你愉快!\n\n");
printf("按任意键返回主目录……\n");
getchar();
break ;
}
case '5' :
{
system("cls");
menu();
break ;
}
case '0' :
{
printf("确定要退出吗?(y/n):");
fflush(stdin);
ch=getchar();
if(ch=='y'||ch=='Y')exit(0);
else continue ;
}
}
}
while(5);
}
int jiafa(int x,int y,int z)
{
int m,n; /*声明函数*/
printf("%d+%d= ",x,y); /*格式输出,输出题目*/
m=x+y;
scanf("%d",&n);
if(m==n)
{
printf("恭喜你,答对了!!!!\n"); /*格式输出,输出判断*/
z+=1;
}
else
{
printf("不好意思,你答错了!!!\n正确结果应该是:%d\n",m); /*格式输出,输出判断,及正确结果*/
z+=0;
}
return z;
}
int jianfa(int x,int y,int z) /*定义函数*/
{
int m,n; /*声明函数*/
printf("%d-%d= ",x,y); /*格式输出,输出题目*/
m=x-y;
scanf("%d",&n); /*格式输入,解答题目*/
if(m==n) /*if语句*/
{
printf("恭喜你,答对了!!!!\n"); /*格式输出,输出判断*/
z+=1; /*分数*/
}
else
{
printf("不好意思,你答错了!!!\n正确结果应该是:%d\n",m); /*格式输出,输出判断,及正确结果*/
z+=0; /*分数*/
}
return z; /*分数的返回*/
}
int jiajianfa(int x,int y,int z)
{
num = 100;//使得下面的while循环成立即可
while(!(num>0&&num<100))//只接受100以内的题目数
for(i=0;i<num;i++)//每次出题开始
{
e = Getanum(i)%10;//第一个操作数
g = Getanum(e)%10;//第二个
op = (Getanum(e+g)+g)/e%2;//产生符号 +或者-
switch(op)
{
case 0://+
if(e+g>10)//超过10重新来
{
i--;
break;
}
else
{
printf("%d : %d + %d = ",i+1,e,g);//出题
scanf("%d",&c);//取输入的结果
if(c != e+g)//答案错误
{
printf("答案错误!\n");
printf("正确结果%d\n",c);
}
else//正确答案鼓励一下
{
printf("恭喜你,答对了!\n");
}
}
break;
case 1:
if(g>e)//保证e>g 使得不出现负数
{
e=e+g;
g=e-g;
e=e-g;
}
printf("%d : %d - %d = ",i+1,e,g);//出题
scanf("%d",&c);//取结果
if(c != e-g)
{
printf("答案错误!\n");
printf("正确结果%d\n",c);
}
else
{
printf("恭喜你,答对了!\n");
}
}
}
}
int Getanum(int num)
{
int a; //定义局部变量
srand(num*num+(double)microtime()*1000000); //设置随机数种子
randval = rand();
a=(rand()+num)%10; //产生10以内的随机数
return a; //返回一个随机数
}
main()
{
int h,k,l,m,p=0,j=0,f=1;
char cut,sele;
printf("************************************************\n");
printf("* *\n");
printf("* 欢迎使用算术运算程序 *\n");
printf("* *\n");
printf("* 按 s 键 开 始 *\n");
printf("* *\n");
printf("* 按 q 键 退 出 *\n");
printf("* *\n");
printf("************************************************\n");
printf("\t\t\t请输入: ");
fflush(stdin);
sele=getchar();
if(sele=='s')
{
menu();
}
else
{
exit(0);
}
srand( (unsigned)time( NULL ) );
system("cls");
for(m=1;m<=1000;m++)
{
if(f>1000)
break;
else
{
h=rand()%100;
k=rand()%100;
l=rand()%2;
if((h>=k)&&(h+k<=1000))
{
f++;
printf("第%d题\n",++j);
if(l==0)
p=jianfa(h,k,p);
else
p=jiafa(h,k,p);
}
else
continue;
printf("是否继续答题?按y+Enter键继续,n键+Enter键退出.\n");
flushall();
scanf("%c",&cut);
if(cut=='n')
break;
}
}
printf("************统计*************\n");
printf("共做%d题,做对%d道,做错%d道,你好厉害哦,请继续努力!!!\n",j,p/10,j-p/10);
printf("最后得分为%d分.\n",p);
}[/size][/size]
#include<stdlib.h>
#include<string.h>
#include <time.h>
void menu();
int m,n;
int x,y,z;
int num,op;
int h,k,l,m,p=0,j=0,f=1;
int a,c,e,g,i;
int jiafa(int x,int y,int z);
int jianfa(int x,int y,int z);
int jiajianfa(int x,int y,int z);
int Getanum(int num);
char choice,ch ;
char cut;
void menu()
{
char choice,ch ;
do
{
do
{
system("cls");
printf("******************************\n");
printf("* 请选择你想要的题目类型 *\n");
printf("* *\n");
printf("* 按 1 键 加 法 *\n");
printf("* *\n");
printf("* 按 2 键 减 法 *\n");
printf("* *\n");
printf("* 按 3 键 随机加减运算 *\n");
printf("* *\n");
printf("* 按 4 键 程序说明 *\n");
printf("* *\n");
printf("* 按 0 键 退 出 *\n");
printf("******************************\n");
printf("\t\t\t请输入(1或2或3或4或0,然后按Enter键): ");
system("pause");
fflush(stdin);
choice=getchar();
}
while(choice!='1'&&choice!='2'&&choice!='3'&&choice!='4'&&choice!='5'&&choice!='0');
switch(choice)
{
case '1':
{
system("cls");
x=h;
y=k;
z=p;
jiafa(h,k,p);
break ;
}
case '2' :
{
system("cls");
x=h;
y=k;
z=p;
jianfa(h,k,p);
system("pause");
break ;
}
case '3' :
{
system("cls");
x=h;
y=k;
z=p;
jiajianfa(h,k,p);
system("pause");
break ;
}
case '4' :
{
printf("\t\t\t\t欢迎使用本程序\n\n\n");
printf("游戏说明:\n 部分\n ");
printf("游戏说明:\n 部分\n");
printf("游戏说明:\n 部分\n");
printf("游戏说明:\n 部分\n");
printf("祝你愉快!\n\n");
printf("按任意键返回主目录……\n");
getchar();
break ;
}
case '5' :
{
system("cls");
menu();
break ;
}
case '0' :
{
printf("确定要退出吗?(y/n):");
fflush(stdin);
ch=getchar();
if(ch=='y'||ch=='Y')exit(0);
else continue ;
}
}
}
while(5);
}
int jiafa(int x,int y,int z)
{
int m,n; /*声明函数*/
printf("%d+%d= ",x,y); /*格式输出,输出题目*/
m=x+y;
scanf("%d",&n);
if(m==n)
{
printf("恭喜你,答对了!!!!\n"); /*格式输出,输出判断*/
z+=1;
}
else
{
printf("不好意思,你答错了!!!\n正确结果应该是:%d\n",m); /*格式输出,输出判断,及正确结果*/
z+=0;
}
return z;
}
int jianfa(int x,int y,int z) /*定义函数*/
{
int m,n; /*声明函数*/
printf("%d-%d= ",x,y); /*格式输出,输出题目*/
m=x-y;
scanf("%d",&n); /*格式输入,解答题目*/
if(m==n) /*if语句*/
{
printf("恭喜你,答对了!!!!\n"); /*格式输出,输出判断*/
z+=1; /*分数*/
}
else
{
printf("不好意思,你答错了!!!\n正确结果应该是:%d\n",m); /*格式输出,输出判断,及正确结果*/
z+=0; /*分数*/
}
return z; /*分数的返回*/
}
int jiajianfa(int x,int y,int z)
{
num = 100;//使得下面的while循环成立即可
while(!(num>0&&num<100))//只接受100以内的题目数
for(i=0;i<num;i++)//每次出题开始
{
e = Getanum(i)%10;//第一个操作数
g = Getanum(e)%10;//第二个
op = (Getanum(e+g)+g)/e%2;//产生符号 +或者-
switch(op)
{
case 0://+
if(e+g>10)//超过10重新来
{
i--;
break;
}
else
{
printf("%d : %d + %d = ",i+1,e,g);//出题
scanf("%d",&c);//取输入的结果
if(c != e+g)//答案错误
{
printf("答案错误!\n");
printf("正确结果%d\n",c);
}
else//正确答案鼓励一下
{
printf("恭喜你,答对了!\n");
}
}
break;
case 1:
if(g>e)//保证e>g 使得不出现负数
{
e=e+g;
g=e-g;
e=e-g;
}
printf("%d : %d - %d = ",i+1,e,g);//出题
scanf("%d",&c);//取结果
if(c != e-g)
{
printf("答案错误!\n");
printf("正确结果%d\n",c);
}
else
{
printf("恭喜你,答对了!\n");
}
}
}
}
int Getanum(int num)
{
int a; //定义局部变量
srand(num*num+(double)microtime()*1000000); //设置随机数种子
randval = rand();
a=(rand()+num)%10; //产生10以内的随机数
return a; //返回一个随机数
}
main()
{
int h,k,l,m,p=0,j=0,f=1;
char cut,sele;
printf("************************************************\n");
printf("* *\n");
printf("* 欢迎使用算术运算程序 *\n");
printf("* *\n");
printf("* 按 s 键 开 始 *\n");
printf("* *\n");
printf("* 按 q 键 退 出 *\n");
printf("* *\n");
printf("************************************************\n");
printf("\t\t\t请输入: ");
fflush(stdin);
sele=getchar();
if(sele=='s')
{
menu();
}
else
{
exit(0);
}
srand( (unsigned)time( NULL ) );
system("cls");
for(m=1;m<=1000;m++)
{
if(f>1000)
break;
else
{
h=rand()%100;
k=rand()%100;
l=rand()%2;
if((h>=k)&&(h+k<=1000))
{
f++;
printf("第%d题\n",++j);
if(l==0)
p=jianfa(h,k,p);
else
p=jiafa(h,k,p);
}
else
continue;
printf("是否继续答题?按y+Enter键继续,n键+Enter键退出.\n");
flushall();
scanf("%c",&cut);
if(cut=='n')
break;
}
}
printf("************统计*************\n");
printf("共做%d题,做对%d道,做错%d道,你好厉害哦,请继续努力!!!\n",j,p/10,j-p/10);
printf("最后得分为%d分.\n",p);
}[/size][/size]