| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1215 人关注过本帖
标题:菜鸟学C
只看楼主 加入收藏
kingiswei
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-1-19
收藏
 问题点数:0 回复次数:7 
菜鸟学C
/*两个分数间的四则运算*/
#include<stdio.h>
#include<math.h>
/*子函数*/
/*这个函数将取得分数*/
void get_number(int *m,int *n,int k)
{
int a,b;
char c;
do
{printf("请输入第%d个分数(如1/2):",k);
scanf("%d %c%d",&a,&c,&b);
if(c!='/') printf("分数线输入有误,请重新输入\n");
if(b==0) printf("分母不能为0,请重新输入\n");
}
while(c!='/'||b==0);
*m=a;
*n=b;
}
/*这个函数将取得运算符*/
void get_op(char *op)
{
char m;
do
{printf("请输入运算符(+、-、*、/):");
scanf(" %c",&m);
if(m!='+'&&m!='-'&&m!='*'&&m!='/')
printf("输入有误,请重新输入\n");
}
while(m!='+'&&m!='-'&&m!='*'&&m!='/');
*op=m;
}
/*这个函数将进行约分*/
void gcd(int m,int n,int *j,int *k)
{
int a,b,c;
a=abs(m);
b=abs(n);
do
{c=a%b;
a=b;
b=c;
}
while(c!=0);
*j=m/c;
*k=n/c;
}

/*主函数*/
void main()
{
int a,b,c,d;
char op,again;
for(again='Y';again=='Y'||again=='y';scanf(" %c",&again))
{get_number(&a,&b,1);
get_op(&op);
get_number(&c,&d,2);
switch(op)
{case'+':
case'-':
a=a*d;c=c*b;b=b*d;
if(op=='+') a+=c; else a=a-c;
break;
case'*':
case'/':
if(op=='*')
{a=a*c;b=b*d;}
else {a=a*d;b=b*c;}
break;
}
gcd(a,b,&c,&d);
if(d==1)
printf("结果为:%d\n",c);
else
printf("结果为:%d/%d\n",c,d);
printf("是否继续运算?(Y/N)=>");
}
}

这是我自己写的一个两个分数间四则运算的程序,但是老是在输入完数据后出现
divide error
请问各位达人是为什么
搜索更多相关主题的帖子: int get 运算符 
2008-02-03 10:51
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
代码混乱啊~~~~~
2008-02-03 12:19
闪闪4521
Rank: 1
等 级:新手上路
帖 子:196
专家分:0
注 册:2007-11-30
收藏
得分:0 
你看看你那几个读取输入信息的判断条件
while(c!='/'||b==0);
*m=a;
*n=b;

while(m!='+'&&m!='-'&&m!='*'&&m!='/');
*op=m;

条件反了吧
2008-02-03 19:56
kingiswei
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-1-19
收藏
得分:0 
do while语句啊,没错吧……
2008-02-03 20:50
冰天雪
Rank: 1
等 级:新手上路
威 望:1
帖 子:331
专家分:0
注 册:2007-2-27
收藏
得分:0 
没有格式 ,看着真累啊
2008-02-03 21:22
boran1016
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-2-4
收藏
得分:0 
我是新来的 虽然现在还看不懂 不过我会努力的 先顶一下
2008-02-04 00:52
jijiwawa
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-2-3
收藏
得分:0 
while(c!=0);
*j=m/c;
*k=n/c;
这里出错了吧
c为0当然出错
*j=m/a;
*k=n/a;
这样可以了吧

我是菜宝宝,大家帮忙啊,谢谢!!
2008-02-04 12:12
kingiswei
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-1-19
收藏
得分:0 
恩,看出来了,谢谢
2008-02-04 16:08
快速回复:菜鸟学C
数据加载中...
 
   



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

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