求解一个C语言的程序题。

#include<stdio.h>
#include"stdafx.h"
#include<stdlib.h>
int main()
{
int m,n,temp,a,b;
printf("please input two numbers m,n=");
scanf("%d,%d",&m,&n);
a=m;
b=n;
if(a<b)
{
temp = a;
a = b;
b = temp;
}
temp = a%b;
while(temp)
{
a=b;
b=temp;
temp=a%b;
}
printf("%d,%d的最大公约数为: %d\n",m,n,b);
system("pause");
return(0);
}
1.请问一下while(temp)是是什么意思啊?括号里不是应该放的是循环条件吗?
2.怎么才能在这个程序上实现连续输入测试样例,直到输入0,0结束?
例如:输入:2,3
4,6
3000,25
0,0
输出:1
2
25

1.当temp不等于0时我们就认定为true,当temp=0是,即为false。这个很好理解,1就是true应该知道吧,这里只是认定为除了0的都是true记住就好了。
2.当输入的两个值都是0时,就return追问

感谢您的回答,第一个问题解决了。但不能实现第二个啊。
例如:输入:2,3
4,6
3000,25
0,0
输出:1
2
25
如过按你说的改了之后也只能输入一组数据,而不能同时输入多组数据一起检测。

追答

哦哦。理解错了。 你学过数组了嘛,放在数组里,当接收到0 0 时即执行下面的判定。

追问

我学得很不好.....你可以给说说代码么?

追答

呀呀呀呀~大爷,三年没碰代码了,你等等看看别人能不能帮到你吧~我自己都觉得自己方法不好=。=

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-20
1 只要while(temp)中的temp赋予的值不为0就会一直循环
{
a=b;
b=temp;
temp=a%b;
}
直到a%b的余数为0时temp的值也为0循环结束
就好比我输入2和8,2除8的余数是2,程序规定要将余数赋予temp,此时的while(temp)就相当于while(2),只要表达式非0,就循环a=b;b=temp;temp=a%b;
这时就变成了8除2余为0,temp也就为0,表达式为假:结束
2 #include<stdio.h>
void main()
{
int m,n,r,t;
int m1,n1;
while(m<=0||n<=0)
{
printf("请输入第1个数:\n");
scanf("%d",&m);
printf("请输入第2个数\n");
scanf("%d",&n);
m1=m;n1=n;
if(m<n)
{t=m;m=n;n=t;}
do
{
r=m%n;
m=n;
n=r;
}while(r!=0);
printf("%d和%d的最大公约数是%d\n",m1,n1,m);
}
}追问

不行呀,显示“Run-Time Check Failure”执行了之后窗口就卡住了....

用C语言解决这一道题: 编写一个程序,首先要求用户输入名字,然后要求...
1、首先在Ubuntu的终端写出要实现的内容步骤,注释步骤可以帮助书写者理清思路。2、接下来我们运用Input方法,提示用户输入信息,input中的参数就是提示文字。3、接下来接收好用户输入的内容后,我们就可以运用用户输入的内容进行逻辑处理。4、下面我们运行程序,你会在界面中看到,终端提示你输入名字,不输入...

求解c语言问题
形式一:就是从1开始自增,自增次数是二维元素个数。形式二:[a,b],其中a表示行数,b表示列数。形式三:[a,b],其中a与行数有关,b与列数有关。在循环中a初值取(行数\/2)并自减,b初值取(列数\/2*-1)并自增。代码实现方式很多。这里题目指定要二维数组,但没有指定是什么类型的二维...

求一个c语言程序 题目是 0到100的和
最简单的求法就是使用等差数列的求和公式,参考程序如下:include <stdio.h> int main(void){ int number;number = (0+100)*101\/2;printf("%d\\n", number);return 0;} 当然,也可以使用循环来求解,样例程序:include <stdio.h> int main(void){ int i;int number;number = 0;for (i=...

求一个C语言程序设计,题目:输入一个只包含0和1的二进制数,打印出相应...
输入只包含0和1 的字符串,再把 这一个字符串的每一个字符转换成对应的十进制数 相加,求得输入二进制数的十进制数,然后用printf()函数输出,printf()函数只要用不同的参数就可以输出不同进制的形式,全部代码如下:include <stdio.h> include <conio.h> include <math.h> include <string.h> ...

求解c语言题:输入一个任意的三位数,将其各位数字反序输出(例如输入123...
代码如下:include <stdio.h> void main( ){int a,b,c,d;scanf("%d",&a);b= a\/100;c= (a%100) \/10;d=a%10;printf("%d",100*d+10*c+b);}

求解C语言基础题?
按照你的要求编写的求出现最长的数字和位置的C语言程序如下 include <stdio.h> int main(){ int a[]={1,1,2,2,2,3,3,3,3,5,5,6,6,6,6};int length=1,pos,i,j;for(i=1;i<sizeof(a)\/sizeof(a[0]);i++){ if(a[i]==a[i-length]){ length++;} } printf("长度为%d...

c语言程序求解求改谢谢。。。
int x(int *a,int b);int main (){ int d[100],c=0,i=0; int time_result;while (i<=100){ if(scanf("%d",&d[i])==EOF) \/\/使用&d[i],而不是&d,你输入的是数组中的元素,按CTRL+Z结束 { break; } i++;} time_result = x(d,c); \/\/你原先使...

c语言一小段程序求解
include "stdio.h"\/\/包含输入输出头文件,printf就在其中main(){ int x1=0xabc,x2=0xdef;\/\/声明x1、x2为有符号整型变量并用十六进制赋初值 x2-=x1;\/\/用x2的值减去x1的值并将结果赋给x2 printf("%x\\n",x2);\/\/用十六进制输出x2的值}结果是十六进制333,即十进制的819。

C语言程序设计题目,求解
如图

求写一个C语言程序 题目:分别编写求圆面积和圆周长的函数,另编写一主函...
= EOF){ printf("圆的面积是%lf\\n",Square(r)); printf("圆的周长是%lf\\n",Perimeter(r)); printf("请输入圆的半径:\\n"); } return 0;}运行结果:请输入圆的半径:1圆的面积是3.141590圆的周长是6.283180请输入圆的半径:2 圆的面积是12.566360圆的周长是12.566360...

相似回答