传值传址 结构体

Posted 浆糊033

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了传值传址 结构体相关的知识,希望对你有一定的参考价值。

传值
class Program { //传值 public void hs(int a,int b) { b = a + 10; } } static void Main(string[] args) { Program hanshu = new Program(); //传值:将变量名中存放的值进行传输 int x = 5; int y = 10; hanshu.hs(x,y); Console.WriteLine(y); }
结果为10

  

传址
class Program { //out 传址 public void hs1(int a, out int b) { b = a + 10; } static void Main(string[] args) { Program hanshu = new Program(); //传址:将这个变量名直接传输过去,若在另一边有负值情况,这边的值会发生变化 int x = 5; int y = 10; hanshu.hs1(x, out y); Console.WriteLine(y); Console.ReadLine(); }
结果为15

  

结构体
class Program { //结构体:自定义类型 值类型 //一组变量的组合 //需要定义的位置 class里面 main函数外面 //包含的变量可以是多种数据类型 //结构为值类型而不是引用类型,并且结构不支持继承 //学生信息结构体:学号,姓名,性别,分数 struct student { public int xh; public string name; public string sex; public double score; } static void Main(string[] args) { //实例化结构体 //student st=new student(); //st.xh = 1001; //st.name = "张三"; //st.sex = "男"; //st.score = 87; //student st1 = new student(); //st1.xh = 1002; //st1.name = "李四"; //st1.sex = "女"; //st1.score = 89; ArrayList al = new ArrayList(); Console.Write("请输入班级人数:"); int a = int.Parse(Console.ReadLine()); for (int i = 0; i < a;i++ ) { student st = new student(); Console.Write("请输入第{0}个学生的学号:",i+1); st.xh = int.Parse(Console.ReadLine()); Console.Write("请输入第{0}个学生的姓名:", i + 1); st.name = Console.ReadLine(); Console.Write("请输入第{0}个学生的性别:", i + 1); st.sex = Console.ReadLine(); Console.Write("请输入第{0}个学生的分数:", i + 1); st.score = double.Parse(Console.ReadLine()); al.Add(st); } Console.WriteLine("------------------------------"); for (int i = 0; i < al.Count;i++ ) { student st=(student)al[i]; Console.WriteLine("第{0}个学生的学号是{1},姓名是{2},性别是{3},分数是{4}",i+1,st.xh,st.name,st.sex,st.score); } Console.ReadLine(); }

练习:

//去超市选择要购买的商品
//0.开始购买
//1.洗发水 15元
//2.牙刷 5元
//3.可口可乐 3元
//4.水杯 12元
//5.毛巾 6元
//6.结算

//输入想要的物品编号,输入每种商品需要买几件

//结算:需要列出来商品名称、单价、数量、
//总价以及所有物品总价,结账时间
//然后输入交给收银员的钱数
//不够,请继续交钱
//够,结算,找钱

 

 

 


//流程1:选择【结算(退出)】,直接退出超市

//流程2:选择【开始购买】,打印出所有商品选项和结算选项,输入您所选的商品编号,编号错误,重新输入

//流程3:选择【开始购买】,打印出所有商品选项和结算选项,
//输入您所选的商品编号,若选择【结算】,打印未买任何商品,退出

//流程4:选择【开始购买】,打印出所有商品选项和结算选项,输入您所选的商品编号,
//若选择为1~5中任意一个商品,再问需要购买数量,
//将商品名称和商品单价和商品数量放入数组,存入集合,
//列出所有已购买的商品名称、单价、数量,
//列出所有选项,若选择为【结账】,
//将集合中已经存放好的一条购买数据以数组的方式取出来,打印并计算总价,
//缴费,输入金额若足够支付,直接结账,算找零的费用,打印小票时间,结束

//流程5:选择【开始购买】,打印出所有商品选项和结算选项,输入您所选的商品编号,
//若选择为1~5中任意一个商品,再问需要购买数量,
//将商品名称和商品单价和商品数量放入数组,存入集合,

//若多次购买,循环以下两条
//列出所有已购买的商品名称、单价、数量,列出所有选项,
//若继续选择商品,就继续问数量,将物品名称、单价。数量放入数组,存入集合

//若上方列出所有选项之后选择【结账】,
//将集合内存放的多条购买信息以数组的方式取出,打印并计算总价
//缴费, 输入金额若足够支付,直接结账,算找零的费用,打印小票时间,结束

//流程6:选择【开始购买】,打印出所有商品选项和结算选项,输入您所选的商品编号,
//若选择为1~5中任意一个商品,再问需要购买数量,
//将商品名称和商品单价和商品数量放入数组,存入集合,
//列出所有已购买的商品名称、单价、数量,
//列出所有选项,若选择为【结账】,
//将集合中已经存放好的一条购买数据以数组的方式取出来,打印并计算总价,
//缴费,输入金额若不足够支付,就继续索取缴费,直至能够支付起所购买的物品总价
//结账,算找零的费用,打印小票时间,结束

//流程7:选择【开始购买】,打印出所有商品选项和结算选项,输入您所选的商品编号,
//若选择为1~5中任意一个商品,再问需要购买数量,
//将商品名称和商品单价和商品数量放入数组,存入集合,

//若多次购买,循环以下两条
//列出所有已购买的商品名称、单价、数量,列出所有选项,
//若继续选择商品,就继续问数量,将物品名称、单价。数量放入数组,存入集合

//若上方列出所有选项之后选择【结账】,
//将集合内存放的多条购买信息以数组的方式取出,打印并计算总价
//缴费,输入金额若不足够支付,就继续索取缴费,直至能够支付起所购买的物品总价
//结账,算找零的费用,打印小票时间,结束

//流程8:选择【开始购买】,打印出所有商品选项和结算选项,输入您所选的商品编号,
//若选择为1~5中任意一个商品,再问需要购买数量,
//将商品名称和商品单价和商品数量放入数组,存入集合,

//若多次购买中,选项输入有误,提示重新输入,循环以下两条
//列出所有已购买的商品名称、单价、数量,列出所有选项,
//若继续选择商品,就继续问数量,将物品名称、单价。数量放入数组,存入集合

//若上方列出所有选项之后选择【结账】,
//将集合内存放的多条购买信息以数组的方式取出,打印并计算总价
//缴费, 输入金额若足够支付,直接结账,算找零的费用,打印小票时间,结束

//流程9:选择【开始购买】,打印出所有商品选项和结算选项,输入您所选的商品编号,
//若选择为1~5中任意一个商品,再问需要购买数量,
//将商品名称和商品单价和商品数量放入数组,存入集合,

//若多次购买中,选项输入有误,提示重新输入,循环以下两条
//列出所有已购买的商品名称、单价、数量,列出所有选项,
//若继续选择商品,就继续问数量,将物品名称、单价。数量放入数组,存入集合

//若上方列出所有选项之后选择【结账】,
//将集合内存放的多条购买信息以数组的方式取出,打印并计算总价
//缴费,输入金额若不足够支付,就继续索取缴费,直至能够支付起所购买的物品总价
//结账,算找零的费用,打印小票时间,结束

  1 truct Shop
  2         {
  3             public string sp;
  4             public int dj;
  5             public int sl;
  6         }
  7         static void Main(string[] args)
  8         {
  9             Console.WriteLine("0:开始购买");
 10             //Console.WriteLine("1:洗发水  15元");
 11             //Console.WriteLine("2:牙刷  5元");
 12             //Console.WriteLine("3:可口可乐  3元");
 13             //Console.WriteLine("4:水杯  12元");
 14             //Console.WriteLine("5:毛巾  6元");
 15             Console.WriteLine("6:结算");
 16             Console.Write("请输入选项:");
 17             int a = int.Parse(Console.ReadLine());
 18             Console.Clear();
 19             for (int i = 0; i == 0; )
 20             {
 21                 if (a == 6)
 22                 {
 23                     Console.WriteLine("您没有购买任何东西!");
 24                     i = 1;
 25                 }
 26                 else if (a != 0 && a != 6)
 27                 {
 28                     Console.Write("输入错误请重新输入:");
 29                     a = int.Parse(Console.ReadLine());
 30                 }
 31                 else
 32                 {
 33                     ArrayList al = new ArrayList();
 34                     int m = 0;
 35                     for (int j = 0; j==0; )
 36                     {
 37                         Shop shop = new Shop();
 38                         
 39                         bool x = true;
 40                         if (al.Count > 0)
 41                         {
 42                             for (int k = 0; k < al.Count; k++)
 43                             {
 44                                 Shop shop1=(Shop)al[k];
 45                                 Console.WriteLine("你已经购买了{0},单价{1},数量{2}", shop1.sp, shop1.dj, shop1.sl);
 46                             }
 47                         }
 48                         Console.WriteLine("1:洗发水  15元");
 49                         Console.WriteLine("2:牙刷  5元");
 50                         Console.WriteLine("3:可口可乐  3元");
 51                         Console.WriteLine("4:水杯  12元");
 52                         Console.WriteLine("5:毛巾  6元");
 53                         Console.WriteLine("6:结算");
 54                         Console.Write("请选择你要购买的物品编号:");
 55                         int n = int.Parse(Console.ReadLine());
 56                         switch (n)
 57                         {
 58                             case 1:
 59                                 shop.sp = "洗发水";
 60                                 shop.dj = 15;
 61                                 m++;
 62                                 Console.Write("请输入你要购买的物品数量:");
 63                                 break;
 64                             case 2:
 65                                 shop.sp = "牙刷";
 66                                 shop.dj = 5;
 67                                 m++;
 68                                 Console.Write("请输入你要购买的物品数量:");
 69                                 break;
 70                             case 3:
 71                                 shop.sp = "可口可乐";
 72                                 shop.dj = 3;
 73                                 m++;
 74                                 Console.Write("请输入你要购买的物品数量:");
 75                                 break;
 76                             case 4:
 77                                 shop.sp = "水杯";
 78                                 shop.dj =12;
 79                                 m++;
 80                                 Console.Write("请输入你要购买的物品数量:");
 81                                 break;
 82                             case 5:
 83                                 shop.sp = "毛巾";
 84                                 shop.dj = 6;
 85                                 m++;
 86                                 Console.Write("请输入你要购买的物品数量:");
 87                                 break;
 88                             case 6:
 89                                 if (m == 0)
 90                                 {
 91                                     Console.WriteLine("您没有购买任何东西!");
 92                                     j = 1; i = 1;
 93                                 }
 94                                 else
 95                                 {
 96                                     int z = 0;
 97                                     for (int k = 0; k < al.Count; k++)
 98                                     {
 99                                         Shop shop1 = (Shop)al[k];
100                                         Console.WriteLine("您选择了{0},单价为{1}元,数量为{2},总价为{3}", shop1.sp, shop1.dj, shop1.sl, shop1.dj*shop1.sl);
101                                         z += shop1.dj* shop1.sl;
102                                     }
103                                     Console.Write("合计{0}元,请缴费:", z);
104                                     int qian1 = 0;
105                                     for (int h = 0; h == 0; )
106                                     {
107                                         int qian = int.Parse(Console.ReadLine());
108                                         qian += qian1;
109                                         if (qian >= z)
110                                         {
111                                             Console.WriteLine("找现{0}元,欢迎下次光临!", qian - z);
112                                             Console.WriteLine("交易成功,交易时间为:" + DateTime.Now);
113                                             h = 1;
114                                             j = 1;
115                                             i = 1;
116                                         }
117                                         else
118                                         {
119                                             qian1 = qian;
120                                             Console.Write("缴费金额不足,请继续缴费:");
121                                         }
122                                     }
123                                 }
124                                 break;
125                             default:
126                                 Console.Write("没有您选择的物品,请重新选择:");
127                                 n = int.Parse(Console.ReadLine());
128                                 x = false;
129                                 break;
130                         }
131                         if (i == 0 && j == 0 && x == true)
132                         {
133                             shop.sl = int.Parse(Console.ReadLine());
134                             Console.Clear();
135                             Console.WriteLine("您选择了{0},单价为{1}元,数量为{2}。请按回车键继续购买!", shop.sp, shop.dj, shop.sl);
136                             al.Add(shop);
137                             Console.ReadLine();
138                         }
139                     }
140                     Console.ReadLine();
141                 }
142             }
143         }
View Code

 

//请输入班级人数,输入每个人的学号,姓名,和语文分数、数学分数和英语分数(要求使用结构体),
//求班级里两个语文分数是最高分的学生的所有信息;数学分数是最高分的两个学生的所有信息;英语平均分。

 

 1 class Program
 2     {
 3         //请输入班级人数,输入每个人的学号,姓名,和语文分数、数学分数和英语分数(要求使用结构体),
 4         //求班级里两个语文分数是最高分的学生的所有信息;数学分数是最高分的两个学生的所有信息;英语平均分。
 5         struct Xinxi
 6         {
 7             public int xh;
 8             public string name;
 9             public Score score;
10         }
11         struct Score
12         {
13             public double yuwen;
14             public double shuxue;
15             public double yingyu;
16         }
17         ArrayList al = new ArrayList();
18         static void Main(string[] args)
19         {
20             Console.Write("请输入班级人数:");
21             int n = int.Parse(Console.ReadLine());
22             Program xinxi = new Program();
23 
24             for (int i = 0; i < n; i++)
25             {
26                 Xinxi xx = new Xinxi();
27                 Console.Write("请输入第{0}个人的学号:", i + 1);
28                 xx.xh = int.Parse(Console.ReadLine());
29                 Console.Write("请输入第{0}个人的姓名:", i + 1);
30                 xx.name = Console.ReadLine();
31                 Console.Write("请输入第{0}个人的语文成绩:", i + 1);
32                 xx.score.yuwen = double.Parse(Console.ReadLine());
33                 Console.Write("请输入第{0}个人的数学成绩:", i + 1);
34                 xx.score.shuxue = double.Parse(Console.ReadLine());
35                 Console.Write("请输入第{0}个人的英语成绩:", i + 1);
36                 xx.score.yingyu = double.Parse(Console.ReadLine());
37                 xinxi.al.Add(xx);
38             }
39             for (int i = 0; i < n - 1; i++)
40             {
41                 for (int j = i + 1; j < n; j++)
42                 {
43                     Xinxi yu1=(Xinxi)xinxi.al[i];
44                     Xinxi yu2=(Xinxi)xinxi.al[j];
45                     if (yu1.score.yuwen<yu2.score.yuwen)
46                     {
47                         object t = xinxi.al[i];
48                         xinxi.al[i]=xinxi.al[j];
49                         xinxi.al[j]=t;
50                     }
51                 }
52             }
53             Xinxi a=(Xinxi)xinxi.al[0];
54             Xinxi b=(Xinxi)xinxi.al[1];
55             Console.WriteLine("语文成绩最高的两位学生的信息是,第一个学号{0},姓名{1},语文成绩{2},数学成绩{3},英语成绩{4};第二个学号{5},姓名{6},语文成绩{7},数学成绩{8},英语成绩{9}", a.xh, a.name, a.score.yuwen, a.score.shuxue, a.score.yingyu,b.xh, b.name, b.score.yuwen, b.score.shuxue, b.score.yingyu);
56             for (int i = 0; i < n-1; i ++)
57             {
58                 for (int j = i + 1; j < n; j++)
59                 {
60                     Xinxi yu1 = (Xinxi)xinxi.al[i];
61                     Xinxi yu2 = (Xinxi)xinxi.al[j];
62                     if (yu1.score.yuwen < yu2.score.yuwen)
63                     {
64                         object t = xinxi.al[i];
65                         xinxi.al[i] = xinxi.al[j];
66                         xinxi.al[j] = t;
67                     }
68                 }
69             }
70             Xinxi c = (Xinxi)xinxi.al[0];
71             Xinxi d = (Xinxi)xinxi.al[1];
72             Console.WriteLine("数学成绩最高的两位学生的信息是,第一个学号{0},姓名{1},语文成绩{2},数学成绩{3},英语成绩{4};第二个学号{5},姓名{6},语文成绩{7},数学成绩{8},英语成绩{9}", c.xh, c.name, c.score.yuwen, c.score.shuxue, c.score.yingyu, d.xh, d.name, d.score.yuwen, d.score.shuxue, d.score.yingyu);
73             double sum = 0;
74             for (int i = 0; i <  n; i ++)
75             {
76                 Xinxi e = (Xinxi)xinxi.al[i];
77                 sum += e.score.yingyu;
78             }
79             Console.WriteLine("英语平均分为:" + sum / n);
80             Console.ReadLine();
81         }
View Code

 

 

 

//定义一个结构体,存放关于车辆的几个信息
//将所有车的信息都放入集合中
//车型号 价格(W) 轴距 (mm) 油耗(L/100km)
//宝马320Li 38 2920 6.9
//宝马520Li 43 3108 7.2
//宝马730Li 89 3210 6.3
//奥迪A4L35TFSI 31 2869 6.2
//奥迪A6L30TFSI 43 3012 7.6
//奥迪A8L45TFSI 89 3122 8.1
//奔驰C200L 35 2920 6.1
//奔驰E260L 48 3014 6.7
//奔驰S320L 93 3165 8

 

//所有在售车辆中最便宜的

 

//求宝马中最便宜的车型是什么,所有信息列出

 

//选个轴距最长的

 

//选个轴距最长的,必须是奔驰

 

//想要一辆油耗最低的车

 

//想要一辆油耗最低的奥迪车

 

//我只有50万,看看能买什么车

 

//我只需要60万以上的车,列出来所有车型和所有信息

 

//轴距必须超过3m,列列表以上是关于传值传址 结构体的主要内容,如果未能解决你的问题,请参考以下文章

10月19日--传值传址结构体

传值传址。以及结构体的知识点 例题

理解C++传值传址引用调用

C语言结构体(传值vs传址)

C语言 - 结构体初识

C#传真传址 结构体