C语言学习——第一篇博客(四)
来源:互联网 发布:编程入门课程 编辑:程序博客网 时间:2024/04/27 20:15
2016年10月6日20:10:54
函数
形式参数和实际参数
在调用有参函数时,主调函数和被调用函数之间有数据传递关系
定义函数时函数名后面的变量名称为“形式参数”(简称“形参”)
主调函数中调用一个函数时,函数名后面参数称为“实际参数”(简称“实参”)
实际参数可以是常量、变量或表达式
示例一:
用递归方法求n!
#include <stdio.h>
int main()
{int fac(int n);
int n; int y;
printf("input an integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%d\n",n,y);
return 0;
}
int fac(int n)
{
int f;
if(n<0)
printf("n<0,data error!");
else if(n==0 | | n==1)
f=1;
else f=fac(n-1)*n;
return(f);
}
示例二 汉若塔
Hanoi(汉诺)塔问题。古代有一个梵塔,塔内有3个座A、B、C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但规定每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在下,小盘在上。在移动过程中可以利用B座。要求编程序输出移动一盘子的步骤。
#include <stdio.h>
int main()
{ void hanoi(int n,char one,
char two,char three);
int m;
printf(“the number of diskes:");
scanf("%d",&m);
printf("move %d diskes:\n",m);
hanoi(m,'A','B','C');
}
void hanoi(int n,char one,char two,
char three)
{ void move(char x,char y);
if(n==1)
move(one,three);
else
{ hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
void move(char x,char y)
{
printf("%c-->%c\n",x,y);
}
示例三:
用选择法对数组中10个整数按由小到大排序。
#include <stdio.h>
int main()
{ void sort(int array[],int n);
int a[10],i;
printf("enter array:\n");
for(i=0;i<10;i++) scanf("%d",&a[i]);
sort(a,10);
printf("The sorted array:\n");
for(i=0;i<10;i++) printf("%d ",a[i]);
printf("\n");
return 0;
}
void sort(int array[],int n)
{ int i,j,k,t;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(array[j]<array[k]) k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
}
示例四:
例7.16 考察静态局部变量的值。
#include <stdio.h>
int main()
{ int f(int);
int a=2,i;
for(i=0;i<3;i++)
printf(“%d\n”,f(a));
return 0;
}
int f(int a)
{ auto int b=0;
static c=3;
b=b+1;
c=c+1;
return(a+b+c);
}
由于c是静态存储的,地址不释放,所以得到结果 7,8,9
示例五:
有一个字符串,内有若干个字符,今输入一个字符,要求程序将字符串中该字符删去。用外部函数实现
#include <stdio.h>
int main()
{ extern void enter_string(char str[]);
extern void delete_string(char str[],
char ch);
extern void print_string(char str[]);
char c,str[80];
enter_string(str);
scanf(“%c”,&c);
delete_string(str,c);
print_string(str);
return 0;
}
a.c
void enter_string(char str[80])
{ gets(str); }
文件b.c
void delete_string(char str[],char ch)
{ int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch) str[j++]=str[i];
str[j]='\0';
}
d.c
void print_string(char str[])
{ printf("%s\n",str); }
- C语言学习——第一篇博客(四)
- C语言学习——第一篇博客 (一)
- C语言学习——第一篇博客 (二)
- C语言学习——第一篇博客 (三)
- C语言学习——第一篇博客(五)
- 人生第一篇博客(关于C语言的学习)
- 第一篇博客文章——C语言
- 第一篇博客—c语言单链表的基本操作
- c 语言学习 第一篇
- C语言第一篇:C语言博客书写规范
- C第一篇博客
- 小昆哥—>博客第一篇
- 博客第一篇:C语言处理动态数组
- 实训学习课——C#(第一篇)
- 开始学习C++——第一篇 语言、编译器和开发环境的区别(摘自kriswj 百度)
- 第一篇博客 学习markdown
- iObjective-C 学习第一篇 概述(关键字、Xcode快捷键、Objective-C编程语言排名)
- 博客更新——第一篇
- PAT乙级1010
- 系统会随机给你一个数组(存放都是数字),你需要将里面值累加,最后四舍五入,保留20位小数
- KMP算法的next数组计算原理
- The Differences Between BSD and System V Unix
- ubuntu下安装arm-linux-gcc
- C语言学习——第一篇博客(四)
- IC测试装置
- js的原型总结
- const和#define的区别
- 4807. 破解
- SQL 之 外键、索引
- deque
- 智能小车的制作(二)
- CSS div水平垂直居中和div置于底部