0710|c基础day8(函数)

本文详细介绍了函数的分类,包括无参无返、有参函数和有返回值函数。展示了如何在main函数内外定义函数以及引用自定义库。通过课上练习,读者可以学习到计算器的实现(有参无返和有参有返)、数组冒泡排序、杨辉三角的绘制以及字符串长度计算和比较的方法。此外,还给出了计算数组最大差和最小和的函数示例。
摘要由CSDN通过智能技术生成

目录

一、总思维导图(函数)​编辑

        1.1 函数分类

        1.2 全局变量和局部变量

        1.3 无参无返函数、有参函数

        1.4 有返回值函数

二、课上练习

        2.1 定义函数

                2.1.1 在main上定义、在main下定义

                2.1.2 引用自定义库

        2.3 计算器【有参无返】

        2.4 计算器【有参有返】

        2.5 数组冒泡排序、计算数组和【有参无返】

        2.6 杨辉三角【有参无返】

        2.7 my_strlen计算字符串长度、my_strcmp比较字符串大小【有参无返】

        2.8 用size_t strlen计算字符串长度【有参有返】

        2.9 my_strcmp比较字符串大小,并返回差值【有参有返】

三、作业

        3.1 计算数组的最大和,以及最大差


一、总思维导图(函数)

1.1 函数分类

1.2 全局变量和局部变量

 1.3 无参无返函数、有参函数

1.4 有返回值函数

二、课上练习

2.1 定义函数

2.1.1 在main上定义)(在main下定义)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*在main上定义
void Sum()
{
	int a=100,b=10;
	printf("a+b=%d\n",a+b);
}
int main(int argc, const char *argv[])
{
	Sum();
	printf("你好\n");
	return 0;
}
*/
//在main下定义
void Sum();//声明函数
int main(int argc, const char *argv[])
{
	Sum(); //调用
	printf("你好\n");
	return 0;
}
void Sum()
{
	int a=100,b=10;
	printf("a+b=%d\n",a+b);
}
2.1.2 引用自定义库

进入底行模式输入:vsp 1.h创建1.h文件声明函数

void sum();

主函数+自定义函数(1.c)

在头文件引用1.h文件

#include <stdio.h>
#include "1.h"//引用自定义库
int main(int argc, const char *argv[])
{
	Sum();
	printf("你好\n");
	return 0;
}
void Sum()
{
	int a=100,b=10;
	printf("a+b=%d\n",a+b);

}

2.3 计算器【有参无返函数】

#include <stdio.h>
int Sum();//和
int Dec();//差
int Mul();//积
int Dev();//商

int main(int argc, const char *argv[])
{
	int a,b;
	char ch;
	printf("请输入一个表达式:");
	scanf("%d%c%d",&a,&ch,&b);
	switch(ch)
	{
		case '+':Sum(a,b);break;
		case '-':Dec(a,b);break;
		case '*':Mul(a,b);break;
		case '/':Dev(a,b);break;
	}
	return 0;
}
void Sum(int a,int b)
{
	printf("a+b=%d\n",a+b);
}
void Dec(int a,int b)
{
	printf("a-b=%d\n",a-b);
}
void Mul(int a,int b)
{
	printf("a*b=%d\n",a*b);
}
void Dev(int a,int b)
{
	if(b==0)
		printf("除数不能为0!\n");
	else
	printf("a/b=%d\n",a/b);
}

2.4 计算器【有参有返函数】

#include <stdio.h>
int Sum();//和
int Dec();//差
int Mul();//积
int Dev();//商

int main(int argc, const char *argv[])
{
	int a,b;
	char ch;
	printf("请输入一个表达式:");
	scanf("%d%c%d",&a,&ch,&b);
	switch(ch)
	{
		case '+':printf("a+b=%d\n",Sum(a,b));break;
		case '-':printf("a-b=%d\n",Dec(a,b));break;
		case '*':printf("a*b=%d\n",Mul(a,b));break;
		case '/':printf("a/b=%d\n",Dev(a,b));break;
	}
	return 0;
}
int Sum(int a,int b)
{
	return a+b;
}
int Dec(int a,int b)
{
	return a+b;

}
int Mul(int a,int b)
{
	return a+b;

}
int Dev(int a,int b)
{
	if(b==0)
		printf("除数不能为0!\n");
	else
	{return a+b;}

}

2.5 数组冒泡排序、计算数组和【有参无返】

#include <stdio.h>
#include "1.h"

int main(int argc, const char *argv[])
{
	int a[]	={9,1,3,15,6};
	int len=sizeof(a)/sizeof(a[0]);
	Sum(a,len);
	Bubble(a,len);
	return 0;
}

void Sum(int a[],int len)
{
	int sum=0;
	for(int i=0;i<len;i++)
	{
		sum+=a[i];
	}
	printf("sum=%d\n",sum);
}
void Bubble(int a[],int len)
{
	int i,j,count,t;
	for(i=1;i<len;i++)//循环轮数
	{
		count=0;
		for(j=0;j<len-i;j++)//比较几次
		{
			if(a[j]>a[j+1])
			{
				t=a[j];a[j]=a[j+1];a[j+1]=t;
				count++;
			}
		}
		if(count==0)
			break;
	}
	for(i=0;i<len;i++)
	{
		printf("%d\t",a[i]);
	}
}

2.6 杨辉三角【有参无返】

#include <stdio.h>
void Yanghui(int n,int a[n][n]);
int main(int argc, const char *argv[])
{
	//定义函数Yanghuui,计算杨辉三角
	int n;
	printf("n=");
	scanf("%d",&n);
	int a[n][n];
	/*int row=sizeof(a)/sizeof(a[0]);
	int line=sizeof(a[0])/sizeof(a[0][0]);*/
	Yanghui(n,a);
	return 0;
}
void Yanghui(int n,int a[n][n])
{
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n-i;j++)
		{
			printf("  ");
		}
		for(j=0;j<=i;j++)
		{
			if(j==0||i==j)
			{
				a[i][j]=1;
			}
			else
			{
				a[i][j]=a[i-1][j]+a[i-1][j-1];
			}
			printf("%4d",a[i][j]);
		}
		printf("\n");
	}
}

2.7 my_strlen计算字符串长度、my_strcmp比较字符串大小【有参无返】

#include <stdio.h>
void my_strlen(char str[])
{
	int i=0;
	while(str[i]!='\0')
	{
		i++;
	}
	printf("字符串长度是:%d\n",i);
}
void my_strcmp(char str[],char str1[]) //比较str和str1的大小
{
	int i=0;
	while(str[i]!='\0'||str1[i]!='\0')
	{
		if(str[i]=='\0')
		{	
			break;
		}
		if(str[i]==str1[i])
		{
			i++;
		}
	}
	if(str[i]>str1[i])
	{
		printf("str > str1\n");
	}
	else if(str[i]<str1[i])
		printf("str < str1\n");
	else
		printf("str = str1\n");

}
int main(int argc, const char *argv[])
{
	char str[20]="";
	printf("please enter str:");
	gets(str);
	my_strlen(str);
	char str1[20]="";
	printf("please enter str1:");
	gets(str1);
	my_strcmp(str,str1);
	return 0;
}

2.8 用size_t strlen计算字符串长度【有参有返】

#include <stdio.h>

size_t my_strlen(char str[])
{
	int i=0;
	while(str[i]!='\0')
	{
		i++;
	}
	return i;

}
int main(int argc, const char *argv[])
{
	//计算size_t strlen(char str[])
	char str[20]="";
	gets(str);
	size_t l=my_strlen(str);
	printf("l=%ld\n",l);
	return 0;
}

2.9 my_strcmp比较字符串大小,并返回差值【有参有返】

#include <stdio.h>
int my_strcmp(char s1[],char s2[])
{
	int i;
	while(s1[i]!='\0'||s2[i]!='\0')
	{
		if(s1[i]=='\0')
		{
			break;
		}
		if(s1[i]==s2[i])
		{
			i++;
		}
	}
	return s1-s2;
}
int main(int argc, const char *argv[])
{
	//my_strcmp
	char s1[20]="123";
	char s2[20]="1234";
	int k=my_strcmp(s1,s2);
	if(k>0)
	{
		printf("s1>s2,k=%d\n",k);
	}
	else if(k<0)
	{
		printf("s2>s1,k=%d\n",k);
	}
	else
		printf("s1=s2");

	return 0;
}

三、作业

3.1 计算数组的最大和,以及最大差

要求:①定义函数实现返回最大差值

           ②定义函数实现返回最小和

#include <stdio.h>
#include <string.h>
int Max_difference(int a[],int n)//最大差
{
	return a[n-1]-a[0];
}
int Min_add(int a[],int n)//最小和
{
	return a[0]+a[1];
}
int main(int argc, const char *argv[])
{
	int a[5]={5,99,100,3,1};
	int n=sizeof(a)/sizeof(a[0]);
	//冒泡排序
	int i,j,count,t;
	for(i=1;i<n;i++)
	{
		count=0;
		for(j=0;j<=n-i;j++)
		{
			if(a[j]>a[j+1])
			{
				t=a[j];a[j]=a[j+1];a[j+1]=t;
				count++;
			}
		}
		if(count==0)
		{
			break;
		}
	}
	for(i=0;i<n;i++)
	{printf("%d\t",a[i]);}
	printf("\n");
	printf("最大和是:%d\n",a[n-1]+a[n-2]);
	int max_difference=Max_difference(a,n);
	int min_add=Min_add(a,n);
	printf("最大差是:%d\n",max_difference);
	printf("最小和是:%d\n",min_add);	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值