c语言函数设计 C语言函数设计一个循环计算器

C语言 编写函数1、编写函数func1,实现求两个数的最大公约数 。
1:
int
fuc1(int
a,int
b)
{
if(a%b==0)
return
b;
return
fuc(b,a%b);
}
int
t=fuc1(a,b);//t为a,b最大公约数 。
2、编写函数func2,实现求两个自然数之间的奇数的和 。
2
int
fuc2(int
a,int
b)
【c语言函数设计 C语言函数设计一个循环计算器】{
int
sum=0;
int
i;
for(i=a;i=b;i++)
if(i%2==1)
sum+=i;
return
sum;
}
int
t=fuc2(a,b);//t为a,b间所有奇数之和 。
3、编写函数func1,实现求一个自然数的阶乘(要求用递归的方法) 。
int
fuc1(int
k)
{
if(k==1)
return
1;
return
k*fuc(k-1);
}
int
t=fuc1(a);//t为a的阶乘.
4、编写函数func2,实现求两个自然数之间的偶数的和 。
int
fuc2(int
a,int
b)
{
int
sum=0;
int
i;
for(i=a;i=b;i++)
if(i%2==0)
sum+=i;
return
sum;
}
int
t=fuc2(a,b);//t为a,b间所有偶数之和 。
设计一个C语言函数(急求)前面我们说的都是无参数无返回值的函数,实际程序中 , 我们经常使用到带参数有返回值的函数 。
一、函数参数传递
1.形式参数和实际参数
函数的调用值把一些表达式作为参数传递给函数 。函数定义中的参数是形式参数,函数的调用者提供给函数的参数叫实际参数 。在函数调用之前,实际参数的值将被拷贝到这些形式参数中 。
2.参数传递
先看一个例子:
void a(int);/*注意函数声明的形式*/
main()
{
int num;
scanf("%d",num);
a(num);/*注意调用形式*/
}
void a(int num_back)/*注意定义形式*/
{
printf("%d\n",num_back);
}
在主函数中,先定义一个变量,然后输入一个值 , 在a()这个函数中输出 。当程序运行a(num);这一步时 , 把num的值赋值给num_back,在运行程序过程中 , 把实际参数的值传给形式参数 , 这就是函数参数的传递 。
形参和实参可能不只一个 , 如果多于一个时,函数声明、调用、定义的形式都要一一对应 , 不仅个数要对应 , 参数的数据类型也要对应 。
void a(int,float);
main()
{
int num1;
float num2;
scanf("%d",num1);
scanf("%f",num2);
a(num1,num2);
}
void a(int num1_back,float num2_back)
{
printf("%d,%f\n",num1_back,num2_back);
}
上面的例子中 , 函数有两个参数,一个是整型,一个是浮点型,那么在声明、调用、定义的时候,不仅个数要一样,类型也要对应 。如果不对应 , 有可能使的编译错误,即使没错误 , 也有可能让数据传递过程中出现错误 。
再看一个例子:
void a(int);
main()
{
int num;
scanf("%d",num);
a(num);
}
void a(int num)
{
printf("%d\n",num);
}
看上面的例子,形式参数和实际参数的标识符都是num,程序把实际参数num的值传递给形式参数num 。有些人可能就不明白了 , 既然两个都是num , 为什么还要传递呢?干脆这样不就行了吗:
void a();
main()
{
int num;
scanf("%d",num);
a();
}
void a()
{
printf("%d\n",num);
}
其实不然,这就要涉及到标识符作用域的问题 。作用域的意思就是说 , 哪些变量在哪些范围内有效 。一个标识符在一个语句块中声明,那么这个标识符仅在当前和更低的语句块中可见,在函数外部的其实地方不可见,其他地方同名的标识符不受影响,后面我们会系统讲解作用域的问题 。在这儿你就要知道两个同名的变量在不同的函数中是互不干扰的 。

推荐阅读