请问下,为什么这个程序运行是错误的?
intmain(){intm,n;scanf("%d/%d",&m,&n);inta=m;intb=n;intt;while(b!=0){t=a%b;a=b;b=t;}p...
int main()
{
int m,n;
scanf("%d/%d",&m,&n);
int a=m;
int b =n;
int t;
while(b!=0){
t=a%b;
a=b;
b=t;
}
printf("公约数为%d\n",a);
m/=a;
n/=a;
printf("%d/%d\n",m,n );
return 0;
} 展开
{
int m,n;
scanf("%d/%d",&m,&n);
int a=m;
int b =n;
int t;
while(b!=0){
t=a%b;
a=b;
b=t;
}
printf("公约数为%d\n",a);
m/=a;
n/=a;
printf("%d/%d\n",m,n );
return 0;
} 展开
3个回答
展开全部
辗转相除法求最大公约数,代码是没问题的
但注意到:scanf("%d/%d", &m, &n); 是格式化输入
运行时在输入第一个数m后必须紧跟着输入'/',否则会影响第二个数n的输入
如图所示结果是正常的:
但如果输入3后空了一格再输入'/',scanf会因没有找到'/'而误判下个数n的输入:
如此结果就会不正常,不知道你的问题是不是这个原因造成的
更多追问追答
追问
可以了,谢谢。
那个scanf中不是已经有/了,为什么还要在运行中再加/
追答
scanf中的'/'表示格式化输入,意思是输入必须按照这个格式来
中间分隔符也可以换成其他任意字符
如scanf("%d-%d", &m, &n); 那么输入就必须是“3-5”这样的形式
当然如果没有格式化输入的需求,只是想输入两个数且用空格隔开
那么写成 scanf("%d%d", &m, &n);就可以了,中间不用额外加分隔符
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询