分析:求最大公约数的算法思想:

1)对于已知两数m,n,使得m>n;

2)m除以n得余数r;

3)若r=0,则n 为求得的最大公约数,算法结束;否则执行(4);

4)m

其中,最小公倍数 = 两个整数之积 / 最大公约数

例: 求 m = 14,n=6的最大公约数 和 最小公倍数

m   n   r

14  6   2

6   2   0

/*

* main.c

*

* Created on: 2012-4-29

* Author: Lee

* Description: 求两个整数的最大公约数和最小公倍数

*/

#includeint main()

{

int num1,num2 =2;// 两个变量

int product; // num1,num2 的乘积

int remainder; // 余数变量

int temp; //临时变量

printf("------------------------\n");

printf("计算两个整数的最大公约数和最小公倍数\n");

printf("------------------------\n");

printf("Input two numbers:");

fflush(stdout);//Eclipse中scanf()函数先于printf()函数输出到缓冲区,

//用fflush(stdout)强制刷新缓冲区

scanf("%d%d",&num1,&num2);

printf("%d 和 %d 的最大公约数:",num1,num2);

product = num1*num2;

if(num1 < num2)//如果num1比num2小 , 交换其值 ,使num1>num2

{

temp = num2;

num2 = num1;

num1 = temp;

}

remainder = num1%num2; // num1 除以num2 得余数 保存在变量remainder中

while(0 != remainder)//检查余数是否为0 , 为0则num2 为求得的最大公约数,否则执行while程序体

{

num1 = num2; // 将num2 赋值给 num1

num2 = remainder; // 将余数 赋值给 num2

remainder = num1%num2; // 继续取num1 对 num2的余数 直到 余数为0 退出循环

}

printf("%d; ",num2); // num2 记录最大公约数

printf(" 最小公倍数: %d\n",product/num2); //两数乘积与最大公约数的商就是最小公倍数

return 0;

}

结果截图:

问题一: 多加了一个 “,” 导致scanf()无法接收第二个参数值

问题描述:scanf("%d , %d ",&num1,num2);在两个“%d”中间习惯性地多加了一个 ","  但是在输入参数时 却习惯性地在参数一和参数二中用空格分开表示这是两个参数结果导致 num2 无法接收到第二个参数值

解决方案:

方案一:scanf("%d , %d ",&num1,num2);不需更改 ,但是在输入参数时要按 num1, num2 格式输入(即num1和 num2之间必须要有一个","分开 才能表示输入了两个参数,否则认为只输入了一个参数,第二个参数就丢掉了)才有效。

方案二:将scanf("%d , %d ",&num1,num2);去掉 “,”改成scanf("%d%d ",&num1,num2);那么输入格式为 num1 num2  (num1 和 num2 之间可以有一个或多个空格,但不能有 ",")

备注:scanf()的详细用法,请参考http://blog.csdn.net/zhaoxiatengkong_1/article/details/7523004

问题二:Eclipse下printf和 scanf的运行顺序问题

问题描述:在Eclipse中运行C程序时,发现scanf比printf先执行了,结果printf的提示语句在scanf执行完之后才打印出,导致程序运行开始时,控制台一篇空白,没有printf里面的提示语句。这是因为 scanf比printf先输出到了缓冲区,printf后到, 但是缓冲区没有立即刷新导致 程序运行时没有提示语,显示一篇空白

解决方案:解决方案有两个,第一,设置缓冲区为空, 即没有缓冲区;第二,每执行printf()之后,强制立即刷新缓冲区;方案具体实施如下:

方案一:在printf之前添加:setvbuf(stdout,NULL,_IONBF,0); 达到设置缓冲区为空的目的

方案二:在每句printf()之后添加fflush(stdout); 强制立即刷新缓冲区

测试代码:

方案一:

#include int main(void) {

setvbuf(stdout,NULL,_IONBF,0);

char aa[20];

printf ("input:");

scanf("%s", aa);

printf ("output:%s", aa);

return 0;

}

方案二:

#include int main(void) {

char aa[20];

printf ("input:");

fflush(stdout);

scanf("%s", aa);

printf ("output:%s", aa);

fflush(stdout);

return 0;

}

备注:问题二解决方案全程参考:http://yutuo.net/archives/7b59add9e0bcd296.html | 宇托的狗窝

c语言程序改错:求两个整数的最小公倍数,【C语言】求两个整数的最大公约数、最小公倍数...相关推荐

  1. c语言程序改错输入5结果为15,《C语言程序设计教学课件》程序改错(自我总结).doc...

    1.给定程序modi.c中,fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之积. #include void fun() { int a[3][3],sum; ...

  2. c语言程序改错例题,C语言程序改错习题

    C语言程序改错习题 行动是通向成功的唯一途径.以下是小编为大家搜索整理的C语言程序改错习题,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网! 在考生文件夹下,给定程序MODI.C的功 ...

  3. c语言程序改错圆锥体积,c语言程序改错讲解

    for(i=m;i<=m*n;i+=m) /**********FOUND**********/ if(i%n==1) //if(i%n==0) return(i); return 0; } m ...

  4. 51单片机C语言程序100例分析(1)IO+C语言+头文件

    51单片机C语言程序100例分析(1)IO+C语言+头文件 \\\插播一条:文章末尾有惊喜哟~///  P1=0xfe;//P1=11111110B,即P1.0输出低电平} 分析:通过这短短的几行代码 ...

  5. c 语言程序编辑,C语言程序编辑学习篇—编程者说之C语言

    谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是"让我欢喜让我忧."欢喜的是,C语言功能非常强大.应用广泛,一旦掌握了后,你就可以理直气壮地对他人说"我是电脑高手 ...

  6. 改错字符串正序反序c语言,C语言程序改错题

    二.程序改错题(本题共4小题,每小题10分,共40分) (1) 输入两个整数,一个字符,并且对其进行输出,用代码编辑器打开文件 2-1.c调试改错并保存. main() { int a;b;char ...

  7. c语言改错题字符串a放在b后面,C语言程序改错题汇总.doc

    程序改错题汇总 1.用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出.分别统计字符串中大写字母和小写字母的个数.求1到10的阶乘的和判断m是否为素数,若是返回1,否则返回 ...

  8. C语言程序改错和标答不同,C语言程序设计试题及答案3

    信息安全技术C语言练习题 总共46题共99分 一.单选题 (共20题,每题2分,共40分) 1. 若有定义"float x=1.5;int a=1,b=3,c=2;",则正确的sw ...

  9. c语言中输入x分段函数值,c语言程序改错:输入x,计算并输出分段函数y的值.0 x0...

    C语言 . 输入半径R ,并计算圆的面积S 和周长L .3. 编写一个程序实现把小写字母转换成大写字母.比如 #includeintmain(){floatr,s,l;scanf("%f&q ...

  10. [C语言]程序改错题。爱因斯坦曾出过这样的一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶...

    程序改错题.爱因斯坦曾出过这样的一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶:若每步跨3阶,最后剩下2阶:若每步跨5阶,最后剩下4阶:若每步跨6阶,最后剩下5阶:只有每步跨7阶,最后才正好1阶 ...

最新文章

  1. 0.0 目录-深度学习第二课《改善神经网络》-Stanford吴恩达教授
  2. Hibernate开发中常见错误总结
  3. 【linux高级程序设计】(第十二章)Linux多线程编程 4
  4. lodop 小票排版_lodop+art-template实现web端漂亮的小票样式打印
  5. openwrt上wifi探针的实现
  6. .NET Core2使用Azure云上的Iot-Hub服务
  7. zz -- QQ圈子感想
  8. 凯撒密码加密算法 (8 分)
  9. Python多进程读写文件操作
  10. ognl概念和原理详解
  11. Eclipse配置SVN教程
  12. Java职业规划(职业晋升路线、技术转移路线、工作经验与技术栈的匹配)——学习笔记
  13. Mysql导出表结构和数据
  14. Ubuntu下将中文目录修改为英文目录
  15. (转)sonicstage 完整删除的方法
  16. 软件测试面试常见问题
  17. 德语计算机相关的动词,德语常用计算机词汇汇总
  18. 汽车数字化零售优化全渠道体验
  19. 通过百世单号自动识别快递公司,并查询大量物流情况
  20. 螺栓扭矩查找表excel下载

热门文章

  1. 无人自助便利店采用射频识别技术 30秒钟就能完成付款
  2. MySQL 指定各分区路径
  3. php微信支付接口开发程序(一)
  4. [Android自定义控件] Android自定义控件
  5. C语言的变量的作用域和生存期
  6. Oracle 11g for Linux安装前准备工作
  7. [转载] 柯受良-柯受良飞跃黄河
  8. CIO,你想做一辈子“消防员”吗?
  9. ftp3.0中的bug
  10. 15.高性能MySQL --- 备份与恢复