| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4273 人关注过本帖
标题:对于输入英文数字(one+two这样)进行数学运算输出three的后续
只看楼主 加入收藏
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 20楼 TonyDeng
没有看到讲gets的,很多东西我04年上学时候学的,因为当时候开的这个C语言课程,但是不是专业课,教的不深入,学的也没有那么多,毕业后工作也不是这方面的,很多东西都模糊的印象,现在想重拾起来,重新再认真学学,所以现在写的东西,有时候更多的是我之前的记忆,霍顿的书上我还没看到这部分内容,看到第六章了,不过感觉有的东西也很老的。

我用的是C-Free 5.0的编译器
2015-07-20 13:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
C-Free不是编译器,只是一个IDE(综合设计环境),它通常是gcc编译器。

授人以渔,不授人以鱼。
2015-07-20 13:20
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 22楼 TonyDeng
。。谢谢,很多地方安全是小白,所以可能会闹不少看起来比较白痴或者低级的错误、笑话,各位多见谅。

不过这对于我本身而言,这个我不怕各位看到我这些,不怕暴漏出自己多么不懂,多么小白,出这么多问题,我慢慢学,一步步改吧,这样才能学到东西。就怕啥都捂着怕丢人,这个咱不怕,能学到东西才是实际的。

很感谢上面各位的指正和回复。 我一个问题看到论坛里这么多人注意,很开心,再次感谢各位。

其实上面的问题输入英文进行计算的,我觉得本身没有多大意义,好好的阿拉伯数字不用,干嘛用英文,老外又不是不用阿拉伯数字。

我就是想通过这个问题,写写,然后暴漏出自己现在问题在哪,然后学着解决这部分,然后再找其他问题。

一直看书,照着例子写,靠记忆,不自己写不容易发现问题,我觉得。

最后再次感谢各位了哈,我先结贴了,因为这个帖子目的达到了
2015-07-20 13:36
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 22楼 TonyDeng
嗯,每次F5的时候,有提示编译器类型:MinGW
2015-07-20 13:38
我爱吃青菜
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:190
专家分:500
注 册:2015-3-29
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{   
    int a,b,c;   //存储英文对应的运算数字 
    char i;          //存储运算符 
    int  m,n,d;     //用于取余 
    int ag;         //控制再次运算 
    int j, k;     //j对应字符数组下标,k用于循环判断对应下标 
    const char string[][10]={
                              "zero",
                              "one",
                              "two",
                              "three",
                              "four",
                              "five",
                              "six",
                              "seven",
                              "eight",
                              "nine",
                              "ten",
                              "eleven",
                              "twelve",
                              "threeteen",
                              "fourteen",
                              "fifteen",
                              "sixteen",
                              "seventeen",
                              "eighteen",
                              "nineteen",
                              };           
    char str1[10], str2[10];                      
    
    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=='+')
        {
            fflush(stdin);//清空输入缓冲 
            printf("请输入第一个数字,然后按Enter\n\n");
            gets(str1);
            for(j=0;j<10;j++)       
            {                 
               if(strcmp(str1,string[j])==0)
               {
                      a = j; 
                   break;
               }                    
            }
            printf("a=%d",a);             
            printf("\n");
            printf("请输入第二个数字,然后按Enter\n\n");
            gets(str2);
            for(j=0;j<10;j++)                  
            {
                if(strcmp(str2,string[j])==0)
                {
                    b = j;
                    break;
                }
            }
            printf("b=%d",b);                                   
            printf("\n");
            c = a + b;   //直接a+b就行了,不要函数了             
            printf("\n%s plus %s is %s\n\n",str1, str2, string[c]);
            getchar();
            printf("请输入1后Enter再次运算,或非1任意键后按Enter退出\n\n");
            scanf("%d",&ag);        
            getchar(); 
            printf("\n");
        }
    }while(1);
}
2015-07-20 13:42
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 25楼 我爱吃青菜
嗯,谢谢。
c=a+b;这个我用函数是为了学习函数调用这个东西,用这个简单的东西我容易理解,呵呵。
2015-07-20 13:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

// 英文数目对照表,每个字符串的下标即为其对应数值
const char* NumberList[] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };

// 程序入口函数
// 备注:
//   1.非vc编译器用scanf()/printf()等旧式库函数取代scanf()/printf_s()新式安全型函数
//   2.非vc没有_getch()函数[在conio.h头],自己用别的办法暂停程序
//   3._countof()[在stdlib.h头]是计算一个数组的元素数目,微软扩展
int main(void)
{
    char   theFirstWord[10];        // 第一个单词
    char   theSecondWord[10];       // 第二个单词
    char   operation;               // 运算符
    int    theFirst, theSecond;     // 运算数值
    double result;                  // 运算结果
    int    count;

    printf_s("请输入运算表达式(每项之间用空格分隔):\n");
    fflush(stdin);                  // 清空键盘输入缓冲区
    count = scanf_s("%s %c %s",
                    theFirstWord, _countof(theFirstWord),
                    &operation, 1,
                    theSecondWord, _countof(theSecondWord)
                   );
    if (count == 3)                 // scanf()函数族返回成功读取的项数,若不对应即为出错
    {
        // 翻译第一个单词为数值
        for (theFirst = 0; theFirst < _countof(NumberList) && (strcmp(theFirstWord, NumberList[theFirst]) != 0); ++theFirst)
        {
            ;
        }
        if (theFirst == _countof(NumberList))
        {
            theFirst = 0;
        }
        // 翻译第二个单词为数值
        for (theSecond = 0; theSecond < _countof(NumberList) && (strcmp(theSecondWord, NumberList[theSecond]) != 0); ++theSecond)
        {
            ;
        }
        if (theSecond == _countof(NumberList))
        {
            theSecond = 0;
        }
        // 进行运算
        result = 0;
        switch (operation)
        {
        case '+':
            result = theFirst + theSecond;
            break;
        case '-':
            result = theFirst - theSecond;
            break;
        case '*':
            result = theFirst * theSecond;
            break;
        case '/':
            if (theSecond != 0)
            {
                result = 1.0 * theFirst / theSecond;
            }
            break;
        default:
            break;
        }
        // 输出结果
        printf_s("%d %c %d = %.4f\n", theFirst, operation, theSecond, result);
    }
    else
    {
        printf_s("输入错误\n");
    }

    printf_s("\nPress any key to continue...");
    _getch();
    return EXIT_SUCCESS;
}


[ 本帖最后由 TonyDeng 于 2015-7-20 14:30 编辑 ]

授人以渔,不授人以鱼。
2015-07-20 14:04
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 25楼 我爱吃青菜
str1和str2只能输入zero和nine之间的,ten之后就不对了,你试试?
2015-07-20 14:19
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 27楼 TonyDeng
额,专业的就是专业的。。一步到位,考虑全面,而且程序简洁明了,我小白都看的清晰明了。。。
感谢,看你很少直接提供完整代码的,这次这么帮忙,很感谢!

手上有工作,先从头到尾看一遍,我先把手上活忙完,回来仔细看下。

[ 本帖最后由 wanglianyi1 于 2015-7-20 14:30 编辑 ]
2015-07-20 14:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
22楼改了一下,不用fgets()了。

授人以渔,不授人以鱼。
2015-07-20 14:31
快速回复:对于输入英文数字(one+two这样)进行数学运算输出three的后续
数据加载中...
 
   



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

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