c语言的一个程序编译无错,但运行结果总不对,实在找不到错,只能求助各位大神了。

#include<stdio.h>#include<math.h>intyinzi(inta[],intn){inti=2;intk=0;while(i<n){if(n%... #include<stdio.h>
#include<math.h>
int yinzi(int a[ ],int n)
{ int i=2;
int k=0;
while(i<n){
if(n%i==0) {
a[k]=i;
k++;
n=n/i;
}
else i++;
}
a[k]=0;
}
int gcd_3(int a[ ],int b[ ]){
int i=0,j=0;
int gcd=1;
while(a[i]*b[j]!=0){
if(a[i]==b[j]){
i++;
j++;
gcd*=a[i];
}
else if(a[i]<b[j])
i++;
else j++;
}
return gcd;
}
int main(){
int m,n,c,i=0;
int a[10];int b[10];
printf("please input two numbers \n");
scanf("%d,%d",&m,&n);
yinzi(a,m);
yinzi(b,n);
c=gcd_3(a,b);
printf("the gcd_3 is %d",c);
system("pause");
}
不好意思,各位大神,昨晚上弄的太仓促啦。。问题补充如下:要求用分解质因数的方法求解最大公约数的问题,用c语言实现。。 还有那个n=n/i, 是更新n的值。我再把程序加注释写一遍吧:
int yinzi(int a[ ],int n) || 求数字n的公因数,将公因数存在一个整形数组里
{ int i=2;
int k=0;
while(i<n){
if(n%i==0) {
a[k]=i;
k++;
n=n/i; ||更新n的值
}
else i++;
}
a[k]=0;
}
int gcd_3(int a[ ],int b[ ]){ ||计算两个数的公共因子
int i=0,j=0;
int gcd=1;
while(a[i]*b[j]!=0){
if(a[i]==b[j]){
i++;
j++;
gcd*=a[i];
}
else if(a[i]<b[j])
i++;
else j++;
}
return gcd;
}
int main(){
int m,n,c,i=0;
int a[10];int b[10];
printf("please input two numbers \n");
scanf("%d,%d",&m,&n);
yinzi(a,m);
yinzi(b,n);
c=gcd_3(a,b);
printf("the gcd_3 is %d",c);
system("pause");
展开
 我来答
俏姐儿
2012-11-05 · TA获得超过247个赞
知道小有建树答主
回答量:326
采纳率:92%
帮助的人:138万
展开全部
主函数的 i 好像没用呃。。。
函数yinzi既然没有返回值,那函数类型应该是void吧?
还有,里面的“ n=n/i; ”是啥意思。。。
追问
主函数中的i确实没用,刚开始我是想检查程序问题,所以加了一个变量i,想进行一个循环,输出数组元素的值,检查出错地方。         yinzi函数最开始我写的是void类型,后来看程序运行结果一直不对,我才又改了改
yxhlfx
2012-11-05
知道答主
回答量:40
采纳率:0%
帮助的人:18.4万
展开全部
你还是将代码加上注释或你写这段代码的目的是什么说清楚吧,不然我也不知道你这怎么才算对。
追问
谢谢提醒哈,昨晚上时间仓促也就没想那么多,没想到给各位带来这么多麻烦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5ca6df541
2012-11-06
知道答主
回答量:66
采纳率:0%
帮助的人:24.3万
展开全部
你把大家当神仙吗,运行结果不对,你应该把你这段程序的目的是什么,预期结果是什么告诉我们啊,要不然我们也分不清哪个结果才是你想要的结果啊,
追问
我已经补充了问题,是用分解质因数的方法求最大公约数的问题,最开始是一个求数字n的公因数的函数,并将其公因数存放在一个整形数组中。接下来那个函数是把两个分别存放公因数的数组进行计算,找到其中的公共因数,及相等的因子。最后主函数中,是输入两个数分别调用上面的函数,最后输出最大公约数!麻烦各位了,呵呵。请各位大神看看吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b3bd6b3
2012-11-06
知道答主
回答量:4
采纳率:0%
帮助的人:5481
展开全部
赋值与判断是不同的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式