函数
1.函数的组成:
返回类型值 函数名 函数参数 函数体
2.函数的调用
分为 传值调用 和 传址调用
传值调用:不需要改变实际参数则可用传值调用
传址调用:需要改变实际参数的时候可用传址调用
3.返回类型值
int ,float , char等都有返回值,而void却没有返回值
如果不输入,默认为int类型
4.传址调用
调用函数获取的参数会存储到另外的地址进行运算,因而函数无法轻易改变主函数里原本的实际参数。如果需要改变实际参数,那么可以使用指针获取地址直接改变,也称 传址调用
例如用函数交换两个整形
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
void swap(int* pa, int* pb)
{
int x = 0;
x = *pa;
*pa = *pb;
*pb = x;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", a,b);
swap(&a,&b);
return 0;
}
5.参数
分为 形式参数(形参)和 实际参数(实参)。形参即为函数括号里面的参数,只有在运行的时候才被分配空间,因此形参只在函数内有效。实参即为真实传给函数的参数,必须有确定的值。
练习
利用函数求出100到200间的素数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int game(x)
{
for (int a = 2; a < x; a++)
{
if (x % a == 0)
return 0;
}
return 1;
}
int main()
{
for(int i=100;i<=200;i++)
{
if (game(i)== 1)
printf("%d ", i);
}
return 0;
}
利用函数求2000到4000年的闰年
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int year(int x)
{
if (x % 4 == 0 && x % 100 != 0 || x % 400 == 0)
return 1;
else
return 0;
}
int main()
{
for (int i = 2000; i <= 4000; i ++)
{
if (year(i) == 1)
printf("%d ", i);
}
return 0;
}
在有序数组里面用二分法找数字
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int game(int x[],int y)
{
int lift = 0;
int right = 0;
int i = 0;
right = (sizeof(x) / sizeof(x[1])) - 1;
while (lift<right)
{
i = ((lift + right) / 2);
if (x[i] < y)
{
lift = i;
}
else if (x[i] > y)
{
right = i;
}
else
{
return i;
}
}
return -1;
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int key = 7;
if (game(arr,key) == -1)
printf("无此数字");
else
printf("此数字的下标为%d", game(arr,key));
return 0;
}
周笔记
sprt () 开平方根 #include <math.h>
system() 执行系统命令 system("cls"):清空屏幕
shutdown -s -t 60 :在60s内关机
goto xxx 直接跳转到“ xxx: ”这一行执行
pow() 求次方 #include <math.h>
strcpy(a,b) 将b中的字符串复制到a中 #include<string.h>
memset ( arr , 'x' , 4 ) 将arr里面的前4个字符替换为 x #include<string.h>