我只想知道这个C语言代码哪里错了- -。。求大神。。出来的乘法式子乘积会大于300
题目是:300以内的四则运算。帮助某小学数学老师出试卷。随机生成2个300以内的正整数或零,随机计算+、-、*或/,答案也必须是300以内的正整数或零。共出50道题目,不...
题目是:
300以内的四则运算。帮助某小学数学老师出试卷。随机生成2个300以内的正整数或零,随机计算+、-、*或/,答案也必须是300以内的正整数或零。共出50道题目,不能出现重复题目,并将题目写入文件。
#include"stdio.h"
#include"time.h"
void main()
{ int a,b,i,c,x;
FILE*fp; fp=fopen("question.txt","w");
srand(time(NULL));
for(i=0;i<50;i++)
{
loop: a=rand()/109;
b=rand()/109;
c=rand()%4;
if(c==0)
if(a+b<300) fprintf(fp,"%d+%d=\n",a,b);
else
goto loop;
else if(c==1)
if(a-b>0) fprintf(fp,"%d-%d=\n",a,b);
else
goto loop;
else if(c==2)
{
x=a*b;
if(x<300)
fprintf(fp,"%d*%d=\n",a,b);
else
goto loop;
}
else if(c==3)
if(a>b&&a%b==0) fprintf(fp,"%d/%d=\n",a,b);
else
goto loop;
}
} 展开
300以内的四则运算。帮助某小学数学老师出试卷。随机生成2个300以内的正整数或零,随机计算+、-、*或/,答案也必须是300以内的正整数或零。共出50道题目,不能出现重复题目,并将题目写入文件。
#include"stdio.h"
#include"time.h"
void main()
{ int a,b,i,c,x;
FILE*fp; fp=fopen("question.txt","w");
srand(time(NULL));
for(i=0;i<50;i++)
{
loop: a=rand()/109;
b=rand()/109;
c=rand()%4;
if(c==0)
if(a+b<300) fprintf(fp,"%d+%d=\n",a,b);
else
goto loop;
else if(c==1)
if(a-b>0) fprintf(fp,"%d-%d=\n",a,b);
else
goto loop;
else if(c==2)
{
x=a*b;
if(x<300)
fprintf(fp,"%d*%d=\n",a,b);
else
goto loop;
}
else if(c==3)
if(a>b&&a%b==0) fprintf(fp,"%d/%d=\n",a,b);
else
goto loop;
}
} 展开
2个回答
展开全部
优化了你的程序
一、去除goto语句
二、变if为switch
三、按原题意生成数据
四、优化生成算式代码
#include"stdio.h"
#include"time.h"
#include"stdlib.h"
int main()
{
int i;
FILE*fp; fp=fopen("question.txt","w");
if(fp==NULL)
{
printf("open file error\n");
return -1;
}
srand(time(NULL));
i=0;
while(i<50)
{
int a,b,c;
a=rand()%300;
b=rand()%300;
c=rand()%4;
switch(c)
{
case 0:
if(a+b<300)
{
fprintf(fp,"%3d + %3d=\n",a,b);
i++;
}
break;
case 1:
if(a-b>0)
fprintf(fp,"%3d - %3d=\n",a,b);
else
fprintf(fp,"%3d - %3d=\n",b,a);
i++;
break;
case 2:
if(a*b<300)
{
fprintf(fp,"%3d * %3d=\n",a,b);
i++;
}
break;
default: //case 3
if(b&&a%b==0)
{
fprintf(fp,"%3d / %3d=\n",a,b);
i++;
}
else
if(a&&b%a==0)
{
fprintf(fp,"%3d / %3d=\n",b,a);
i++;
}
}
}
fclose(fp);
return 0;
}
不要执着自己的代码错在哪里了!
一、去除goto语句
二、变if为switch
三、按原题意生成数据
四、优化生成算式代码
#include"stdio.h"
#include"time.h"
#include"stdlib.h"
int main()
{
int i;
FILE*fp; fp=fopen("question.txt","w");
if(fp==NULL)
{
printf("open file error\n");
return -1;
}
srand(time(NULL));
i=0;
while(i<50)
{
int a,b,c;
a=rand()%300;
b=rand()%300;
c=rand()%4;
switch(c)
{
case 0:
if(a+b<300)
{
fprintf(fp,"%3d + %3d=\n",a,b);
i++;
}
break;
case 1:
if(a-b>0)
fprintf(fp,"%3d - %3d=\n",a,b);
else
fprintf(fp,"%3d - %3d=\n",b,a);
i++;
break;
case 2:
if(a*b<300)
{
fprintf(fp,"%3d * %3d=\n",a,b);
i++;
}
break;
default: //case 3
if(b&&a%b==0)
{
fprintf(fp,"%3d / %3d=\n",a,b);
i++;
}
else
if(a&&b%a==0)
{
fprintf(fp,"%3d / %3d=\n",b,a);
i++;
}
}
}
fclose(fp);
return 0;
}
不要执着自己的代码错在哪里了!
展开全部
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void swapInt(int &x,int &y);
void main()
{
int a,b,i,c,x;
FILE*fp;
fp=fopen("question.txt","w");
srand(time(NULL));
for(i=0;i<50;i++)
{
loop:
a=rand()/109;
b=rand()/109;
c=rand()%9;
if(c == 0)
{
if(a+b<300)
fprintf(fp,"%d+%d=\n",a,b);
else
goto loop;
}
else if(c == 1)
{
if(a-b>0)
fprintf(fp,"%d-%d=\n",a,b);
else
goto loop;
}
else if(c == 2)
{
x=a*b;
int n = 0;
while(x > 300)
{
if(!n) a /= 2;
else b /= 2;
x = a*b;
}
if(x<300)
fprintf(fp,"%d×%d=\n",a,b);
else
goto loop;
}
else if(c==3)
{
if(a < b)
swapInt(a,b);
if((a % b) == 0)
fprintf(fp,"%d÷%d=\n",a,b);
else goto loop;
}
}
}
void swapInt(int &x,int &y)
{
int a = x;
x = y;
y = a;
}
#include <stdio.h>
#include <time.h>
void swapInt(int &x,int &y);
void main()
{
int a,b,i,c,x;
FILE*fp;
fp=fopen("question.txt","w");
srand(time(NULL));
for(i=0;i<50;i++)
{
loop:
a=rand()/109;
b=rand()/109;
c=rand()%9;
if(c == 0)
{
if(a+b<300)
fprintf(fp,"%d+%d=\n",a,b);
else
goto loop;
}
else if(c == 1)
{
if(a-b>0)
fprintf(fp,"%d-%d=\n",a,b);
else
goto loop;
}
else if(c == 2)
{
x=a*b;
int n = 0;
while(x > 300)
{
if(!n) a /= 2;
else b /= 2;
x = a*b;
}
if(x<300)
fprintf(fp,"%d×%d=\n",a,b);
else
goto loop;
}
else if(c==3)
{
if(a < b)
swapInt(a,b);
if((a % b) == 0)
fprintf(fp,"%d÷%d=\n",a,b);
else goto loop;
}
}
}
void swapInt(int &x,int &y)
{
int a = x;
x = y;
y = a;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询