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;
}