回 帖 发 新 帖 刷新版面

主题:[原创]【高手帮帮忙】这运算程序能运行,但结果停留时间太短,不能随机,请高手调试一下

[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]

回复列表 (共1个回复)

沙发

你的 程序我是试了一下  发现不能运行,不知道你怎么能够运行这个程序。
 
你的程序有几处错误:1  m 重命名     可能还不止这个
                    2  你设计的随机数种子有点问题    
                    3  漏掉 return
                    4 你的代码太难看了懂,  编写规范点,要有缩进。 你先把你的代码整理了我再来帮你改。

我来回复

您尚未登录,请登录后再回复。点此登录或注册