2021-07-13

本文探讨了函数的基本概念,如输入、输出和参数类型。通过示例展示了如何比较两个数并找到最大值,以及如何通过指针正确实现数据交换。此外,还解释了如何使用switch语句进行多条件判断,并提供了检查闰年的函数。同时,讨论了在处理日期时找到中间值的方法。最后,简要回顾了循环结构如while、do-while和for循环的用法。
摘要由CSDN通过智能技术生成

1.在这里插入图片描述

输出就是函数的返回值

输入时函数的形参

形参 只有函数被调用时才给予赋值(分配存储空间)

实参 调用函数时给出的函数包含了实实在在的数据

函数调用时,数据传递是单向的,只能实参->形参

2.比大小

int Max_Int(int a,int b)
{
    int c=a>b?a:b;
    return c;
}
int main()
{
    int a,b,c;
    int max;
    scanf("%d %d %d\n",&a,&b,&c);
    max=Max_Int(a,Max_Int(b,c));
    return 0;
}

3.交换

void Swap_Int(int a,int b)
{
    int tmp=a;
    a=b;
    b=tmp;
}
int main()
{
    int a=10,b=20;
    Swap_Int(a,b);
    printf("a=%d b=%d\n",a,b);
}

形参进行了交换,但是实参没有进行交换,最后数据依旧没有发生改变

void Swap_Int(int *ap,int *bp)//ap内的地址与bp内的地址交换
{
    int tmp=*ap;
    *ap=*bp;
    *bp=tmp;
}
int main()
{
    int a=10,b=20;
    Swap_Int(&a,&b);//a的地址给ap,b的地址给bp
    printf("a=%d b=%d\n",a,b);
}

使用实参的地址进行交换,最终成功实现数据交互

4.取中间值

void Swap_Int(int *ap,int *bp)
{
    int tmp=*ap;
    *ap=*bp;
    *bp=tmp;
}
int Mid_Int(int a,int b,int c)
{
    int tmp=0;
    if(a>b)
    {
       Swap_Int(&a,&b); 
    }
    if(b>c)
    {
        Swap_Int(&b,&c);
    }
    if(a>b)
    {
       Swap_Int(&a,&b); 
    }
    return b;
}
int main()
{
    int a,b,c;
    int mid=0;
    scanf("%d %d %d\n",&a,&b,&c);
    mid=Mid_Int(a,b,c);
    printf("mid=%d \n",mid);
    return 0;
}

5.switch 多分枝结构 是另一种选择结构,用来代替简单的拥有多分枝的if else结构

switch(整形变量表达式)//直线翻译:switch语句,即切换语句:case即“情况”
{
    case 常量1:语句块1;break;
    case 常量2:语句块2;break;
    ...   
    case 常量n:语句块n;break;
    default:语句;break;
}

6.闰年

bool Is_LeapYear(int year)
{
    if(year%400==0||year%4==0&&year%100!=0)
    {
        return ture;
    }
    else
    {
        return false;
    }
}
int main()
{
    int year;
    scanf("%d",&year);
    Is_LeapYear;
    return 0;
}
bool Is_LeapYear(int year)
{
    return(year%400==0||(year%4==0&&year%100!=0))
}
int main()
{
    int year;
    scanf("%d",&year);
    Is_LeapYear;
    return 0;
}

7.成绩等级

int main()
{
    char grade='\0';
    printf("input grade:(A,B,C,D,E)\n");
    grade=getchar();
    switch(grade)
    {
          case 'A':
          case 'a': printf("90-100\n");break; 
          case 'B':
          case 'b': printf("80-89\n");break;
          case 'C':
          case 'c': printf("70-79\n");break;
          case 'D':
          case 'd': printf("60-69\n");break;
          case 'E':
          case 'e': printf("<60\n");break;
          default:printf("input char error\n")break;
    }
    return 0;
}

如果常量表达式的量与所有case语句中的常量不符,就执行dafault语句中的程序

bool Is_LeapYear(int year)
{
    return(year%400==0||(year%4==0&&year%100!=0))
}
int GetYearMonth(int year,int month)
{
    int day=0;
    switch(month)
    {
        case 1:case 3:case 5:case 7:case 8:case 10:case 12:
            day=31;break;
        case 4:case 6:case 9:case 11:
            day=30;break;
        case 2:
            if(Is_LeapYear(year))
            {
                day=29;
            }
            else
            {
                day=28;
            }
    }
    return day;
}
bool Is_LeapYear(int year)
{
    return(year%400==0||(year%4==0&&year%100!=0))
}
int GetYearMonth(int year,int month)
{
	static const int day[]={29,31,28,31,30,31,30,31,31,30,31,30,31};
	if(month==2&&Is_LeapYear(year))
    {
        month=0;
    }
    return day[month];
}

9.while() 语句 先判断后执行

while();

while()

{

语句块;

}

10.do{}while() 语句 先执行后判断

do

{

语句块;

}while()

11.for() 语句

for(表达式1;表达式2;表达式3) 表达式1、2、3都可一缺省,唯独for语句的骨架不能缺省,即for(;😉

{ 但是表达式2缺省,for语句进入死循环

​ 循环语句;

}

int main()
{
    int n=10;
    for(int i=0;i<n;i++)
    {
        if(i%2==0)
        {
            printf("%d\n",i);
        }
    }
    return 0;
}
int GetYMPTotal(int year,int month,int day)
{
	int total=0;
    if(year<1) return -1;
    if(month<1||month>12) return -2;
	if(day<1||day>31)  return -3;
	for(int i=0;i<month;++i)
    {
		total+=GetYMPTotal(year,i);
    }
    return total+day;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值