| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4273 人关注过本帖
标题:对于输入英文数字(one+two这样)进行数学运算输出three的后续
只看楼主 加入收藏
我爱吃青菜
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:190
专家分:500
注 册:2015-3-29
收藏
得分:4 
char str1[5]={"seven"}; 

'\0'的位置呢?
程序代码:
for(k=0;k<=5;k++)        //输入要运算的第一个英文数字    
{                    //英文数字最多5个字符,故k<=5 
    scanf("%c",str1);
}
for(j=0;j<10;j++)    //循环判断输入的英文字符对应数字并赋值给a    
{                //此段有点问题a得到的值不正确,固定数字
    if(strcmp(str1,string[j])==0)
    a=j;              
}
printf("a=%d",a);

输入字符串str1是这样描述吗?a是int型还是double型?还有后面的b,c……
2015-07-20 12:43
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 11楼 我爱吃青菜
嗯,我改了str长度6,后面都是int,之前是在原来写的一个计算器上改的,所以有的变量声明类型忘记改了。

现在这个就算改对了也只能适应个位数的运算,而且结果也只能是个位数的。就是为了熟悉熟悉一些函数的用法。

现在主要问题是判断玩字符串相等,然后赋值给a这个位置不对,不知道啥问题造成的。后面的b同样问题。不管输入英文数字是几,
a和b的值都固定是:1094795585;不知道什么鬼。。

for(j=0;j<10;j++)    //循环判断输入的英文字符对应数字并赋值给a   
            {                //此段有点问题a得到的值不正确,固定数字
                if(strcmp(str1,string[j])==0)
                    a=j;              
            }
        printf("a=%d",a);             //验证第一个英文数字是否对应数字
2015-07-20 12:56
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 12楼 wanglianyi1
输入字符串我本来想用的gets,但是考虑如果输入超过str长度不就出问题了嘛,就弄了个循环用scanf一个一个字符输入
2015-07-20 12:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
暂且输出数值结果,先处理正确读入每个运算项的问题。

授人以渔,不授人以鱼。
2015-07-20 12:59
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 13楼 wanglianyi1
if这句strcmp判断两个字符串相等不知道对不对,用的,两个相等返回值是0吧,前大后小的话>0,前小后大是小于<0。对的吧?
2015-07-20 12:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
gets()和getchar()循环读,效果是一样的,都存在溢出的问题。

授人以渔,不授人以鱼。
2015-07-20 12:59
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 16楼 TonyDeng
哦,用循环控制输入的个数也会溢出么?
就是不太明白为啥判断两个字符串相等后,a和b的值不是对应的字符串数组的下标,而且一个固定的数字,而且很大的数字。。

[ 本帖最后由 wanglianyi1 于 2015-7-20 13:02 编辑 ]
2015-07-20 13:00
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:4 
str1既然是字符串数组怎么看到scanf("%c",str1);

剑栈风樯各苦辛,别时冰雪到时春
2015-07-20 13:01
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 18楼 林月儿
我用getchar看看,我原来以为scanf也是可以输入的,就是空格作为结束

[ 本帖最后由 wanglianyi1 于 2015-7-20 13:07 编辑 ]
2015-07-20 13:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用wanglianyi1在2015-7-20 13:00:54的发言:

哦,用循环控制输入的个数也会溢出么?


溢出是储存的空间不足,不是你从键盘得到多少数据,边界检查是看是否超过了储存空间的尺寸,循环时也要比对读入了多少个字符,这与gets()控制读入多少个字符是一样的。话说我也不知道你用的什么编译器,gets()这类的函数早已废弃不用了,你还在scanf()/gets()之类的,还把函数原型写在main()函数体内,霍顿的书第四版了,还这样教的?

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



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

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