C# 方法

文章目录

    • 1.方法的定义与调用
    • 2.方法的参数
    • 3.方法参数的赋值
    • 4.引用传参
    • 5.方法的返回值
    • 6.out输出参数
    • 7.参数列表
    • 8.作用域
    • 上期练习题答案
    • 本期练习题


1.方法的定义与调用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _02_方法的定义与调用
{internal class Program{static void Main(string[] args){//方法  也叫做函数//就是把一系列相关的代码组织(封装)到一起,用于执行一系列的任务的代码块//一个方法分为两部分,方法的定义(声明)和方法的调用(执行)//Math.Max();//2.方法的调用,在方法的名字后面()  ()称之为执行运算符//Program.Test();//方法中的代码会在被调用的时候执行,执行完毕之后,继续回到方法调用的位置,继续执行外部的代码Console.WriteLine(1);Test();Console.WriteLine(2);//练习:封装一个方法,在控制台输出10次吴亦凡MyWrite();Console.WriteLine("------------");MyWrite();}//1.方法的定义  一个方法一般情况下,写在一个类中/** 格式:* * 访问修饰符 返回值类型 方法的名字 (参数列表){* *   这个方法的代码块* }* * 访问修饰符: public """"暂且""" 先记住一个* 返回值类型  void* 方法的名字:自定义,一般以大驼峰命名(见名知意)* *///方法在声明之后,会发现在Main中无法使用,以为Main是静态方法,Test不是静态方法,所有两个方法之间是不互通的,只能把Test修饰成静态方法//注意!!!!   并不是所有的方法都需要static关键字修饰成静态方法//'''''''暂且"'''''' 在所有的方法上添加static关键字(后续详解)public static void Test(){Console.WriteLine("C#中学到的第一个方法");}public static void MyWrite(){for (int i = 0; i < 10; i++){Console.WriteLine("吴亦凡");}}}
}

2.方法的参数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _02_方法的参数
{internal class Program{static void Main(string[] args){/**上个课件中的练习:方法功能十分的单一**如果我需要输出20次吴亦凡,就需要再封装一个方法**这两个需求的功能是相似的,我们就可以通过传递参数,来控制一个方法做出不同的功能***参数: 形参和实参**形参: 形式参数,方法定义的时候,声明在()里面的变量,这个形参的值由实参决定*实参: 实际参数,方法调用的时候,写在()中的数据,这个数据将会赋值给对应的形参**/Test(1,"3");MyWrite(15,"罗志祥");MyWrite(10, "凡凡");MyWrite(5);int c = 5;string str = "6666";//传递参数的时候,不仅可以直接写数据,也可以写一个变量,会自动将变量的值传递给形参MyWrite(c,str);}public static void Test(int x,string s){Console.WriteLine(x);}//原始方法1.0 //功能:打印10次吴亦凡//2.0 打印任意次数的吴亦凡//3.0 打印任意次数的任意内容//4.0 如果传递打印内容,则打印传入的内容,如果不传入内容,则打印默认值"劣迹明星"//方法在定义的时候,可以给形参设置一个默认值,当方法调用的时候,没有传递参数,则使用这个默认值(这个参数是可选参数)//注意:可选参数必须写在必选参数的后面//比如://f(int a,int b)   √ 两个参数必选参数//f(int a,int int b=666) √ 可选参数在必选后面//f(int a=888,int b=666) √ 两个参数都是可选参数//f(int a=888, int b)  X 可选参数 不能设置在必选参数的前面public static void MyWrite(int count,string str="劣迹明星"){for (int i = 0; i < count; i++){Console.WriteLine(str);}}}
}

3.方法参数的赋值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _04_方法参数的赋值
{internal class Program{static void Main(string[] args){//方法调用的时候,如果传入的时候变量,或者表达式,都会先进行计算,然后再传递//也就是说,方法调用传递变量,传递过去的是这个变量的值,而不是变量本身Test1(1 + 1);int z = 2;Test1(z);Console.WriteLine($"z=={z}");//原理:int c = 2;int b = c;b = 20;Console.WriteLine($"c=={c}");//--------------------------------------//当给方法传递一个引用类型的时候,传递的也是这个变量的值//只不过引用类型的变量存储的是数据的内存地址,所以传递进去的也是内存地址,相当于两个地方操作的时候一块内存地址,一个改变,另一个也会发生改变People p1=new People() { Name="老王"};Test2(p1);Console.WriteLine(p1.Name);//原理:People p2 = new People() { Name = "老王" };People p3 = p2;p3.Name = "吴亦凡";Console.WriteLine(p2.Name);}public static void Test1(int x){Console.WriteLine($"传入的参数x为{x}");x = 20;}public static void Test2(People people){Console.WriteLine($"传入的参数x为{people.Name}");people.Name = "吴亦凡";}}class People{public string Name;}
}

4.引用传参

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _05_引用传参
{internal class Program{static void Main(string[] args){//方法传递参数的两种方案://值传递(值参数):方法默认的传递方式,这种方式调用方法,会在方法执行的时候声明一个新的变量接收一个参数,实参的值会赋值给这个新的变量,当我们传递的数据类型不同的时候,也会出现不同的效果//当传递一个基本数据类型的时候,方法内部修改形参,不会影响外部,当传递一个引用类型的时候,会影响外部//引用传递(引用参数):当传递一个基本数据类型的时候,方法内部修改形参,会影响外部//当方法内部需要修改传递进来的变量的时候,就需要使用引用传递int x = 2;//使用引用传递的时候,传递变量就是传递的这个变量本身,而不是变量的值Test(ref x);//传递参数的时候,必须加上ref关键字Console.WriteLine("x:"+x);//需求:定义一个函数 交换a和b的值int a = 666, b = 888;//int temp = a;//a = b;//b=temp;//(a, b) = (b, a);Huan(ref a,ref  b);Console.WriteLine(a);Console.WriteLine(b);/** 方法内部修改形参的时候,外部是否会受到影响* * 1.看方法内部是怎么样改的  如果是 形参=xxx 外部不会受到影响*                         如果是 形参.xxx=xxx 外部受影响* 2.如果使用的是引用传递(ref) 内部使用 形参=xxx 外部也会受到影响*/}//给方法的某个形参的前面加上ref关键字,这个参数将进行引用传递(直接传递变量)public static void Test( ref int a){Console.WriteLine("参数:"+a);a = 20;}public static void Huan(ref int x,ref int y){(x, y) = (y, x);}}
}

5.方法的返回值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _06_引用传参
{internal class Program{static void Main(string[] args){//Math.Max(10,11);//有些方法的功能仅仅用于输入工作, 调试工作//有些方法的功能以计算为主要目标,一般在方法执行结束后,获取计算结果string s =  Test();Console.WriteLine(s);//定义一个函数  传入两个参数,返回两个数的和Console.WriteLine(Sum(10, 10));}//方法通过返回值将方法内部计算的结果返回给调用的地方//需要在定义方法的位置,指定方法的返回值的类型,没有返回值写voidpublic static string Test(){//注意:方法标注了返回值的类型,那么这个方法内部就必须要返回对应的类型的数据return "罗志祥";}public static int Sum(int a,int b){//return 关键字不仅可以用于返回数据,还可以用于终止方法的执行//return 关键字下面的代码不会执行return a + b;//Console.WriteLine(a+b);}}}

6.out输出参数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _07_out输出参数
{internal class Program{static void Main(string[] args){//ref 输入关键字//out 输出关键字//return关键字用于返回方法执行的结果,但是只能返回一个数据,如果需要同时返回多个数据到方法调用的位置,就可以使用输出参数int a = 1;int b = 2;Test1(ref a,ref b);Console.WriteLine($"a=={a},b=={b}");int c;int d;Test2(out c, out d);Console.WriteLine($"c=={c},d=={d}");/** out和ref的区别?* * 1.out传递参数,可以不用赋值* 2.out传递的参数,在方法中必须赋值* 3.ref传递的参数可以在方法中获取值,out传递的参数,只能在赋值之后取值(out不能传递进去数据)* * ref的主要作用是为了传入数据,因此传入的时候必须进行赋值* * out的主要作用是为了传出数据,因此传入的时候可以不进行初始化,并且在方法中必须进行赋值* ** */}public static void Test1(ref int x,ref int y){Console.WriteLine($"Test1方法中x:{x},y{y}");x = 20;y = 30;}public static void Test2(out int x, out int y){x = 20;y = 30;Console.WriteLine($"Test2方法中x:{x},y{y}");}}
}

7.参数列表

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _08_参数列表
{internal class Program{static void Main(string[] args){//一个方法除了可以接收固定个数的参数外,还可以接受未知数量的参数Console.WriteLine(Sum(1,2,3,4));Console.WriteLine(Sum(3, 1));Test(1,"s",true,"a","v","e");//   Test2(new int[] {1,2});}//参数列表的格式 : params 数据类型[] 参数的名字public static int Sum(params int []nums){int sum = 0;//获取参数的参数的个数//Console.WriteLine(nums.Length);//Console.WriteLine(nums[0]);//Console.WriteLine(nums[1]);for(int i = 0; i < nums.Length; i++){//使用参数名[0] 拿到第一个参数  使用参数名[1] 拿到第二个参数....Console.WriteLine(nums[i]);sum += nums[i];}return sum;}//方法的参数可以同时使用普通的参数和参数列表public static void Test(int a, string b, bool c,params string[] strs){}//演示//参数是一个int类型的数组//public static void  Test2(int[] arr)//{//}}
}

8.作用域

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _09_作用域
{internal class Program{static void Main(string[] args){int a = 1;//从这里开始能访问a------//作用域://作用域就是一个变量可以使用的范围//局部作用域:声明的变量仅仅能在某个代码块中生效Console.WriteLine(a);//从这里结束不能访问a------}public static void Test1(){//Console.WriteLine(a);int b = 2;Console.WriteLine(b);{Console.WriteLine(b);int c = 3;}for (int i = 0; i < 5; i++){Console.WriteLine(i);}//Console.WriteLine(i);//Console.WriteLine(c);}}
}

上期练习题答案

  1. 从键盘上输入用户名admin和密码123,当二者都正确时,输出:用户名和密码输入正确,登陆成功
    当用户名或密码输入错误时,输出:用户名或密码错误,请重新输入,实现循环输入

              bool isSuccess = false;do{// 获取用户的输入Console.Write("请输入用户名:");string userName = Console.ReadLine();Console.Write("请输入密码:");string password = Console.ReadLine();// 判断是否匹配if (userName == "admin"){if (password == "123"){Console.WriteLine("登陆成功");isSuccess = true;}else{Console.WriteLine("密码错误");isSuccess = false;}}else{Console.WriteLine("用户名错误");isSuccess = false;}} while (!isSuccess)
    1. 用户登录系统时需要输入用户名和密码,系统对用户输入的用户名和密码进行验证。验证次数最多3次,超过三次则程序结束。
            int count = 3;do{Console.Write("请输入用户名:");string username = Console.ReadLine();Console.Write("请输入密码:");string password = Console.ReadLine();if (username == "admin" && password == "123456"){Console.WriteLine("登陆成功");break;}else{count--;if (count == 0){Console.WriteLine("登陆失败,你的机会已用尽");}else{Console.WriteLine("登陆失败,你还有 " + count + " 次机会");}}} while (count > 0);
    
    1. 打印101-200之间的素数(素数,也叫质数,除了1和其本身外,没有其他的除数整除,如2, 7, 17, 23…)
    for (int i = 101; i < 201; i++){bool Prime = true;for (int j = 2; j < i; j++){if (i % j == 0){Prime = false;break;}}if (Prime == true) Console.WriteLine(i + "为质数");else Console.WriteLine(i + "为合数");
    1. 循环输入商品编号和购买数量,系统自动计算每种商品的价钱(单价X数量),并累加总金额。
       //当输入n时结账(假设享受8折优惠)// 结账时,根据折扣计算应付金额,输入实付金额,并找零Console.WriteLine("*********************************");Console.WriteLine("请选择购买商品编号:");Console.WriteLine("1.T 恤   2.网球鞋   3.网球拍");Console.WriteLine("*********************************");Console.WriteLine();// 最后总的价格float sum = 0;// 保存是否继续y/nstring info = "";do{// 选择商品和编号Console.Write("请输入商品编号:");int id = int.Parse(Console.ReadLine());Console.Write("请输入商品数量:");int num = int.Parse(Console.ReadLine());// 计算// temp 此次购买的小合计float temp = 0;switch (id){case 1:// T恤temp = 245.0f * num;Console.WriteLine("T 恤¥245.0\t数量 " + num + "\t合计¥" + temp.ToString("F1"));break;case 2:// 网球鞋temp = 570.0f * num;Console.WriteLine("网球鞋¥570.0\t数量 " + num + "\t合计¥" + temp.ToString("F1"));break;case 3:// 网球拍temp = 399.0f * num;Console.WriteLine("网球拍¥399.0\t数量 " + num + "\t合计¥" + temp.ToString("F1"));break;default:break;}sum += temp;// 是否继续Console.Write("是否继续(y/n):");info = Console.ReadLine();Console.WriteLine();} while (info == "y");// 结账Console.WriteLine("折扣:0.8");float yingfu = (float)Math.Round((sum * 0.8f), 1);Console.WriteLine("应付金额:" + yingfu);Console.Write("实付金额:");float shifu = float.Parse(Console.ReadLine());Console.WriteLine("找钱:" + (shifu - yingfu));
5. 控制台接收行数 ,打印以下图形.如下图:
            // 图形打印Console.WriteLine("请输入行数:");int count = int.Parse(Console.ReadLine());//外层循环控制行数for (int i = 0; i < count; i++){// 内层循环控制星星的个数for (int j = 0; j < count - i; j++){Console.Write("★");}// 一行输出完成后换行Console.WriteLine();}Console.WriteLine("=========================");for (int i = 0; i < count; i++){// 循环显示空格for (int j = 0; j < count - (i + 1); j++){Console.Write(" ");}// 循环显示星星for (int j = 0; j < i + 1; j++){Console.Write("★");}// 换行Console.WriteLine();}Console.WriteLine("=========================");for (int i = 0; i < count; i++){// 循环显示空格for (int j = 0; j < i; j++){Console.Write(" ");}// 循环显示星星for (int j = 0; j < count - i; j++){Console.Write("★");}// 换行Console.WriteLine();}Console.WriteLine("=========================");for (int i = 0; i < count; i++){// 循环显示空格for (int j = 0; j < count - 1 - i; j++){Console.Write(" ");}// 循环显示星星for (int j = 0; j < i * 2 + 1; j++){Console.Write("★");}// 换行Console.WriteLine();}Console.WriteLine("=========================");for (int i = 0; i < count; i++){// 循环显示空格for (int j = 0; j < i; j++){Console.Write(" ");}// 循环显示星星for (int j = 0; j < (2 * count - 1) - 2 * i; j++){Console.Write("★");}// 换行Console.WriteLine();}Console.WriteLine("=========================");// 先定义两个变量,控制空和星星的个数int nullCount = count % 2 != 0 ? count / 2 : count / 2 - 1;int starCount = 1;// 循环输出9层for (int i = 0; i < count; i++){// 输出空for (int j = 0; j < nullCount; j++){Console.Write(" ");}// 输出星for (int j = 0; j < starCount; j++){Console.Write("★");}// 换行Console.WriteLine();// 如果总数是偶数,并且当前索引为中位数-1,则不修改星星和空的个数if (count % 2 == 0 && i == count / 2 - 1){continue;}if (i < count / 2){// 五个之前,每次输出后,星星+2,空格-1starCount += 2;nullCount--;}else{// 五个之后,每次输出后,星星+2,空格-1starCount -= 2;nullCount++;}}

本期练习题

  1. 定义一个函数,找出三个数中的最小值
  2. 定义一个函数,找出三个数中的最大值
  3. 定义一个函数,计算一个数的 N 次方 Pow(2, 3)返回8
  4. 定义一个函数,传递一个数组参数(参数列表),找出参数当中的最大值 >FindMax(1,2,3,6,10)返回10
  5. 定义一个方法,传入一个字符串类型的数组参数,输出倒叙的字符串
    ReverseString(“a”, “c”, “e”)返回 “eca”
  6. 定义一个方法,传入一个字符串类型的数组参数,输出这些字符是否为回文串
    一个字符串,正着和倒着是一样的
    abcba、12321、121、11、1221
    Test(“a”, “b”, “c”) 返回 false
    Test(“a”, “b”, “a”) 返回 true

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

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

相关文章

Linux 系统调用函数fork、vfork、clone详解

文章目录 1 fork1.1 基本介绍1.2 fork实例1.2.1多个fork返回值1.2.2 C语言 fork与输出1.2.3 fork &#x1f4a3; 2 vfork2.1 基本介绍2.2 验证vfork共享内存 3 clone3.1 基本介绍3.2 clone使用 1 fork 1.1 基本介绍 #include <sys/types.h> #include <unistd.h>p…

Unity 3D中使用泛型

目录 泛型所提供的好处有以下3点C#提供的泛型机制主要可以分为以下两种形式Mono运行时对泛型机制的优化泛型委托泛型委托中的泛型类型参数可以是以下3种中的其中一种&#xff1a;什么是泛型约束泛型约束一共有6种&#xff1a;泛型中的类型约束的几种形式类型约束的组合合法的约…

PS学习-抠图-蒙版-冰块酒杯等透明物体

选中图&#xff0c;ctrlA 全选 ctrlC复制 创建一个蒙版图层 选中蒙版Alt 点击进入 ctrlv 复制 ctrli 反转 原图层 ctrldelete填充为白色 添加一个背景&#xff0c;这个方法通用 首选创建一个 拖到最底部 给它填充颜色 这个可能是我图片的原因。视频是这样做的

五子棋小游戏(sut实验报告)

实验目的 实现人与人或人与电脑进行五子棋对弈 实验内容 启动游戏&#xff0c;显示游戏参数设置界面&#xff0c;用户输入参数后进入游戏界面&#xff0c;显示棋盘及双方博弈过程&#xff0c;游戏过程中可选择退出游戏。判定一方获胜后结束本局游戏&#xff0c;可选择继续下…

Mysql挂掉怎么办

思路 从库处理&#xff0c;relaylog&#xff0c;讲从库升级主库。 待主机恢复后&#xff0c;主机替换为从库。 具体操作 简介&#xff1a; 主库宕机 Master DOWN机-企业场景一主多从宕机从库切换主继续和从同步过程详解 登陆从库&#xff0c;show processlist; 查看两个线…

20个最佳ChatGPT博客写作提示

20 Best ChatGPT Prompts for Blog Writing 在数字化时代&#xff0c;内容为王&#xff0c;持续产出高质量、吸引人的博客文章是任何作家、营销人员或企业主的重要技能。随着对新鲜和相关性内容的需求不断增长&#xff0c;挑战往往在于生成想法、构建文章结构&#xff0c;并确…

Fiddler抓不到包

fiddler该设置的设置好之后&#xff0c;为啥就是抓不到包 以下都是以谷歌浏览器为例子 方法一&#xff1a; 将fidder证书导入到浏览器&#xff0c;设置搜索证书-->安全-->管理证书 这里可以看到将证书导入之后样子&#xff0c;名字为&#xff1a;DO_NOT_TRUST_Fiddler…

Linux操作系统裸机开发-环境搭建

一、配置SSH服务 1、下载安装ssh服务输入以下命令 sudo apt-get install nfs-kernel-server portmap2、建立一个供SSH服务使用的文件夹如以下命令 mkdir linux 3、完成前两步之后需要将其文件路径放到/etc/exports文件里输入以下命令&#xff1a; sudo vi /etc/esports 4.打…

线性回归 quickstart

构建一元一次方程 100个&#xff08;X, y &#xff09;&#xff0c;大概是’y3x4’ import numpy as npnp.random.seed(42) # to make this code example reproducible m 100 # number of instances X 2 * np.random.rand(m, 1) # column vector y 4 3 * X np.random…

最详细数据仓库项目实现:从0到1的电商数仓建设(数仓部分)

1、数仓 数据仓库是一个为数据分析而设计的企业级数据管理系统&#xff0c;它是一个系统&#xff0c;不是一个框架。可以独立运行的&#xff0c;不需要你参与&#xff0c;只要运行起来就可以自己运行。 数据仓库不是为了存储&#xff08;但是能存&#xff09;&#xff0c;而是…

创业板指399006行情数据API接口

# 测试&#xff1a;返回不超过10条数据&#xff08;2年历史&#xff09; https://tsanghi.com/api/fin/index/CHN/daily?tokendemo&ticker399006&order2Python示例 import requestsurl f"https://tsanghi.com/api/fin/index/CHN/daily?tokendemo&ticker399…

EtherCAT 开源主站 IGH 在 linux 开发板的移植和伺服通信测试

手边有一套正点原子linux开发板imax6ul&#xff0c;一直在吃灰&#xff0c;周末业余时间无聊&#xff0c;把EtherCAT的开源IGH主站移植到开发板上玩玩儿&#xff0c;搞点事情做。顺便学习研究下EtherCAT总线协议及其对伺服驱动器的运动控制过程。实验很有意思&#xff0c;这里总…

【JDBC编程】 Java程序操作数据库

目录 一、数据库编程的必备条件 二、什么是JDBC&#xff1f; 三、JDBC的使用 1. 准备工作 2. 建立数据库连接 2.1 加载驱动程序 2.2 数据库连接池技术 3. 正式操作 四、JDBC的局限性与MyBatis的优势 一、数据库编程的必备条件 编程语言&#xff0c;如Java&#xff0…

[M贪心] lc2789. 合并后数组中的最大元素(贪心+思维)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;2789. 合并后数组中的最大元素 2. 题目解析 挺有意思的一道题目。 这里的两数字合并&#xff0c;实际上就是两个数字之和变成了新的数字&#xff0c;再用这个数字和将这两个数字在数组中进行替代。 将这两个…

如何将csv文件转换为markdown表格

要在 Markdown 格式中显示 CSV 文件作为表格&#xff0c;你可以使用 Markdown 表格语法&#xff0c;并根据 CSV 文件的内容构建表格。以下是一个示例 Python 脚本&#xff0c;演示了如何读取 CSV 文件并将其内容转换为 Markdown 表格&#xff1a; import csv# 读取 CSV 文件 c…

创业新手看过来!四招助你开启成功之旅

如果你每个月的薪资仅有几千块&#xff0c;还背负着债务的重担&#xff0c;家中的老少都期盼着你为他们撑起一片天&#xff0c;那么&#xff0c;你每日都可能为了如何打破这一困境而焦虑不安。不过&#xff0c;请稍安勿躁&#xff0c;今天我将为你提供四个建议&#xff0c;或许…

Transformer学习笔记(二)

一、文本嵌入层Embedding 1、作用&#xff1a; 无论是源文本嵌入还是目标文本嵌入&#xff0c;都是为了将文本中词汇的数字表示转变为向量表示&#xff0c;希望在这样的高维空间捕捉词汇间的关系。 二、位置编码器Positional Encoding 1、作用&#xff1a; 因为在Transformer…

解锁区块链游戏数据解决方案

作者&#xff1a;stellafootprint.network 随着区块链技术的日新月异&#xff0c;游戏行业正迎来一场革命&#xff0c;催生了区块链游戏的崛起。这一变革不仅为用户带来了全新的互动体验&#xff0c;也开辟了全新的盈利渠道。然而&#xff0c;在这一新兴领域&#xff0c;数据的…

html--花瓣

代码 <!DOCTYPE html> <html lang"en" ><head> <meta charset"UTF-8"> <title>Petals</title><link rel"stylesheet" href"css/style.css"></head><body><div class"…

Jpg图片变gif怎么操作?1分钟教你在线生成

jpg是一种常见的图像文件格式&#xff0c;它使用有损压缩算法来减小文件大小。这意味着JPG图像可以在保持较高质量的同时减小文件大小&#xff0c;但会导致一些细节的损失。JPG图像适用于存储照片和其他需要高质量图像的场景。而GIF是一种支持动画的图像文件格式。与JPG不同&am…