传值传址 结构体
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 }
//请输入班级人数,输入每个人的学号,姓名,和语文分数、数学分数和英语分数(要求使用结构体),
//求班级里两个语文分数是最高分的学生的所有信息;数学分数是最高分的两个学生的所有信息;英语平均分。
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 }
//定义一个结构体,存放关于车辆的几个信息
//将所有车的信息都放入集合中
//车型号 价格(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,列列表
以上是关于传值传址 结构体的主要内容,如果未能解决你的问题,请参考以下文章