| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 643 人关注过本帖
标题:代码运行不了,请各位帮吗看看。
只看楼主 加入收藏
zss427607
Rank: 1
等 级:新手上路
帖 子:124
专家分:3
注 册:2008-10-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
代码运行不了,请各位帮吗看看。
程序代码:
#include <stdio.h>
#include <ctype.h>
int main(void)
{
    float x[10],y[10],z;
    char q;
    int i,j,falg=0;
    printf("--简单计算器--\n");
    printf("--输入数据规则:1+1,输入时:1,+,1--\n");
    while (scanf("%s,%c,%s",&x,&q,&y))
    {
        for (i==0;x[i]!=0;i++)
        {
            if (i==0&&(x[i]!='+'||x[i]!='-'))
            {
                i++;
            continue;
            }
            if (x[i]='.')
            {
                falg++;
                if (falg>1)
                {
                    break;
                }
                else if (flag==1)
                {
                    continue;
                }
                j=isdigit(x[i]);
                if (j==0)
                {
                    break;
                }
            }
        }
        if (j!=0)
            printf("是数字\n");
            else
            printf("非数字\n");
    }
    return 0;
}
2012-08-31 17:48
血祭幻岚
Rank: 2
等 级:论坛游民
帖 子:29
专家分:72
注 册:2012-3-21
收藏
得分:4 
for (i==0;x[i]!=0;i++)这里,应为i=0吧
2012-08-31 17:55
zss427607
Rank: 1
等 级:新手上路
帖 子:124
专家分:3
注 册:2008-10-28
收藏
得分:0 
以下是引用血祭幻岚在2012-8-31 17:55:07的发言:

 for (i==0;x!=0;i++)这里,应为i=0吧
是的应该是i=0,但是改了好事不行呀。
2012-08-31 18:19
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:4 
除了上面所说的,还有你声明的是float x[10],y[10],z;
但是你底下输入的时候scanf("%s,%c,%s",&x,&q,&y);有两个问题
一个是%s和之前的float类型不符合,
还有一个x和y是数组,所以在scanf()中不需要加 &
2012-08-31 21:36
Dua瀚狼
Rank: 2
来 自:湖南长沙
等 级:论坛游民
帖 子:59
专家分:78
注 册:2012-3-11
收藏
得分:4 
char y[10], x[10];
for (i==0;x[i]!=0;i++)改为 for(i = 0; x[i] != 0; i++)
 while (scanf("%s, %c, %s", &x, &q, &y)) 改为  while (scanf("%s, %c, %s", x, &q, y))
只能找到这些,不知你的代码目的是什么?所以不知对错?

我怀旧,因为我看不到未来。
2012-09-01 00:56
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:4 
估计楼主的 x 和 y 其实是想用 char 数组吧。
2012-09-01 01:09
zss427607
Rank: 1
等 级:新手上路
帖 子:124
专家分:3
注 册:2008-10-28
收藏
得分:0 
谢谢各位的帮助,按照上面错误,修改后,还是不行?
上面代码想实现判断输入的x,y,是不是数字,是的话就进行基本的加减乘除运算,否则提示错误重新输入数据。
2012-09-01 05:52
包头师范学校
Rank: 2
等 级:论坛游民
帖 子:26
专家分:51
注 册:2012-8-24
收藏
得分:4 
程序代码:
#include <stdio.h>
#include <ctype.h>
int main(void)
{
    float x[10],y[10],z;
    char q;
    int i,j,flag=0;
    printf("--简单计算器--\n");
    printf("--输入数据规则:1+1,输入时:1,+,1--\n");
    while (scanf("%s,%c,%s",&x,&q,&y))
    {
        for (i=0;x[i]!=0;i++)
        {
            if (i==0&&(x[i]!='+'||x[i]!='-'))
            {
                i++;
            continue;
            }
            if (x[i]='.')
            {
                flag++;
                if (flag>1)
                {
                    break;
                }
                else if (flag==1)
                {
                    continue;
                }
                j=isdigit(x[i]);
                if (j==0)
                {
                    break;
                }
            }
        }
        if (j!=0)
            printf("是数字\n");
            else
            printf("非数字\n");
    }
    return 0;
}
2012-09-01 12:00
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
处理错误一般都比较费劲。你的想法是可以的,先读到一个char数组里,然后再用 strtod 转。

我只写个读数的程序,比如:
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    double x;
    char buf[31], *endptr;

    while (scanf(" %30[^\n]", buf) == 1) {
        x = strtod(buf, &endptr);

        if (endptr == buf)
            fprintf(stderr,
                "Convertion failed: Can't convert `%s\' to a double!\n",
                buf);
        else if (*endptr != '\0')
            fprintf(stderr,
                "Convertion failed: `%s\' was converted to %lg, "
                "and the rest `%s\' is discarded.\n",
                buf, x, endptr);
        else
            fprintf(stdout,
                "Convertion succeeded: `%s\' was converted to %lg\n",
                buf, x);
    }

    return 0;
}
运行的结果可能是这样:
12.34    # 合理的数可以合理的转换。
Convertion succeeded: `12.34' was converted to 12.34
abc    # 不是数的肯定不行。
Convertion failed: Can't convert `abc' to a double!
12.34abc    # 有点"像"数的能转的部分转,不能换的部分提示出来。
Convertion failed: `12.34abc' was converted to 12.34, and the rest `abc' is discarded.
1abc.234    # 同上
Convertion failed: `1abc.234' was converted to 1, and the rest `abc.234' is discarded.
12.34 23.45    # 不同时转两个数。
Convertion failed: `12.34 23.45' was converted to 12.34, and the rest ` 23.45' is discarded.
12e34    # 如果数里含的字母是有意义的,可以正确换转。
Convertion succeeded: `12e34' was converted to 1.2e+35

2012-09-01 12:11
快速回复:代码运行不了,请各位帮吗看看。
数据加载中...
 
   



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

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