QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 789|回复: 2

浮点数例外

[复制链接]
发表于 2004-7-30 14:47:14 | 显示全部楼层 |阅读模式
用C写了一段小程序

能通过编译,但是运行出错,请问是怎么回事?:neutral:

[code:1]#include <math.h>
#include <stdio.h>
int t,v;
int dx(int t,int v);
int dc(int t,int v,int x);
void print(int x,int y,int t,int v);

main(){
        int x,y;
        scanf("%d%d",&t,&v);
        x=dx(t,v);
        y=dc(t,v,x);
        print(x,y,t,v);
}

int dx(int t,int v){
        int er;
        while (t>0){
                er=t%v;
                t=v;
                v=er;
        }
return (er);
}

int dc(int t,int v,int x){
return ((t*v)/x);
}

void print(int x,int y,int t,int v){
        printf("\n%d & %d >>%d\n",t,v,x);
        printf("%d $ %d >>%d\n",t,v,y);
}
[/code:1]
发表于 2004-7-30 15:08:31 | 显示全部楼层
你在 dx() 中改了t,v的值,但是全局变量的t,v应没有改变,若要改变它们,就该传递地址。
scanf("%d%d",&t,&v); 这句也改一下,在%d%d中加空格,不然你输入会有问题的,要是v得不到值,那么在 t%v 中就会出错,这里你也没有判断v=0的情况。
回复

使用道具 举报

 楼主| 发表于 2004-7-30 16:12:19 | 显示全部楼层
谢谢qianzheng82

我是这样解决的

[code:1]#include <stdio.h>
int dx(int t,int v);
int dc(int t,int v,int x);
void print(int x,int y,int t,int v);

main(){
        int t,v;
        float x,y;
        scanf("%d %d",&t,&v);
        x=dx(t,v);
        y=dc(t,v,x);
        print(x,y,t,v);
}

int dx(int f,int u){
        int er=u;
        while (u>0){
                er=f%u;
                f=u;
                u=er;
        }
return (f);
}

int dc(int t,int v,int x){
          return ((t*v)/x);
}

void print(int x,int y,int t,int v){
        printf("\n%d & %d >>%d\n",t,v,x);
        printf("%d $ %d >>%d\n",t,v,y);
} [/code:1]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 18:07 , Processed in 0.042423 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表