加我为好友,怎么样?
片言可以明百意 坐驰可以役万里
to: 我不是郭靖
根据您的程序,我写了一段程序如下:但是总是不能运行,麻烦您帮我找一下好吗?谢谢您
#include<stdio.h>
#define U 20
#define V 50
int lcm(int m,int n)
{
int t,r,m1,n1;
m1=m;
n1=n;
if(m>n)
{
t=m;m=n;n=t;
}
while(n%m!=0)
{
r=n%m;
n=m;
m=r;
}
return m1*n1/r; /* 这里r改为m,如果一开始n%m==0 那么循环体就不会被执行,此时r并没有值*/
}
void main()
{
int a[U][V];
int i,j,n;
int temp=1;
printf("please input hangshu:\n");
scanf("%d\n",&n); /* \n去掉 */
for(i=0;i<n;i++)
{
scanf("%d ",&a[i][0]); /* %d后不要加空格 即改为scanf("%d",&a[i][0]); */
for(j=1;j<=a[i][0];j++)
scanf("%d ",&a[i][j]);/* %d后不要加空格 */
}
for(i=0;i<n;i++)
{
for(j=1;j<=a[i][0];j++)
temp=lcm(temp,a[i][j]);
printf("%d\n",temp);
}
}
第一题的程序,昨天写的有一点错误,稍加修改
此程序没有对输入差错的功能,所以必须严格按照题目中的输入方式输入,大家帮我看看还有什么问题
#include <stdio.h>
#include <malloc.h>typedef unsigned long UL;
UL *Lcm;
UL lcm(UL m,UL n)
{
UL t=n,m1=m,n1=n;
if(m>n)
{
t=m;
m=n;
n=t;
}
while(n%m!=0)
{
t=n;
n=m;
m=t%m;
}
return m1/m*n1;
}void l(UL *p,UL t)
{
UL n=p[0];
UL i;
for(i=1;i<=n;i++)
Lcm[t]=lcm(Lcm[t],p[i]);
printf(\"%ld\n\",Lcm[t]);
}int main()
{
UL i,j,m,n;
char g;
UL **num;
printf(\"**********INPUT***********\n\");
scanf(\"%ld\",&n);
num=(UL**)malloc(sizeof(UL*)*n);
Lcm=(UL*)malloc(sizeof(UL)*n);
for(i=0;i<n;i++)
Lcm[i]=1;
for(i=0;i<n;i++)
{
m=0;
while((g=getchar())!=' ')
{
if(g==10)
continue;
m=(g-'0')+m*10;
}
num[i]=(UL*)malloc(sizeof(UL)*(m+1));
num[i][0]=m;
for(j=1;j<=num[i][0];j++)
{
m=0;
while((g=getchar())!=' ')
{
if(g==10)
break;
m=(g-'0')+m*10;
}
num[i][j]=m;
}
}
printf(\"**********OUTPUT**********\n\");
for(i=0;i<n;i++)
l(num[i],i);
free(num);
num=NULL;
free(Lcm);
Lcm=NULL;
getch();
}