笔记:不求甚解:不必过度去学习一点,这样会打击我的学习积极性,所以要理解学习为上,不懂的先放一放,回过头再来深究。
笔记:不求甚解:不必过度去学习一点,这样会打击我的学习积极性,所以要理解学习为上,不懂的先放一放,回过头再来深究。
console.
第九十四课 编程题-回文串-最长连续天数
1.“回文串”是一个正读和反读都一样的字符串,比如“level”“noon”等就是“回文串”。请写程序判断读入的字符串是否是“回文串”。
string a = Console.ReadLine();
bool temp = false;
for(int i = 0; i < a.Length / 2; i++)
{
if (a[i] == a[a.Length - 1 - i])
{
temp = true;
}
else
{
temp = false;
break;
}
}
if (temp==false)
{
Console.Write("不是回文串");
}
else
{
Console.Write("是回文串。");
}
这里注意a[i]与a.Length的关系,前者是从0开始计算,后面是从1开始计算,所以两者条件要统一才可以比较并用于判断。
当字符串为偶数是不用解释了,头与尾一对一的比较。
当字符串为奇数时,中间的数字自然不用比较了,用循环次数限制一下即可,因为整数除以2时只保留整数位的,所以a.Length/2是整数。
2. 最近夏日炎热,令张三非常不爽。张三开始研究天气的变化,历经千辛万苦,他收集了连续N(1<N<1000000)天的最高气温数据。
现在他想知道气温一直上升的最长连续天数。
样例输入: 1352357839 样例输出:5
string str = Console.ReadLine();
string[] strArray = str.Split(" ");
int[] intArray = new int[strArray.Length];
for (int i = 0; i < strArray.Length; i++)
{
int number = Convert.ToInt32(strArray[i]);
intArray[i] = number;
}
int count = 1;
int maxDays = 0;
for (int i = 0; i < intArray.Length - 1; i++)
{
if (intArray[i] < intArray[i + 1])
{
count++;
}
else
{
if (count > maxDays)
{
maxDays = count;
}
count = 1;
}
}
if (count > maxDays)
{
maxDays = count;
}
Console.WriteLine("气温连续升高的最长天数为:" + maxDays + "天");
注解:
for (int i = 0; i < intArray.Length - 1; i++)
样例中数字个数为10,这里表示0到8,所以循环为9次(0-8月1-9是一样的)
if (intArray[i] < intArray[i + 1])
前面的数字小于后面的数字,语句为true,只有在语句为false时,也就是前面的数字大于后面的数字时,语句才会跳转到else下的if语句中( if (count > maxDays))执行判断来完成记录的比较次数,这里的count初始数值为1. 当intArray[8] < intArray[9]时,语句执行循环到了尽头,而语句执行也停止在了count++此时count的值为2,此时程序向下继续执行 if (count > maxDays),但这是if语句判断条件为false所以maxDays的值保持上次结果并输出。
第九十三课 编程题-判断合法标识符
输入一个字符串,判断其是否是C#的合法标识符。
C#的合法标识符具备的条件为:
由字母、数字和下划线组成,并不能以数字开头。
string a = Console.ReadLine();
bool temp = true;
for (int b = 0; b < a.Length; b++)
{
if ((a[b] < 'a' || a[b] > 'z') && (a[b] < 'A' || a[b] > 'Z') && (a[b] < '0' || a[b] > '9') && (a[b] != '_'))
{
temp = false;
break;
}
}
if (a[0] >= '0' && a[0] <= '9')
{
temp = false;
}
if (temp)
{
Console.Write("合法字符。");
}else
{
Console.Write("非法标识符。");
}
bool的功能是给标签,给一个范围做了标签后,然后由这个标签来判断,并做出结果输出。
快捷键相关:
Ctrl+F5 开始调试:
判断一个字符串是否是合法标识符:
1.判断是否由数字、字母、下划线组成
2.判断是否是数字开头
# d
转义字符
\t (占位符/制表符) \n(换行)
第九十二课 编程题-排序-冒泡排序(手动)
编写一个控制台程序,要求用户输入一组数字并用空格隔开,对用户输入的数字从小到大的顺序输出。(Array.Sort方法和冒泡排列)
string a = Console.ReadLine();
string[] b = a.Split(" ");
int[] c = new int[b.Length];
for (int d = 0; d < b.Length; d++)
{
int e = Convert.ToInt32(b[d]);
c[d] = e;
}
for (int f = 0; f < c.Length - 1; f++)
{
for (int g = 0; g < c.Length - 1-f; g++)
{
if (c[g] > c[g + 1])
{
int temp = c[g];
c[g] = c[g + 1];
c[g + 1] = temp;
}
}
}
foreach (int h in c)
{
Console.Write(h + " ");
}
分析:
1.外层循环for (int f = 0; f < c.Length - 1; f++)
与
内层循环 for (int g = 0; g < c.Length - 1-f; g++)
其实是一个意思。
外层循环以为f++的增长与c.Length - 1(不变值)而随循环次而减少这次数,也就是他们之间的距离在缩短。
内层循环应为g=0(不变值),每次循环都从0开始,但c.Length - 1-f是每次都减少的,所以他们之间的距离也在缩小。
所以,内层循环和外层循环意思是一样的,但他们都同步。
2. c本来就是一个组,可以放在里面很多数字,所以当它是c[]时,就放心大胆的用foreach。
3. 这道题就是将字符串以空格拆分为一个一个的小字符串保存在字符串组中,在将字符串组中的没个成员分别转换为数字,并存放在数字组中,然后用冒泡排序方法将数字组中的数字从小到大排列,最后输出。
结构体课程 向量重要
搞清楚素数那一章
a+= 1→a=a+i1
第九十一课 编程题-排序-系统方法
1. 编写一个控制台程序,要求用户输入一组数字并用空格隔开,对用户输入的数字从小到大的顺序输出。(Array.Sort方法和冒泡排列)
string a = Console.ReadLine();
string[] b = a.Split(" ");
int[] c = new int[b.Length];
for(int i = 0; i < b.Length; i++)
{
int d = Convert.ToInt32(b[i]);
c[i] = d;
}
Array.Sort(c);
foreach(int d in c)
{
Console.Write(d + " ");
}
Array.sort9();对整数型数组进行从小到大排序。
字符zhi'biao'f
using System; //引入命名空间
name
第九十课 编程题-插入
1. 输入(n<=10)个整数,已经按照从小到大顺序排列好,现另外给出一个整数X,请将整数X插入序列中,并使新的序列仍有序排列。
还没做出来。。。。。。没想出来怎么插入到序列里,再容朕想想。
string a = Console.ReadLine();
string b = Console.ReadLine();
string[] c = a.Split(" ");
string[] d = b.Split(" ");
int[] e = new int[c.Length];
int[] w = new int[d.Length];
int j = 0;
for(int f = 0; f < c.Length; f++)
{
int g =Convert.ToInt32(c[f]);
e[f] = g;
}
for(int h = 0; h < d.Length; h++)
{
int z = Convert.ToInt32(d[h]);
w[h] = z;
}
for(int i=0;i<e.Length;i++)
{
if(e[i] > w[0])
{
j = i;
break;
}
}
for (int k = 0; k <= j - 1; k++)
{
Console.Write(e[k] + " ");
}
Console.Write(w[0] + " ");
for (int l = j; l < e.Length; l++)
{
Console.Write(e[l] + " ");
}
思路:
①先将字符串转换为以空格划分的字符串组
②再将字符串组中的字符分别转换为数字组
③接下来将数字组中的每个数字分别与输入的那一个数字比较,比较后就看你自己怎么设定if语句中的条件了
④然后利用数字组中每个数字的索引分段输出,你所输入的单独的那个数字也随着插入输出就可以了。
憋了我好几天,学编程真得有个好脑子,头发可能就不需要了。等我脑子清凉点再来听老师怎么将。
听完老师的讲解,我弄明白了这道题,但我的思路还是很难清晰的跟上老师的讲解速度,看来得多听几次了。
b=a++ 先赋值再自增
b=++a 先自增再赋值
索引:
Console.WriteLine("{0}+{1}={2}",a,b,a+b)
【{0}=a;{1}=b;{2}=a+b】
【{0}+{1}={2} =>a+b=a+b】