C语言第五次课(if语句,函数,形参实参,值传递,逗号表达式)

C语言第五次课(if语句,函数,形参实参,值传递,逗号表达式)

(1)双分支改单分支语句
求a b中的最大值:

#include <stdio.h>
int main()
{
   int a =0,b = 0;
   int max = 0;
   scanf_s("%d %d",&a,&b);
   max = a;
   if(b > max)
   {
      max = b;
   }
   printf("max = %d \n",max);
   return 0;
}    

//用三目运算符简化if语句 表达式1?表达式2:表达式3;若表达式1为真则取表达式2的值否则取表达式3的值。(只适用于简单的if语句)

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

(2)输入字符使用getchar(来替代scanf_s)

#include <stdio.h>
int main()
{
   char ch = '\0';// 0 NULL
   printf("input a character :\n");
   ch = getchar();//stdin 
   return 0;
}  

//ch = getchar();输入字符 a = getchar不可以 因为getchar不可修饰整型。

(3)函数在这里插入图片描述
尽可能调用库函数

#include <ctype>
int main()
{
    char ch = '\0';
    printf("input a character:\n");
    ch = getchar();
    if (iscntrl(ch))//判断控制字符
    {
       printf("this is a control character \n";
    }
    else if (isdigit(ch))//判断数字型字符
    {
       printf("this is a dight \n");
    }
    else if (islowe(ch))//判断小写字母
    {
       printf("this is a small letter \n");
    {
    else if (isupper(ch))、、判断大写字母
    {
       printf("this is a capitall letter")}
    return 0}
             

在这里插入图片描述
//atoi面试必考:将字节字符串转换成整数值。

空语句(语句可以为空,除了末尾的分号以外什么符号也没有);即仅有分号不执行操作。如 :int i j; i = 0; ; j = 1; 句子会提前终止。 if()可以 但if();不可以。while语句在后面放分号; 会产生无限循环。

函数类型:库函数和自定义函数(函数返回类型+函数名+形参列表+函数体)
//int Add_int(int a,int b);加分号叫做声明。int Add_int(int a,int b) { } 不加分号 跟花括号的叫做定义
//起函数名一定是合法的标识符,以下划线字母开头。(不能出现关键字,重名,运算符)。
//每一个形参前面都必须有一个类型并拿逗号分隔Add_int(int a,int b) { },但(int a,b);不可以
示例:比较两个整形数并返回最大整形数:

在这里插入图片描述
//返回哪个值就把它写入临时空间如上图 c ,第一个return结束后归还栈帧,回到主函数后从临时量读取数据此时max=20,因为c是第三行Maxint的局部变量可见性只在Maxint中有效,所以不能直接把c赋给15行的max。
//调用时把x值给a,y值给b,xy部分为实参,ab部分为形参,只能把实参传递给形参但反过来不行。

//规则:从外部接收输入时把它定义为形参,把要打印的变量返回回来。
//形参:只能等函数被调用时接收传递进来的数据,形参只有在程序被调用的过程中赋值(分配空间),函数执行完后形参变量释放,所以形参只在函数中可见(作用域)
//实参:调用函数时给出的参数,包含了实实在在的数据。

形参与实参的区别

在这里插入图片描述
在这里插入图片描述
//函数之定义的变量都在数据区(.data)。函数内定义的变量都在栈区(.stack),如果变量前加了静态关键字static则放在.data数据区。
//函数调用时分配部分栈区(栈帧) win系统下栈区大小为1M。

函数调用中的内存分配:值传递
在这里插入图片描述
//上图把y给b b=20,把x给a a=10,然后把a赋给tmp tmp=10,b赋给a a=20,tmp赋给b b=10,a和b的交换并不会影响x y 的值 x仍等于10,y仍等于20,因为值的传递是单向的

在这里插入图片描述
//通过间接方式改变x y。

(4)逗号表达式的优先级最低且从左向右计算。

int main()
{
   int a = 1, b = 2, c = 3;
   int x = 0;
   x = (a+b,b+10,b+c);
   //   3    12   5
   printf("%d \n",x);
   return 0;
}  

//逗号表达式 从左向右计算 则x=5。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值