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

在这里插入图片描述

小结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java的学生成绩管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;B/S结构 工具&#xff1a;MyEclipse&#xff0c;MySQL 系统展示 首页 个人中…

基于YOLOv5+pyqt5的跌倒检测系统(含pyqt页面、训练好的模型)

简介 跌倒是老年人和身体不便者常见的意外事故&#xff0c;及时检测和处理跌倒事件对于保障他们的安全至关重要。为了提高对跌倒事件的监控效率&#xff0c;我们开发了一种基于YOLOv5目标检测模型的跌倒检测系统。本报告将详细介绍该系统的实际应用与实现&#xff0c;包括系统…

虚拟机IP地址频繁变化的解决方法

勾八动态分配IP&#xff0c;让我在学习redis集群的时候&#xff0c;配置很多的IP地址&#xff0c;但是由于以下原因导致我IP频繁变动&#xff0c;报错让我烦恼&#xff01;&#xff01;&#xff01;&#xff01; 为什么虚拟机的IP地址会频繁变化&#xff1f; 虚拟机IP地址频繁…

终极解决方案,传统极速方案,下载软件的双雄对决!

在数字资源日益丰富的今天&#xff0c;下载管理器成为了我们日常生活中不可或缺的工具。市场上两款备受欢迎的下载管理软件——Internet Download Manager&#xff08;IDM&#xff09;和迅雷11&#xff0c;它们以各自的特色和优势&#xff0c;满足了不同用户群体的需求。 软件…

uniapp使用伪元素实现气泡

uniapp使用伪元素实现气泡 背景实现思路代码实现尾巴 背景 气泡效果在开发中使用是非常常见的&#xff0c;使用场景有提示框&#xff0c;对话框等等&#xff0c;今天我们使用css来实现气泡效果。老规矩&#xff0c;先看下效果图&#xff1a; 实现思路 其实实现这个气泡框的…

自动驾驶规划中使用 OSQP 进行二次规划 代码原理详细解读

目录 1 问题描述 什么是稀疏矩阵 CSC 形式 QP Path Planning 问题 1. Cost function 1.1 The first term: 1.2 The second term: 1.3 The thrid term: 1.4 The forth term: 对 Qx 矩阵公式的验证 整体 Q 矩阵&#xff08;就是 P 矩阵&#xff0c;二次项的权重矩阵&…

java打印菱形和空心菱形

java打印菱形 菱形分上下两个部分。其中上部分同打印金字塔&#xff1b;下部分循环部分i是递减 &#xff08;ps:菱形层数只能为奇数&#xff09; import java.util.Scanner;public class Lingxing{public static void main(String[] args) {Scanner myScanner new Scanner(S…

Android View点击事件分发原理,源码解读

View点击事件分发原理&#xff0c;源码解读 前言1. 原理总结2.1 时序图总结2.2 流程图总结 2. 源码解读2.1 Activity到ViewGroup2.2 ViewGroup事件中断逆序搜索自己处理点击事件ViewGroup总结 2.3 ViewOnTouchListeneronTouchEvent 3. 附录&#xff1a;时序图uml代码 前言 两年…

Nginx Proxy Manager反向代理Jackett

1 说明 最近折腾nas&#xff0c;发现npm反向代理Jackett后出现无法访问的问题&#xff0c;是因为外网访问jackett (例如https://domain.com:7373/jackett/UI/Dashboard)时&#xff0c;url会被重定向到https://domain.com/jackett/UI/Login?ReturnUrl%2Fjackett%2FUI%2FDashbo…

ubuntu链接mysql

C链接mysql 报错 sudo apt-get update sudo apt-get install libmysqlclient-dev 指令编译 g -o mysql_example mysql_example.cpp -I/usr/include/mysql -lmysqlclient g mysql_test.cpp mysql_config --cflags --libs 安装mysql sudo apt updatesudo apt install mysql-…

Java程序之动物声音“模拟器”

题目&#xff1a; 设计一个“动物模拟器”&#xff0c;希望模拟器可以模拟许多动物的叫声和行为&#xff0c;要求如下&#xff1a; 编写接口Animal&#xff0c;该接口有两个抽象方法cry()和getAnimalName()&#xff0c;即要求实现该接口的各种具体的动物类给出自己的叫声和种类…

尹会生:从零开始部署翻译助手【总结】

安装docker安装dify 工具准备 Docker 简介&#xff1a;可以在不同电脑上运行相同的容器&#xff0c;类似于把软件装在便携箱子里&#xff0c;随身携带。 优点&#xff1a;安装Docker可以简化部署过程&#xff0c;避免安装许多依赖性软件。 网址&#xff1a;https://www.docke…

【TOOL】ceres学习笔记(二) —— 自定义函数练习

文章目录 一、曲线方程1. 问题描述2. 实现方案 一、曲线方程 1. 问题描述 现有数学模型为 f ( x ) A e x B s i n ( x ) C x D f(x)Ae^xBsin(x)Cx^D f(x)AexBsin(x)CxD &#xff0c;但不知道 A A A 、 B B B 、 C C C 、 D D D 各参数系数&#xff0c;实验数据中含有噪声…

基于Java作业管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

Java——集合(一)

前言: Collection集合&#xff0c;List集合 文章目录 一、Collection 集合1.1 集合和数组的区别1.2 集合框架1.3 Collection 集合常用方法1.4 Collction 集合的遍历 二、List 集合2.1 List 概述2.2 List集合的五种遍历方式2.3 List集合的实现类 一、Collection 集合 1.1 集合和…

Vitis Accelerated Libraries 学习笔记--OpenCV 安装指南

目录 1. 简介 2. 安装过程 2.1 安装准备 2.2 编译并安装 XRT 2.2.1 下载 XRT 源码 2.2.2 安装依赖项 2.2.3 构建 XRT 2.2.4 打包 DEB 2.2.5 安装 XRT 2.3 编译并安装 OpenCV 2.3.1 下载 OpenCV 源码 2.3.2 创建目录 2.3.3 设置环境变量 2.3.4 构建 opencv 3. 总…

ping命令返回结果实例分析

测试在各相关情况下ping命令回复信息。 网络环境搭建如下图所示&#xff1a; 【1】R1、R2、PC1和PC2没有配置&#xff0c;测试ping命令回复 在路由器没有配置端口IP地址和路由&#xff0c;PC没有配置IP地址、子网掩码和网关的情况下&#xff0c;PC2 ping 192.168.1.1。 在PC没…

加速鸿蒙生态共建,蚂蚁mPaaS助力鸿蒙原生应用开发创新

6月21日-23日&#xff0c;2024华为开发者大会&#xff08;HDC 2024&#xff09;如期举行。在22日的【鸿蒙生态伙伴SDK】分论坛中&#xff0c;正式发布了【鸿蒙生态伙伴SDK市场】&#xff0c;其中蚂蚁数科旗下移动开发平台mPaaS&#xff08;以下简称&#xff1a;蚂蚁mPaaS&#…

QtCreator/VS中制作带有界面的动态库

1、首先创建动态库项目 class UNTITLED25_EXPORT Untitled25 {public:Untitled25(); };2、直接右键创建同名窗口类进行覆盖 3、引入global头文件并添加到处宏</

【SSM】

Spring常见面试题总结 Spring 基础 什么是 Spring 框架? Spring 是一款开源的轻量级 Java 开发框架&#xff0c;旨在提高开发人员的开发效率以及系统的可维护性。 我们一般说 Spring 框架指的都是 Spring Framework&#xff0c;它是很多模块的集合&#xff0c;使用这些模块…