| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4273 人关注过本帖
标题:对于输入英文数字(one+two这样)进行数学运算输出three的后续
只看楼主 加入收藏
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:36 
对于输入英文数字(one+two这样)进行数学运算输出three的后续
之前看了有个帖子出个了想法,就是输入英文数字进行数学运算,然后输出英文结果的题目。我自己写了下,出了点问题,运行没有错误,但是结果不正确,具体问题我提供加法部分的代码,麻烦各位看下是哪里不对
#include <stdio.h>
#include <stdlib.h>
int main(void)
{   double  a,b,c;   //存储英文对应的运算数字
    char i;          //存储运算符
    int  m,n,d;     //用于取余
    int ag;         //控制再次运算
    int j=0,k=0;     //j对应字符数组下标,k用于循环判断对应下标
    const char string[10][6]={
                               "zero",
                              "one",
                              "two",
                              "three",
                              "four",
                              "five",
                              "six",
                              "seven",
                              "eight",
                              "nine"
                              };           
    char str1[5]={"seven"};                       //存储输入的英文数字
    double jiafa(double x,double y);
    double jianfa(double x,double y);
    double chengfa(double x,double y);
    double chufa(double x,double y);
    int quyu(int x,int y);
    printf("这是一个十进制简单的计算器,欢迎使用\n\n");
    do
        {
        system("cls");                     //清屏   
        printf("请输入 + 选择加法运算\tEnter确认\n\n");   
        printf("请输入 - 选择减法运算\tEnter确认\n\n");
        printf("请输入 * 选择乘法运算\tEnter确认\n\n");
        printf("请输入 / 选择除法运算\tEnter确认\n\n");
        printf("请输入 %% 选择求余运算\tEnter确认\n\n");
        printf("----------------------------------\n\n");
        printf("请选择上述五种运算符后Enter,否则输入其他任意键后Enter确认退出\n\n");
        scanf("%c",&i);
        if(i=='0')
             break;
        printf("\n");
       if(i=='+')
       {
        printf("请输入第一个数字,然后按Enter\n\n");
        for(k=0;k<=5;k++)        //输入要运算的第一个英文数字   
            {                    //英文数字最多5个字符,故k<=5
                scanf("%c",str1);
            }
 //        getch();
 //     scanf("%lf",&a);
//        gets(str1);
        for(j=0;j<10;j++)    //循环判断输入的英文字符对应数字并赋值给a   
            {                //此段有点问题a得到的值不正确,固定数字
                if(strcmp(str1,string[j])==0)
                    a=j;              
            }
        printf("a=%d",a);             //验证第一个英文数字是否对应数字
        printf("\n");
        printf("请输入第二个数字,然后按Enter\n\n");
        for(k=0;k<=5;k++)              //输入要运算的第二个英文数字   
            {
                scanf("%c",str1);
            }
//      scanf("%lf",&b);
//      gets(str1);
        for(j=0;j<10;j++)              //循环判断输入的英文字符对应数字   
            {
                if(strcmp(str1,string[j])==0)
                    b=j;
            }
        printf("b=%d",b);            //验证第二个英文数字是否对应数字                        
        printf("\n");
           c=jiafa(a,b);                //调用加法函数并将结果赋值给c
        for(j=0;j<10;j++)               
        {   
            if(c==j)
                    {
                        printf("%s\n",string[j]);   
                    }
        }
        printf("他们的和是:%lf\n\n",c);
        getchar();
        printf("请输入1后Enter再次运算,或非1任意键后按Enter退出\n\n");
        scanf("%d",&ag);        
        getchar();
        printf("\n");
       }

[ 本帖最后由 wanglianyi1 于 2015-7-20 11:55 编辑 ]
搜索更多相关主题的帖子: 英文数字 include double 数学 
2015-07-20 11:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
这样写出来结果了,也是不行的。

授人以渔,不授人以鱼。
2015-07-20 11:45
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
程序有很多注释,因为初学嘛,这样多写我容易理解点。多见谅各位。
我用的定义一个常量字符串数组string,用scanf循环输入要数学运算的两个英文数字存到str1数组中
然后用strcmp判断输入的英文数字和常量数组中的哪一个相等,就把对应的数组元素下标赋值给a或b,来实现输入英文数字转换成阿拉伯数字。最后的输入结果类似,但还没有考虑好两位数的运算,不着急这个,先把个位数运算弄好再说
2015-07-20 11:46
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 2楼 TonyDeng
刚吃饭去了,我认为的问题应该是出现在判断输入的字符数组和常量字符数组相等这一块,不知道是不是,我打印了a和b的值显示的都是一个固定数字我很郁闷,不知道问题怎么造成的。我估计应该是我用的语法问题或者选择的函数或者说判断的算法不对。

[ 本帖最后由 wanglianyi1 于 2015-7-20 11:49 编辑 ]
2015-07-20 11:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你看谭的书啊?

授人以渔,不授人以鱼。
2015-07-20 11:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
就算不需考虑原始数是两位数以上,结果出现两位数怎么输出?这是原题就表述不清的。

授人以渔,不授人以鱼。
2015-07-20 11:52
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 6楼 TonyDeng
嗯,我还疏忽一个问题,这个是在我之前写的一个计算器的基础上修改的。后面输入结果C的格式没有修改对。

现在这个只能个位数运算,而且还不能是出现C是两位数的现象。我就先弄个最最简单的,就是尝试下思路,不合适了,后面再慢慢改。

我现在就是在上班之余空闲的时候琢磨下,所以有的地方很仓促,考虑不细致,只能慢慢完善,就是通过这样来多学点函数的用法。

我再多考虑考虑,谢谢你哈

没午休么?一会准备休息下,下午还好多事情做,忙完了再来搞这个。

[ 本帖最后由 wanglianyi1 于 2015-7-20 12:01 编辑 ]
2015-07-20 11:56
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 5楼 TonyDeng
不是啊,是在网上下的pdf文件:C语言入门经典(第四版).(美)霍顿.pdf,估计这个也是很老的文件了,很多知识和现在的C标准有点出入感觉。

[ 本帖最后由 wanglianyi1 于 2015-7-20 12:03 编辑 ]
2015-07-20 12:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你学到哪了?

授人以渔,不授人以鱼。
2015-07-20 12:18
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 9楼 TonyDeng
第六章,字符串和文本的应用
2015-07-20 12:31
快速回复:对于输入英文数字(one+two这样)进行数学运算输出three的后续
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037814 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved