| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 419 人关注过本帖
标题:求高手解这个程序的运行问题
只看楼主 加入收藏
ahah
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
求高手解这个程序的运行问题
    我是一个机械系的学生,最近在做一个数控技术插补原理的C语言程序,插补原理可见http://www.,您可以在http://www.,这个网址下看一下数值的运算。
程序如下(本人编写的)
程序代码:
#include <stdio.h>
void main()
{
    int x,y,z,pj,xh,c,d,e;/*x y为坐标值,z为终点判别 ,pj为偏差计算,xh为序号,c d为起始坐标值(0,0) e 为x y的绝对值之和*/
    printf("请输入坐标值(如5 3):");
    scanf("%d%d",&x,&y);
    e=abs(x)+abs(y);
    c=d=0;
    printf("%s  %s %s %s\n","序号","偏差判别","终点判别","坐标");
    if(x>0,y>0)
    {
        xh=0;
        pj=0;
        printf("%d     %d      %d     %d,%d\n",xh,pj,e,c,d);
        for(z=e-1;z>=0;z--)   
        {
             if(pj>=0)
            {c++;
            pj=pj-y;}
            else
            {    d++;
                pj=pj+x;}
            xh++;
            printf("%d    %d      %d    %d,%d\n",xh,pj,z,c,d);
        }
    }
}
可得下图
图片附件: 游客没有浏览图片的权限,请 登录注册

所以依次类推 可以编写其它象限的程序。程序如下:
程序代码:
#include <stdio.h>
void main()
{
    int x,y,z,pj,xh,c,d,e;/*x y为坐标值,z为终点判别 ,pj为偏差计算,xh为序号,c d为起始坐标值(0,0) e 为x y的绝对值之和*/
    printf("请输入坐标值(如5 3):");
    scanf("%d%d",&x,&y);
    e=abs(x)+abs(y);
    c=d=0;
    printf("%s  %s %s %s\n","序号","偏差判别","终点判别","坐标");
    if(x>0,y>0)
    {
        xh=0;
        pj=0;
        printf("%d     %d      %d     %d,%d\n",xh,pj,e,c,d);
        for(z=e-1;z>=0;z--)   
        {
             if(pj>=0)
            {c++;
            pj=pj-y;}
            else
            {    d++;
                pj=pj+x;}
            xh++;
            printf("%d    %d      %d    %d,%d\n",xh,pj,z,c,d);
        }
    }
    if(x>0,y<0)
    {
        xh=0;
        pj=0;
        printf("%d     %d      %d     %d,%d\n",xh,pj,e,c,d);
        for(z=e-1;z>=0;z--)   
        {
             if(pj>=0)
            {c++;
            pj=pj-abs(y);}
            else
            {    d--;
                pj=pj+x;}
            xh++;
            printf("%d    %d      %d    %d,%d\n",xh,pj,z,c,d);
        }
    }
     if(x<0,y>0)
    {
        xh=0;
        pj=0;
        printf("%d     %d      %d     %d,%d\n",xh,pj,e,c,d);
        for(z=e-1;z>=0;z--)   
        {
             if(pj>=0)
            {   c--;
                pj=pj-y;
            }
            else
            {    d++;
                pj=pj+abs(x);
            }
            xh++;
            printf("%d    %d      %d    %d,%d\n",xh,pj,z,c,d);
        }
    }
}
但这时程序运行出现了问题如图
图片附件: 游客没有浏览图片的权限,请 登录注册

想不通为什么会出现这样的情况,希望得到高手指点~~~本人先谢过了

搜索更多相关主题的帖子: 运行 
2010-04-25 13:01
NOMIPS
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:86
专家分:537
注 册:2010-3-31
收藏
得分:10 

没看你的算法,只看了程序。可以试试这个。
#include <stdio.h>
void main()
{
    int x,y,z,pj,xh,c,d,e;/*x y为坐标值,z为终点判别 ,pj为偏差计算,xh为序号,c d为起始坐标值(0,0) e 为x y的绝对值之和*/
    printf("请输入坐标值(如5 3):");
    scanf("%d%d",&x,&y);
    e=abs(x)+abs(y);
    c=d=0;
    printf("%s  %s %s %s\n","序号","偏差判别","终点判别","坐标");
    if(x>0,y>0)
    {
        xh=0;
        pj=0;
        printf("%d     %d      %d     %d,%d\n",xh,pj,e,c,d);
        for(z=e-1;z>=0;z--)   
        {
             if(pj>=0)
            {c++;
            pj=pj-y;}
            else
            {    d++;
                pj=pj+x;}
            xh++;
            printf("%d    %d      %d    %d,%d\n",xh,pj,z,c,d);
        }
    }
    //if(x>0,y<0)
else if(x>0,y<0)  /*改成这样*/
    {
        xh=0;
        pj=0;
        printf("%d     %d      %d     %d,%d\n",xh,pj,e,c,d);
        for(z=e-1;z>=0;z--)   
        {
             if(pj>=0)
            {c++;
            pj=pj-abs(y);}
            else
            {    d--;
                pj=pj+x;}
            xh++;
            printf("%d    %d      %d    %d,%d\n",xh,pj,z,c,d);
        }
    }
     //if(x<0,y>0)
 else if(x<0,y>0) /*改成这样*/

    {
        xh=0;
        pj=0;
        printf("%d     %d      %d     %d,%d\n",xh,pj,e,c,d);
        for(z=e-1;z>=0;z--)   
        {
             if(pj>=0)
            {   c--;
                pj=pj-y;
            }
            else
            {    d++;
                pj=pj+abs(x);
            }
            xh++;
            printf("%d    %d      %d    %d,%d\n",xh,pj,z,c,d);
        }
    }
}

收到的鲜花
  • ahah2010-04-26 17:50 送鲜花  3朵   附言:我很赞同
2010-04-25 14:23
PP_make
Rank: 2
等 级:论坛游民
帖 子:21
专家分:62
注 册:2010-4-25
收藏
得分:10 
也没有看算法,只是你的程序里的主要是错在 if(x>0,y>0),则相当于if(y>0) 则x的值可以是可正可负的!要同时成立时得用 if((x>0)&&(y>0));还有在输出的时候,要空格的话使用%nd,是从右对齐的;
下面为改进的程序,不知道算法对不对,呵呵,你先看看一下:
#include <stdio.h>
#include<math.h>
int main()
{
    int x,y,z,pj,xh,c,d,e;/*x y为坐标值,z为终点判别 ,pj为偏差计算,xh为序号,c d为起始坐标值(0,0) e 为x y的绝对值之和*/
    printf("请输入坐标值(如5 3):");
    scanf("%d %d",&x,&y);
    e=abs(x)+abs(y);
    c=d=0;
    printf("%s %s %s %s\n","序号","偏差判别","终点判别","坐标");
    if((x>0)&&(y>0))
    {
        xh=0;
        pj=0;
        printf("%2d%9d%8d%6d,%d\n",xh,pj,e,c,d);
        for(z=e-1;z>=0;z--)   
        {
            if(pj>=0)
            {
                c++;
                pj=pj-y;}
            else
            {    d++;
            pj=pj+x;}
            xh++;
            printf("%2d%9d%8d%6d,%d\n",xh,pj,z,c,d);
        }
    }
    if((x>0)&&(y<0))
    {
        xh=0;
        pj=0;
        printf("%2d%9d%8d%6d,%d\n",xh,pj,e,c,d);
        for(z=e-1;z>=0;z--)   
        {
            if(pj>=0)
            {c++;
            pj=pj-abs(y);}
            else
            {    d--;
            pj=pj+x;}
            xh++;
            printf("%2d%9d%8d%6d,%d\n",xh,pj,z,c,d);
        }
    }
    if((x<0)&&(y>0))
    {
        xh=0;
        pj=0;
        printf("%2d%9d%8d%6d,%d\n",xh,pj,e,c,d);
        for(z=e-1;z>=0;z--)   
        {
            if(pj>=0)
            {   c--;
            pj=pj-y;
            }
            else
            {    d++;
            pj=pj+abs(x);
            }
            xh++;
            printf("%2d%9d%8d%6d,%d\n",xh,pj,z,c,d);
        }
            }
  if((x<0)&&(y<0))      
           ;
    return 0;
}

//当然,使用if(x,y),这样会方便些,
//呵呵,你再重新编写试试!!


[ 本帖最后由 PP_make 于 2010-4-25 17:06 编辑 ]
收到的鲜花
  • ahah2010-04-26 17:50 送鲜花  3朵   附言:我很赞同 不过我好像不知道怎么评分………… ...
2010-04-25 16:38
ahah
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-25
收藏
得分:0 
回复 2楼 NOMIPS
谢啦 你的程序完全正确,再次感谢你~~
2010-04-26 17:47
ahah
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-25
收藏
得分:0 
回复 3楼 PP_make
谢谢您的帮助,你的解答完全正确。
2010-04-26 17:48
ahah
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-25
收藏
得分:0 
暂不结贴  有其他同学也可以来试一下啦
2010-04-26 17:51
快速回复:求高手解这个程序的运行问题
数据加载中...
 
   



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

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