C语言入门课程学习笔记8:变量的作用域递归函数宏定义交换变量

本文主要是介绍C语言入门课程学习笔记8:变量的作用域递归函数宏定义交换变量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C语言入门课程学习笔记8

  • 第36课 - 变量的作用域与生命期(上)
  • 第37课 - 变量的作用域与生命期(下)
    • 实验—局部变量的作用域
    • 实验-变量的生命期
  • 第38课 - 函数专题练习
  • 第39课 - 递归函数简介
    • 实验
    • 小结
  • 第40课 - C 语言中的宏定义
    • 实验
    • 小结

第36课 - 变量的作用域与生命期(上)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>int var = 100;  // 全局变量void f(int var) // var <==> 局部变量
{var++;printf("var = %d\n", var);
}int main()
{int var = 10;  // 局部变量f(var);  // f(10);printf("var = %d\n", var);  // var = 10;return 0;
}
// var = 11
// var = 10

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>int var = 100;  // 全局变量int main()
{int var = 10;  // 局部变量{int var = 1;  // 局部变量printf("var = %d\n", var);}printf("var = %d\n", var);  // var = 10;return 0;
}
var = 1
var = 10
#include <stdio.h>int main()
{int i = 0;  // 局部变量while( i < 5 ){int j = 10;  // 局部变量j++;printf("j = %d\n", j);i++;}printf("i = %d\n", i);  // var = 10;return 0;
}
/*
j = 11
j = 11
j = 11
j = 11
j = 11
i = 5
*/

在这里插入图片描述

第37课 - 变量的作用域与生命期(下)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验—局部变量的作用域

#include <stdio.h>int var = 1;//全局变量void func()
{printf("var = %d\n", var);
}int main()
{int var = 2;//局部变量1int i = 0;for(i=0; i<5; i++){int var = 4;//局部变量2,作用域只在{}内var += i;printf("var = %d\n", var);}func();//函数调用,打印的是全局变量printf("var = %d\n", var);//局部变量1return 0;
}
/*
var = 4
var = 5
var = 6
var = 7
var = 8
var = 1
var = 2*/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验-变量的生命期

#include <stdio.h>int g_var = 1;
static int g_sVar = 2;int main()
{static int s_var = 3;auto int v = 4;register int rv = 5;printf("g_var = %d\n", g_var);//1printf("g_sVar = %d\n", g_sVar);//2printf("s_var = %d\n", s_var);//3printf("v     = %d\n", v);//4printf("rv    = %d\n", rv);//5return 0;
}

在这里插入图片描述

第38课 - 函数专题练习

在这里插入图片描述
编译通过,有警告,编译器默认为int
B
如果改成int func(float var){var+=1;} ,返回随机值
在这里插入图片描述
C
在这里插入图片描述
x=5,y=8, 13+7
B
搞错了z–是先取值,再减一
C 13+8
在这里插入图片描述
A
在这里插入图片描述

在这里插入图片描述
A
在这里插入图片描述
12
15

在这里插入图片描述
8 10

4

在这里插入图片描述

DELPHI TANG

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>int getNumber(char c)//字符转换为数字
{int ret = -1;if( ('0' <= c) && (c <= '9') )ret = c - '0';return ret;
}int str2int(char str[])
{int ret = 0;int sign = 0;int i = 0;//首个数字的位置if( getNumber(str[0]) != -1 )//是数字 符号为+{sign = 1;i = 0;}else if( str[0] == '+' )//{sign = 1;i = 1;}else if( str[0] == '-' ){sign = -1;i = 1;}while( sign && str[i] ){int n = getNumber(str[i]);if( n != -1 )ret = ret * 10 + n;elsebreak;i++;}ret = sign * ret;return ret;
}int main()
{printf("%d\n", str2int("123"));printf("%d\n", str2int("-12345"));printf("%d\n", str2int("567xyz89"));printf("%d\n", str2int("abc"));printf("%d\n", str2int("-xyz"));return 0;
}

第39课 - 递归函数简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验

#include <stdio.h>int sum(int n)
{int ret = 0;if( n == 1 )ret = 1;elseret = n + sum(n-1);return ret;
}int fac(int n)
{int ret = 0;if( n == 1 )ret = 1;else if( n == 2 )ret = 1;else if( n >= 3 )ret = fac(n-1) + fac(n-2);elseret = -1;return ret;
}int main()
{int i = 0;printf("sum(1) = %d\n", sum(1));printf("sum(10) = %d\n", sum(10));printf("sum(100) = %d\n", sum(100));for(i=1; i<=10; i++){printf("%d, ", fac(i));}printf("\n");return 0;
}

小结

在这里插入图片描述

第40课 - C 语言中的宏定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验

#include <stdio.h>#define ADD(a, b) a + b#define SWAP(a, b)  {int t = a; a = b; b = t;}#define MIN(a, b) (a < b ? a : b)void swap(int a, int b)
{int t = 0;// printf("a = %d, b = %d\n", a, b);t = a;a = b;b = t;// printf("a = %d, b = %d\n", a, b);}int main()
{int x = 1;int y = 2;printf("x = %d, y = %d\n", x, y);SWAP(x, y);   // {int t = x; x = y; y = t;}printf("x = %d, y = %d\n", x, y);printf("x + y = %d\n", ADD(x, y));printf("MIN(%d, %d) = %d\n", x, y, MIN(x, y));  // printf("MIN(%d, %d) = %d\n", x, y, (x < y ? x : y));return 0;
}

在这里插入图片描述

小结

在这里插入图片描述

这篇关于C语言入门课程学习笔记8:变量的作用域递归函数宏定义交换变量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1087747

相关文章

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st