重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
创新互联是一家集网站建设,石狮企业网站建设,石狮品牌网站建设,网站定制,石狮网站建设报价,网络营销,网络优化,石狮网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
int func1(int m,int n)
{
int a;
while(n!=0)
{
a=m%n;
m=n;
n=a;
}
return(m); //这里应该返回m,如果返回a就一直是0
}
int func2(int x,int y)
{
return(x*y/func1(x,y));
}
int main()
{
int j,k;
printf("请输入两个整数:");
scanf("%d%d",j,k);
printf("两个数的最大公约数为%d,两个数的最小公倍数为%d",func1(j,k),func2(j,k));
return 0;
}
函数定义的时候参数的数组 不可以带值的这样定义的
也就是 比如 void AA(a[],b) 但是 如果 []里面再放上内容就错了
可以定义成
void GS (float a[][],float b[],int eps, int n,int N)//
然后在函数内部 定义 i和j
也可以定义成指针型式
函数调用的时候 直接调用名字 什么都不加([])就可以了
你这毛病太多!!
首先没看明白你的
主函数
怎样调用的change
函数
。
再者函数
参数
不够详细啊!!光有一个参数是不够的,还得有个
数组
下标
作参数,好能表示你的
字符
要存到数组的哪个元素里。主函数中调用函数时用
change(num,0,)
下面按照你的
大体
思路
,给你答案。
#includestdio.h
char
a[26];
void
main()
{
int
change(long,int);
long
num;
scanf("%ld",num);
a[change(num,0)]='\0';
printf("%s\n",a);
}
int
change(long
num,int
p)
{
int
i,n;long
x,f;
n=p;
if(n==0num0)
{
a[n]='-';
n++;
num*=-1;
}
if(num10)
{a[n]='0'+num;return
1;}
else
{
x=num;f=1;
while(x9)
{
x=x/10;
f=f*10;
}
a[n]='0'+x;
printf("%d\n",x);
n++;
num=num-x*f;
}
return
change(num,n)+n-p;
}
函数调用了,是你写的有问题。
比如你第一次调用 swap(n1,n2),这个时候程序把n1,n2的值传给p1,p2,然后p1,p2的值交换了,但是你需要的n1,n2没有变化。
你改成void swap(int n1,int n2),引用就可以了
修改后:
#includestdio.h
void change(int b[],int a[],int n) // 这里要传入a,b,才能把a逆序到b中
{
int i;
for(i=0;in;i++)// 这里要逆序n个,不是n/2
b[i]=a[(n-(i+1))];/
}
int main()
{
int i,b[5],a[5]={1,2,3,4,5};
change(b,a,5);//这里调用也要修改一下
for(i=0;i5;i++)
printf("%d ",b[i]);
printf("\n");
return 0;
}