c语言-C语言问题,编译没问题,但是无法运行,求解答

问题描述

C语言问题,编译没问题,但是无法运行,求解答

//=====求两个数的最大公约数和最小公倍数=====//
//使用辗转相除法求最大公约数,进而求得最大公倍数

include

int main ()
{
//用户输入的数据
int m,n;
//存放输入的两个数的积
int p;
//用来存放辗转相除时的余数
int c;
//实现两数交换的临时变量
int t;
//最大公约数和最小公倍数
int max,min;
//输出提示信息,并输入数据
printf ("请输入m和n:n");
scanf ("%d,%d",&m,&n);
//将较大的数赋给m,较小的数赋给n
if (m<n)
{
t=m;
m=n;
n=t;
}
//将两数的原始的乘积存放
p=m*n;
//进行辗转相除
while (c != 0)
{
c=m % n;
m=n;
n=c;
}
//辗转相除后的结果m就是最大公约数
max=m;
//最大公约数和最小公倍数的积就是两个数的积
min=p/n;

//输出求出的结果
printf ("最大公约数为%d,最小公倍数为%d。n",max,min);
return 0;
}

解决方案

程序无法运行是因为你的c没有初值,while循环无法进行。另外你的算法也有问题,while循环可改为while (m % n != 0),循环结束后最小公约数时n。

解决方案二:

c没有赋初值,用do-while循环。

解决方案三:

哦,明白了,没注意到

解决方案四:

最小公倍数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 41849 Accepted Submission(s): 23325

Problem Description
给定两个正整数,计算这两个数的最小公倍数。

Input
输入包含多组测试数据,每组只有一行,包括两个不大于1000的正整数.

Output
对于每个测试用例,给出这两个数的最小公倍数,每个实例输出一行。

Sample Input

10 14

Sample Output

70

Source
POJ


#include<iostream>
using namespace std;
int main(){
int m,n,a,b,r,t;
while(cin>>m>>n){
    if(m>n){   a=m;b=n;}
    else{    a=n;b=m;}
    r=b;
    while(r!=0){
        r=a%b;
        a=b;
        b=r;
    }
   t=(m*n/a);
    cout<<t<<endl;
}
return 0;

}

时间: 2024-12-31 19:08:43

c语言-C语言问题,编译没问题,但是无法运行,求解答的相关文章

统计学生成绩的c,编译没报错,运行错误

问题描述 统计学生成绩的c,编译没报错,运行错误 #include /*这是一个查询学生成绩的程序,查询数学,英语,语文,计算并算出总成绩*/ /*首先,显示输入学生人数,然后显示输入各科成绩,最后按照学号排序输出各科 成绩.最后计算并显示出各科成绩的平均值,最大值,最小值*/ /*在main函数中既有printf1函数,scanf函数,printf2函数,arg函数,min函数 max函数*/ void input(double s[][4],int n); void output(doubl

磁盘-新手学习C语言文件,问题已经在程序中备注,求解答!

问题描述 新手学习C语言文件,问题已经在程序中备注,求解答! //怎样向文件读写字符 #include #include int main() { FILE * fp; char ch,filename[10]: printf("请输入所用的文件名:"); scanf("%s",filename); if((fp = fopen(filename,"w")) == NULL)//为什么这里的filename没有双引号引起来: { printf(&

android-Android 输入字符,转换为ascii码输出,编译没问题,但是运行时有问题

问题描述 Android 输入字符,转换为ascii码输出,编译没问题,但是运行时有问题 public class Activity1 extends Activity { public static int char2ASCII(char c) { return (int) c; } public static int[] string2ASCII(String s) {// 字符串转换为ASCII码 if (s == null || "".equals(s)) { return n

c语言 链表 输入问题,编译没错误, 运行 错误

问题描述 c语言 链表 输入问题,编译没错误, 运行 错误 #include #define M 20 int f(char a[]) { int i ; i=0; while (a[i]='n') i++; i--; while (i>0&& a[i]==' '||a[i]=='t') i--; if(i>0) { i++; a[i]='n'; i++; a[i]=''; } return 1; } int getline (char s[],int lim ) { int

c语言-我做汽车零部件采购管理程序,为什么编译的时候没问题。但是运行的时候就停止运行了呢

问题描述 我做汽车零部件采购管理程序,为什么编译的时候没问题.但是运行的时候就停止运行了呢 解决方案 s在哪里定义的,有没有初始化,下标是否越界.

推荐一个算法编程学习中文社区-51NOD【算法分级,支持多语言,可在线编译】

    最近偶尔发现一个算法编程学习的论坛,刚开始有点好奇,也只是注册了一下.最近有时间好好研究了一下,的确非常赞,所以推荐给大家.功能和介绍看下面介绍吧.首页的标题很给劲,很纯粹的Coding社区....虽然目前人气可能一般,但这里面题目和资源还是比较丰富的,希望给初学者一个帮助. 本文原文地址:[推荐]一个算法编程学习中文社区-51NOD[算法分级,支持多语言,可在线编译] 1.51NOD论坛介绍     该论坛网址:http://www.51nod.com/index.html     论

关于c语言的指针的编译错误

问题描述 关于c语言的指针的编译错误 #include<stdio.h>#include<string.h>void f(char *p1char *p2){int k=3;char *p4*p5;p4=p1;p5=p4+k-1;for(;p1<p4+k-1;p1++);for(;*p2!='';p2++){ *p1=*p2; p1++;}for(;*p5!='';p5++){ *p1=*p5; p1++;}*p1='';}main(){char str1[100]str2[

图片-C语言的递归算法,编译为什么会出现这样的结果

问题描述 C语言的递归算法,编译为什么会出现这样的结果 解决方案 首先你这不是递归算法,递归算法最基本的必须运算过程中直接或者间接的调用函数本身. 你的这个为题应该是 scanf() 函数的用法问题,去掉scanf()函数中除了 %d 以外的字符应该就没有问题了. scanf()函数把从键盘读入的数存入指定的变量中,在你的程序中就是读入的数字放入整型变量n中,你的scanf()函数中除了有%d格式控制符外,还有一堆字符串,肯定是不对的.前面的格式化控制符,确定你要从键盘读入的数据的类型. 解决方

c语言简单问题,就是编译错误,求解答

问题描述 c语言简单问题,就是编译错误,求解答 void myframe(void) { POINT_COLOR=GRAYBLUE; unsigned char i; for(i=0;i<5;i++) { LCD_DrawRectangle(i, i, 240-i, 320-i); } } 错误提示: main.c(20): error: #268: declaration may not appear after executable statement in block 求解答啊,在线等 解