内置函数
内置函数sqrt示例
#include <stdio.h>
#include <math.h>
int main()
{
double x;
double ret;
printf("请输入数据:");
scanf("%lf", &x);
ret = sqrt(x);
printf("ret = %.2lf\n", ret);
return 0;
}
内置函数pow示例
#include <stdio.h>
#include <math.h>
int main()
{
double x, y;
double ret;
printf("请输入数据:");
scanf("%lf %lf", &x, &y);
ret = pow(x, y);
printf("ret = %.2lf\n", ret);
return 0;
}
内置函数toupper示例
#include <stdio.h>
#include <ctype.h>
int main()
{
char a;
char ret;
printf("请输入数据:");
scanf("%c", &a);
ret = toupper(a);
printf("ret = %c\n", ret);
return 0;
}
内置函数rand示例
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main04()
{
#if 0
time_t t;
t = time(NULL);
srand(t);
#endif
srand(time(NULL));
int a[5];
for(int i=0; i<5; i++)
{
a[i] = rand()%100;
}
for(int i=0; i<5; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
内置函数exit示例
int main()
{
int x=1, y=2;
printf("x=%d, y=%d\n", x, y);
exit(0);
x++;
y++;
printf("x=%d, y=%d\n", x, y);
return 0;
}
练习01
1、输出1-10之间所有整数的平方根和立方
#include <stdio.h>
#include <math.h>
int main(){
int x=1;
int y=3;
double ret1,ret2;
for(int i =0;i<=9;i++){
x=x+i;
ret1=sqrt(x);
ret2=pow(x,y);
printf("ret1=%.2lf ",ret1);
printf("ret2=%.2lf ",ret2);
}
printf("\n");
return 0;
}
2、产生7个1-31之间的随机数,并且不重复
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
int a[7];
int temp;
int i = 0;
while(i < 7)
{
temp = rand()%31+1;
if(0 == i)
{
a[i] = temp;
i ++;
}
else
{
int j;
for(j=0; j<i; j++)
{
if(temp == a[j])
{
break;
}
}
if(j < i) //有重复
{
continue;
}
else
{
a[i] = temp;
i ++;
}
}
}
for(int i=0; i<7; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
3、求任意整数的绝对值
#include <stdio.h>
#include <stdlib.h>
int main(){
int a;
scanf("%d",&a);
printf("请输入一个整数:",a);
a=abs(a);
printf("|a|=%d\n",a);
return 0;
}
4、求任意浮点数的绝对值
#include <stdio.h>
#include <math.h>
int main(){
double answer;
scanf("%lf",&answer);
printf("请输入一个值: ");
answer = fabs(answer);
printf("|answer|=%.2f\n",answer);
return 0;
}
函数定义
#include <stdio.h>
double add_function(int , double ); //函数声明:提前告诉编译器函数的类型
double sub_function(int x, double y)
{
double result ;
result = x-y;
return result;
}
int main() //主函数 调用函数
{
int a = 1;
double b = 2.5;
double ret;
// ret = add_function(a, b); //函数调用 , a,b 实参
ret = sub_function(a, b);
printf("ret = %.2lf\n",ret);
return 0;
}
//函数定义: 具体实现某个功能的步骤 x, y是形参
double add_function(int x, double y) //子函数 被调用函数
{
double result;
result = x+y;
return result;
}
练习02
1、设计函数,计算两个整型数的最大值
int my_max(int x, int y)//最大值
{
return x>y?x:y;
}
int my_pow(int x, int y)//x的y次幂
{
int s = 1;
for(int i=1; i<=y; i++)
{
s *= x;
}
return s;
}
2、设计函数,计算x的y次幂
#include <stdio.h>
int my_max(int , int );
int my_pow(int x, int y);
int main()
{
printf("%d\n",my_max(9, 1));
printf("%d\n",my_pow(2, 3));
return 0;
}
嵌套调用
#include <stdio.h>
#if 0
函数不可以无限嵌套调用下去,会导致栈越界
#endif
void func1();
void func2();
void func3();
void func1()
{
func2();
printf("AAA\n");
}
void func2()
{
printf("BBB\n");
func3();
}
void func3()
{
printf("CCC\n");
func1();
}
int main()
{
func1();
return 0;
}
递归函数
a的阶乘
#include <stdio.h>
int factorial(int a)
{
if (a == 1)
return 1;
else
{
a = a * factorial(a-1);
return a;
}
}
int main()
{
int ret;
ret = factorial(5);
printf("ret = %d\n", ret);
return 0;
}
return
1、最多只能返回一个值
2、一旦遇到return,表示本函数结束
3、如果返回值和定义的返回值类型匹配,以返回值类型为主,返回值会自动转换成指定的类型
int function()
{
int a = 6;
printf("$$$$$$$$$\n");
return a;
printf("#######\n");
return 0;
}
int main()
{
printf("%d\n", function());
return 0;
}