问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言的一个算法问题

发布网友 发布时间:2024-07-07 08:56

我来回答

5个回答

热心网友 时间:2024-08-10 14:21

你先定义了一个无返回值的空类型函数fun(),这个函数先定义一个整形数a,初值为零。每次运行函数,都使a值增加2并赋值到a,然后再打印出a。执行主函数时,
当cc从1
自增加到3
会循环3次
也就是执行3次fun()函数,所以输出的为
2
4
6

热心网友 时间:2024-08-10 14:13

你循环里面的内容写错了,应该是p=q%b;q=b;b=p;同样的下面那个循环也一样,还有while判断前面那部分可以去掉,因为两个数相等取余为零,再下一个循环时会推出的,手机上不能帮你改代码……

热心网友 时间:2024-08-10 14:15

哈哈,我也是一个初学者,程序我帮你修正了,并加了说明,你自己看一下吧!
#include <stdio.h>
#include <math.h>

main()
{
int p,q,a,b;
printf("Please enter the p and q:\n");
scanf("%d%d",&p,&q); //注意这里输入一个数值后,要加一个空格在输入另一个数。
if (p>q)
{
b=p%q;
//这个循环也有问题,是一个死循环,因为b!=0在while中不是可能实现的。而且这数值互换也有问题 。
while(b!=q&&b!=0) //q&&b这一步不多余,因为q做为除数不可以为0。如果要去了,就必需在前面判定q!=0;
{
p=q;
q=b;
b=p;
break; //跳出循环。
}
printf("它们的最大公约数是%d",q);
}
else if(p<q)
{
a=q%p;
while(a!=p&&a!=0)
{
q=p;
p=a;
a=q; //这里同样要加一个变量,实现数值互换!
break; //跳出循环。
}
printf("它们的最大公约数是%d",p);
}
else if (p=q)
{
printf("它们的最大公约数是%d",p);
}
}

程序是没问题了,不过很让人失望的是这个程序并不是所有数都可以求出最大公约数。程序从开始设计时就有问题了。我通常求最大公约数时,使用的是for()循环,一直到整除后跳出。

热心网友 时间:2024-08-10 14:16

循环体里面把a赋值给P。肯定a=p成立。。所以第二次循环就必定结束循环吧。。
辗转相除是这样的:

m和n是要做出公约数的2个数且m>n成立
do
{
r = m%n;
m = n;
n = r;
}
while (r);

热心网友 时间:2024-08-10 14:20

哦歇特。。
怎么感觉你这个编程思路有bug阿
走一遍吧
譬如p=64 q=24
公约数应该是8吧(公约数概念都忘记了汗)
那么
if (p>q)
{
b=p%q;
while(b!=q&&b!=0)
{
p=q;
q=b;
}
printf("它们的最大公约数是%d",q);
}

进到这里
b=64约24=16
p=q=24
q=b=16
然后因为满足b!=q&&b!=0
继续循环
p=q=16
q=b=16
因为b==q了所以退出循环
。。。。
最后显示q=16

貌似改这样
#include <stdio.h>
#include <math.h>
main()
{
int p,q,a,b;
printf("Please enter the p and q:\n");
scanf("%d%d",&p,&q);
if (p>q)
{
b=p%q;
while(b!=0)
{
p=q%b;
q=b;
b=p;
}
printf("它们的最大公约数是%d",q);
}
else if(p<q)
{
a=q%p;
while(a!=0)
{
p=q%a;
q=a;
a=p; }
printf("它们的最大公约数是%d",p);
}
else if (p=q)
{
printf("它们的最大公约数是%d",p);
}
}

分给一楼吧
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
糖代谢增高会发展成糖尿病吗? 地毯怎么选购呢 酒店地毯定制 葡萄籽油可以炒菜吗 葡萄籽食用油炒菜好吃吗 ...道路的理论基础、时代背景、历史依据、现实依据 排骨怎么炖好吃又简单家常做法 家常炖排骨怎样做好吃 vivox9spius怎么设置指纹解锁屏幕呀求大神交 vivox9pius怎么解锁密码 手机,没了你会更好作文 高三物理题,第一问,我的算法哪里写错了,求不出x=2cm 用MATLAB实现KMV算法出错,呈示:Error in ==&gt; @(x)KMVfun(EtoD,r,T,Eq... 人事档案中养老保险补贴应在第几类? 社保证明归入人事档案第几类 上海二婚可以休婚假吗二婚请婚假单位会查吗 来那度胺是什么药 来那度胺2024年价格 路口等红灯的时候可以下人吗 七龙珠大冒险的问题 和平精英典藏军需划算吗介绍_和平精英典藏军需划算吗是什么 协议中的价格与自然人股东股权转让价格不一致合法吗? 网上招司机里说的6s工作指的分别是什么 电脑微信版本过低怎么办,如何升级? 电脑版微信版本过低怎么办呢? 菜鸟驿站月收入多少钱(稳定月入2万的老板自述) 网上怎么接外贸订单? 取消挂载 umount 时出现的 "Device is busy" umount.nfs命令如何强制卸载NFS文件系统? 为何使用umount /mnt/cdrom命令的时候出现device is busy这样的语句,不... 每分钟2角钱收入一个月多少 程序员面试时笔试题没写好,是不是一定没戏?算法题写错了,是不是... c#算法关于阶乘 婴幼儿被动操步骤 婴幼儿健身益智体操 尼康D3200双头套机支持高清摄像防抖吗? 如图所示,人站在跳板上,人对跳板的力的作用效果是 ___. 如图所示,人站在跳板上,使跳板变形的力的施力物体是___;跳板发生的形变... 复变∫1/(z•sinz)dz,积分区域:|z|=1.用留数定理计算 ...图中F1表示人对跳板的压力,F2表示跳板对人的支持力,则下列说法中正... 如何快速清洗比色水杯 快速清洗比色水杯的方法 吃什么药才能缓解心肌缺血 租商铺有哪些费用 组织处理措施主要包括 ...左侧附件区见类圆形低密度影,直径约4.2cm,CT值约10Hu是什么意思... 武汉现在优惠多少? 2014速腾大灯改装led或氙气大灯哪种好 速腾led大灯怎么改 ...身上汤了小鬼,跨火盆破解,没来的急破解自己被吓醒了! 给女友内射了以后吃避孕药还管用吗? 女的手心的青筋很明显