小弟诚心泣拜给为大虾:"用C语言编写一个让电脑随机出一道四则运算题的程序.'

小弟诚心泣拜给为大虾:"用C语言编写一个让电脑随机出一道四则运算题的程序.'
程序让看者进行运算.答对了,输出"OK".答错了,输出"没关系",答错3次,给出正确答案!

我来
以下可以实现先乘除后加减
而且是随机出的一个表达式,比如
说程序随机产生:
58*59-24+12/5-2
你给出答案3次不对
程序给出答案符合你的要求:希望对
你有所帮助。你可以根据思路自己修
改你想要的参数,以便增加或者降低
运算难度。
你输入答案的时候用整数输入舍点小数部
分因为如果要输入浮点数,可能这辈子都
答不对,尽管也许就差那么0.000几或者
0.00001。
通过编译绝对稳当
以下是代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int n,i,m,time1=0;long answer1,answer;float a[10]; char c[2],str[10];
long result(float a[],char str[],int n);
begin:
time1=0;
srand(time(NULL));
n=(rand()%10)+3;
if(n/2)
n=n+1;
for(i=0;i<(n+1)/2;i++)
a[i]=rand()%300+1;
for(i=0;i<(n-1)/2;i++)
{
m=rand()%4;
switch(m)
{
case 0:str[i]='+';break;
case 1:str[i]='-';break;
case 2:str[i]='*';break;
case 3:str[i]='/';break;
}
}
printf("this is a text please show right answer\nyou have 3 times\nGOOD LUCK\n");
for(i=0;i<(n-1)/2;i++)
printf("%.2f%c",a[i],str[i]);
printf("%.2f",a[(n+1)/2-1]);
printf("\n");
printf("input your answer\n");
answer=result(a,str,n);
do
{
scanf("%ld",&answer1);
getchar();
time1++;
}while(answer1!=answer&&time1<=3);
if(answer==answer1)
printf("you are right\n");
if(answer!=answer1)
printf("sorry the right answer is %ld\n",answer);
printf("try again?Y/N\n");
scanf("%s",c);
if(c[0]=='y'||c[0]=='Y')
goto begin;
}
long result(float a[],char str[],int n)
{
int i,j,a1,b;
a1=(n-1)/2;
b=(n+1)/2;
for(i=0;i<a1;i++)
{
if(str[i]=='*')
{
a[i]=a[i]*a[i+1];
a1--;b--;
for(j=i;j<a1;j++)
str[j]=str[j+1];
for(j=i+1;j<b;j++)
a[j]=a[j+1];
i--;
}
if(str[i]=='/')
{
a[i]=a[i]/a[i+1];
a1--;b--;
for(j=i;j<a1;j++)
str[j]=str[j+1];
for(j=i+1;j<b;j++)
a[j]=a[j+1];
i--;
}
}
for(i=0;i<a1;i++)
{
if(str[i]=='+')
{
a[i]=a[i]+a[i+1];
a1--;b--;
for(j=i;j<a1;j++)
str[j]=str[j+1];
for(j=i+1;j<b;j++)
a[j]=a[j+1];
i--;
}
if(str[i]=='-')
{
a[i]=a[i]-a[i+1];
a1--;b--;
for(j=i;j<a1;j++)
str[j]=str[j+1];
for(j=i+1;j<b;j++)
a[j]=a[j+1];
i--;
}
}
return((long)a[0]);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-05-30
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#include <math.h>
#include <conio.h>

void main()
{ int s,d=0;
int a,b,c,z,v,m;
char ch[4]={'+','-','x','/'};
srand((unsigned)time(NULL));
m=100;
b=rand()%m;
printf("%d ",b);
z=b;
for(s=0;s<3;s++)
{a=rand()%4;b=rand()%m;
printf("%c %d ",ch[a],b);
if (a==0) {v=z+b;z=b;}
if (a==1) {v=z-b;z=b;}
if (a==2) {v=z*b;z=b;}
if (a==3) {v=z/b;z=b;}
}
printf("= ");
loop: scanf("%d",&c);
fflush(stdin);
if (c==v) {printf("OK!");goto end;}
while (c!=v && d++!=2)
{printf("it does not matter and try it again: ");
goto loop;
}

printf("the result is : %d",v);

end:getch();
}

是小朋友用的吧?六一快到,权当一份小礼物!
(目前还只能用顺序加减,也就是一般的计算器用法,还不能先乘除后加减。)本回答被提问者采纳
第2个回答  2007-05-30
这个……
会用C++写,不会用C写。。。

C语言编程——100以内的整数四则运算测试程序设计
int i, f;printf("确认随机出%d道题吗?(y确认):", N);if(getchar() != 'y')return;for(i = 0, f = 1; i < N; f ? i++ : 0) { timu[i].a = rand() % 100+1;timu[i].b = rand() % 100+1;timu[i].op = rand() % 4;if(timu[i].b == 0 && timu[i]...

用vb编写一个测试算术的小程序
呵呵,挣这100分真不容易啊 Private Declare Function timeGetTime Lib "winmm.dll" () As Long Dim k As Integer Dim iTime As Long Dim iStar As Boolean Private Function getIssue() As Integer '***加减乘除四则运算 Dim a As Integer, b As Integer, OP As String, m As String OP ...

相似回答
大家正在搜