注册 登录
编程论坛 C++教室

四则运算的编程 苦恼中~~

刘浩哥 发布于 2011-03-08 10:21, 1620 次点击
制作一个可供小学数学四则运算程序,能根据输入题数出题,判断做题是否正确,最后计算分数。
我还不知道从哪下手,各位高手们,指点一下吧。
我的C还不到半年,所以来求助了!
11 回复
#2
刘浩哥2011-03-08 10:35
没人理我   我先给自己一个回复吧。
各位大哥大姐,我只要一个最简单的就行,哪管先给我点思路,我才学了C  都是些简单的东西,不需要全面的,能运行就可以,我理解  讲给老师就OK!
#3
Amy_huyier2011-03-08 11:58
定义两个变量。一个表示运算符,一个表示操作数。
用随机函数产生即可。


其它就不说了
#4
Amy_huyier2011-03-08 12:00
还是给你发一个参考吧
程序代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//函数声明
int GetOperator();    //随机返回运算符 0表示+,1表示-,2表示×,3表示/
int GetNumber();      //随机返回一个10以内的数
void Display(int num1,int num2,int oper);    //根据参数输出算式,其中num1,num2表示运算数,oper表示运算符
double GetAnswer(int num1,int num2,int oper);  //根据参数返回运算结果,其中num1,num2表示运算数,oper表示运算符
void main()
{
    srand((unsigned)time(NULL));
    int num1,num2;        //表示运算的两个数
    num1=GetNumber();
    num2=GetNumber();
    int oper;           //表示运算符
    oper=GetOperator();
    Display(num1,num2,oper);
    double ans=GetAnswer(num1,num2,oper);  //获取答案
    double tmp;
    scanf("%lf",&tmp);   //用户输出答案
    if(tmp==ans)
        printf("答案正确\n");
    else
        printf("答案错误\n");
}

//随机返回运算符 0表示+,1表示-,2表示×,3表示/
int GetOperator()
{
    return rand()%4;
}

//随机返回一个10以内的数
int GetNumber()
{
    return rand()%11;
}

//根据参数输出算式,其中num1,num2表示运算数,oper表示运算符
void Display(int num1,int num2,int oper)
{
    char ch;        //表示运算符的字符
    switch(oper)
    {
    case 0:
        ch='+';break;
    case 1:
        ch='-';break;
    case 2:
        ch='*';break;
    case 3:
        ch='/';break;
    }
    printf("%d%c%d=",num1,ch,num2);
}

//根据参数返回运算结果,其中num1,num2表示运算数,oper表示运算符
double GetAnswer(int num1,int num2,int oper)
{
    double ans;
    switch(oper)
    {
    case 0:
        ans=num1+num2;break;
    case 1:
        ans=num1-num2;break;
    case 2:
        ans=num1*num2;break;
    case 3:
        ans=(double)num1/num2;break;
    }
    return ans;
}

#5
hellovfp2011-03-08 13:20
楼上的,楼主正等着你的程序好交作业,
学了半年的C,连这个都不会,偶真不知道你是怎么学的。
#6
刘浩哥2011-03-08 14:34
呵呵 ,说来惭愧啊~~
#7
刘浩哥2011-03-08 14:37
恩,程序我用了,一切OK,谢谢你的回答,不知道这里有群没有,我想加一个关于这方面的群!
#8
phoebe07282011-03-08 20:10
我学了2年  还没思路。。。这就是简单的计算器了 谢谢楼主了  哈哈哈
#9
phoebe07282011-03-08 20:20
那么像  3×4+2/4-9  这种怎么实现呢??加上括号呢
#10
phoebe07282011-03-08 20:32
不过LZ还是用栈吧。。。还有case语句表示符号时是不是不要用数字,可以用字母。。。
#11
Amy_huyier2011-03-09 11:33
以下是引用phoebe0728在2011-3-8 20:20:44的发言:

那么像  3×4+2/4-9  这种怎么实现呢??加上括号呢



求解表达式,常规方法就是用栈。数据结构里有。建两个栈,一个操作数栈,一个运算符栈。依次遍历字符串,根据优先级,就可以求解了。
#12
Amy_huyier2011-03-09 11:38
以下是引用刘浩哥在2011-3-8 14:37:25的发言:

恩,程序我用了,一切OK,谢谢你的回答,不知道这里有群没有,我想加一个关于这方面的群!


这个只是个10以内整数的四则运算。
如果要扩展范围,只用在函数int GetNumber()中修改求余那部分就行了。
1