一、冒泡排序
1、有一组杂乱的数据,要求从小到大进行排序,这时候我们可以从下标为0的元素开始,相邻两两进行比对,如果前一个元素比后一个元素大,则将前一个元素和后一个元素交换值,经过第一轮比对之后,我们可以知道最后一个元素一定是数组中最大的值,接下来再比对前n-1个元素,以此类推,每次都会得到一个最大值,最后数组就从下到达进行排序了。
2、使用Array.Sort(数组名)对数组进行排序
二、练习题
1、练习一
2、练习二
3、练习三
4、练习四
5、练习五
给定一串只包含小写字母的字符串,计算每个字母在字符串中出现的次数,然后输出只出现2次的字母的个数
6、练习六
三、代码展示
using System;
using System.ComponentModel;
using System.Security.Cryptography.X509Certificates;
namespace demo0929
{
class Program
{
static void Main(string[] args)
{
/*//例子:任意输入对应瓶数的可乐,输出对应喝了多少瓶,剩下几个空瓶(0 <= x <= 2)
//先定义总的瓶数 假设全部喝完
Console.WriteLine("请输入可乐瓶的数量:");
int he = Convert.ToInt32(Console.ReadLine());
int ping = he; //全部喝完剩下的空瓶
while (ping > 2)
{
he += ping / 3; //第一次喝完去换,又可以喝ping/3瓶
//计算剩下的空瓶
ping = ping / 3 + ping % 3;
}
Console.WriteLine("一共可以喝{0}瓶可乐,剩下{1}空瓶", he, ping);*/
/*//例子:字符串加密
char[] sList = Console.ReadLine().ToCharArray();
//将数组通过某个字符连接成字符串string.Join(连接符,数组)最后返回一个字符串 和Split相反
string[] stList = { "1", "2", "3", "4" };
Console.WriteLine(string.Join("-", stList));
for (int i = 0; i < sList.Length; i++)
{
if (('a' <= sList[i] && sList[i] <= 'z') || ('A' <= sList[i] && sList[i] <= 'Z'))
{
if (('x' <= sList[i] && sList[i] <= 'z') || ('X' <= sList[i] && sList[i] <= 'Z'))
{
sList[i] = Convert.ToChar(sList[i] - 23);
}
else
{
sList[i] = (char)(sList[i] + 3);
}
}
}
Console.WriteLine(string.Join("", sList));*/
/* //冒泡排序
*//*假设有6个数 循环5次 5轮
比对每一轮的数 两两比对
上一轮已经确定好了一个数 下标就要往前挪一位
6 - 1 - 轮数*//*
int[] num = { 17, 3, 5, 25, 1, 73, 2 };
for (int i = 0; i < num.Length - 1; i++) //只执行num.length-1次
{
for (int j = 0; j < num.Length - 1 - i; j++) //比对每一轮的数,相邻两两进行比对
{
//定一个中间值
int temp = num[j];
if (num[j] > num[j + 1])
{
num[j] = num[j + 1];
num[j + 1] = temp;
}
}
}
Console.WriteLine(String.Join(" ", num));*/
/*//使用Array.Sort(数组名)对数组进行排序
int[] num = { 2, 3, 4, 5, 62, 65, 8, 4 };
Array.Sort(num); //会改变原来数组
Console.WriteLine(String.Join(" ", num));*/
/*Console.WriteLine("请输入一组用空格隔开的数据:");
string str = Console.ReadLine(); //获取控制台输入的一组数据
string[] strArray = str.Split(" "); //将数字用空格分割成数组的元素
int[] numArray = new int[strArray.Length]; //创建一个整型数组
for (int i = 0; i < strArray.Length; i++) //遍历,给numArray赋值
{
numArray[i] = Convert.ToInt32(strArray[i]);
}
Array.Sort(numArray); //给数组排好序
//接下来,输入你要插入的数
int num = Convert.ToInt32(Console.ReadLine());
//定义一个变量来记录插入的位置下标
int numIndex = 0;
//循环有序的数组,判断num在不在元素中间
for (int i = 0; i < numArray.Length - 1; i++)
{
if (numArray[i] <= num && num <= numArray[i + 1])
{
numIndex = i + 1;
break;
}
}
//特殊情况 大于最后一个值
if (num > numArray.Length - 1)
{
numIndex = numArray.Length;
}
//创建一个新的数组
int[] num2Array = new int[numArray.Length + 1];
//循环遍历 开始赋值
//0到numIndex-1 直接就是和第一个数组中的元素一样 下标位置也是一样
for (int i = 0; i < numIndex; i++)
{
num2Array[i] = numArray[i];
}
//numIndex 直接插入num 的值
num2Array[numIndex] = num;
//numIndex+1 到最后一个下标的位置
for (int i = numIndex + 1; i < num2Array.Length; i++)
{
num2Array[i] = numArray[i - 1];
}
Console.WriteLine(string.Join(" ", num2Array));*/
/*//合法的变量名 首个字符不能是数字 有数字字母下划线组成 输入一个字符串判断那它是不是一个合法的标识符
Console.WriteLine("请输入一个字符串:");
string str2 = Console.ReadLine();
//创建一个中间变量来记录是否是合法的标识符
Boolean isleagal = false;
//循环遍历每一个字符
for (int i = 0; i < str2.Length; i++)
{
if (48 <= str2[i] && str2[i] <= 57 || 65 <= str2[i] && str2[i] <= 90 || 97 <= str2[i] && str2[i] <= 122 || str2[i] == 95)
{
if (i == 0 && 48 <= str2[i] && str2[i] <= 57)
{
break;
}
isleagal = true;
}
else
{
isleagal = false;
break;
}
}
if (isleagal)
{
Console.WriteLine("合法");
}
else
{
Console.WriteLine("不合法");
}*/
/*//回文串:正读和反读都一样的字符串,比如noon
//先输入一个字符串
string str3 = Console.ReadLine();
//先定义一个变量 记录是否是回文串
Boolean isPalindrome = true;
//循环字符串
for (int i = 0; i < str3.Length / 2; i++)
{
if (str3[i] != str3[str3.Length - i - 1])
{
isPalindrome = false;
break;
}
}
if (isPalindrome)
{
Console.WriteLine("是回文串");
}
else
{
Console.WriteLine("不是回文串");
}*/
/*//记录气温连续下降的天数
string str4 = Console.ReadLine();
string[] strArray = str4.Split(" ");
int[] temp = new int[strArray.Length]; //气温数组
//给气温数组赋值
for (int i = 0; i < strArray.Length; i++)
{
temp[i] = Convert.ToInt32(strArray[i]);
}
//创建一个变量记录每次连续降温的天数
int count = 1;
//创建一个变量记录最大的连续天数
int maxDays = 1;
//开始循环遍历气温值
for (int i = 0; i < temp.Length - 1; i++)
{
//后一个比前一个小,就count++
if (temp[i] > temp[i + 1])
{
count++;
}
else
{
//先于最大值对比 如果大就给maxDays重新赋值
if (count > maxDays)
{
maxDays = count;
}
//中断了 重新给coun赋值为1
count = 1;
}
}
//因为如果最长连续天数刚好在最后,循环结束是没有更新maxDays中的值
if (count > maxDays)
{
maxDays = count;
}
//输出最长的连续天数
Console.WriteLine(maxDays);*/
//先定义一个变量来存预算
string str =Console.ReadLine();
string[] strArrray = str.Split(" ");
int[] burget = new int[strArrray.Length];
//定义一个变量记录给妈妈的钱
int mom = 0;
//定义一个变量记录小明剩下的钱
int self = 0;
//定义一个变量记录小明最终的钱,包括妈妈存的
int all=0;
//定义一个变量 表示有没有超出预算 默认没有
Boolean isOut = false;
//定义一个变量记录超出预算的月份
int m = 1;
//赋值
for(int i = 0; i < strArrray.Length; i++)
{
burget[i] = Convert.ToInt32(strArrray[i]);
}
//遍历数组
for(int i=0; i<burget.Length; i++)
{
if(300 + self - burget[i] > 0)
{
mom += ((300 + self - burget[i]) / 100) * 100;//给妈妈的钱
//当前月份剩下的钱
self = 300 + self - burget[i] - ((300 + self - burget[i]) / 100) * 100;
if (self < 0)
{
isOut = true;
m = i + 1;
break;
}
}
else
{
m = i + 1;
isOut = true;
break;
}
}
//判断有没有超出预算
if (isOut)
{
Console.WriteLine(-m);
}
else
{
Console.WriteLine("小明实际总的钱为{0}元", self + mom * 1.2);
}
}
}
}