Comsole.writeline("Hello World")
Commsole.readline()
Comsole.writeline("Hello World")
Commsole.readline()
第七十课 循环嵌套的基本用法
1. 输出每行10个*,共输出4行。
int temp = 0;
for(int i = 1; i <= 40; i++)
{
Console.Write("*");
temp++;
if(temp == 10)
{
Console.WriteLine();
temp = 0;
continue;
}
}
老师的写法:
int temp = 0;
for(int i = 1; i <= 4; i++)
{
for(int n = 1; n<=m; n++)
{
Console.Write("*");
}
Console.WriteLine();
}
2. 输入两个整数n和m,输出n行m列的*阵
int n= Convert.ToInt32(Console.ReadLine());
int m= Convert.ToInt32(Console.ReadLine());
int temp = 0;
for(int i = 1; i <= (n * m); i++)
{
Console.Write("*");
temp++;
if (temp == n)
{
Console.WriteLine();
temp = 0;
continue;
}
}
修改成老师的写法:
int n = Convert.ToInt32(Console.ReadLine());
int m = Convert.ToInt32(Console.ReadLine());
for(int a = 1; a <= n; a++)
{
for(int b = 1; b <= m; b++)
{
Console.Write("*");
}
Console.WriteLine();
}
还是老师的写法好。
第六十八课 循环中的continue
1. continue和break
它们都是终止循环的。
continue:
终止当前循环,继续下次循环。
break:
终止整个循环。
/*int ge, shi,shi1, bai;//123
for (int a = 100;a < 1000; a++)
{
bai = a / 100;
shi = a % 100;
shi1 = shi / 10;
ge = shi % 10;
if ((ge * ge * ge) + (shi1 * shi1 * shi1) + (bai * bai * bai) == a)
{
Console.WriteLine(bai + ""+shi1 + "" + ge + "");
}
}*/
//1234
/*int n = Convert.ToInt32(Console.ReadLine());
for (; ; )
{
int ge = n % 10;
Console.WriteLine(ge);
n /= 10;
if (n == 0)
{
break;
}
}*/
//1204
int n = Convert.ToInt32(Console.ReadLine());
int x = 1000000;
while (x!=0)
{
int i = n / x;
if (i != 0)
{
n = n - x * i;
Console.Write(i);
}
x /= 10;
第六十八课 编程题(因数和质数)
1. 假设有个隧道,隧道以字符‘#’结束。挖矿的过程中,会遇到钻石‘*’和美金‘1’~‘9’,让矿工小六挖到隧道的尽头,假设每个钻石价值500美金,统计小六挖到了价值多少美金的收获。
样例输入:ka4d*s6kkl8s*d9fyo#
样例输出:1027
char c;
int number = 0;
int temp = 0;
int he = 0;
do
{
c = (char)Console.Read();
if (c >= '0' && c <= '9')
{
int num = c - '0';
number += num;
}
if (c == '*')
{
temp += 500;
}
} while (c != '#');
he += (number + temp);
Console.WriteLine(he);
还是练练do...while吧,嘿嘿!
修改:
char c;
int number = 0;
int he = 0;
do
{
c = (char)Console.Read();
if (c >= '0' && c <= '9')
{
int num = c - '0';
number += num;
}else
if (c == '*')
{
number += 500;
}
} while (c != '#');
Console.WriteLine(number);
number在语句执行中可以反复使用,不用在另定义一个变量了。if语句的使用时,如果只有两个分支条件,最好使用if...else if。
2. 输入一个整数,输出该整数的因数个数和所有因数,输入的整数大于0,小于100000
样例输入9
3
1 3 9
int n= Convert.ToInt32(Console.ReadLine());
int temp = 0;
for (int i = 1; i <= 100000; i++)
{
if (n % i == 0)
{
Console.Write(i + " ");
temp += 1;
}
}
Console.WriteLine();
Console.WriteLine(temp);
因为先输出的因数后输出的因数个数,这样的方法不符合题中的要求。
修改为:
int n= Convert.ToInt32(Console.ReadLine());
string cc = "";
int temp = 0;
for (int i = 1; i <= 100000; i++)
{
if (n % i == 0)
{
cc += i + " ";
temp += 1;
}
}
Console.WriteLine(temp);
Console.WriteLine(cc);
其实我一直有个认识误区,种以为用字符串来输出算是偏门的方式,现在理解了,只要编译简单,逻辑合理,结果输出无误,那么任何方法都可以用,它们都一样。
3. 输入一个正整数,判断该数是否是质数,输入的数字大于0,小于100000.
如果为质数输出yes,如果不是则输出no。
样例输入 103
输出yes
nt n = Convert.ToInt32(Console.ReadLine());
int temp = 0;
for(int i = 1; i <= 100000; i++)
{
if (n % i == 0)
{
temp++;
}
}
if (temp == 2)
{
Console.Write("yes");
}
else
{
Console.Write("no");
}
https://vlsualstudio.microft.com/downlo ad s/
老师可以纠正,我们的写法比较死,有些方法不熟
string a = Convert.ToString(Console.ReadLine());
string[] b = a.Split(" ");
int[] d = new int[b.Length];
for (int i = 0; i < b.Length; i++)
{
d[i] = Convert.ToInt32(b[i]);
}
for (int x = 0; x < d.Length; x++)
{
int suouin = x;
int NEW = d[x];
for (int i = x + 1; i < d.Length; i++)
{
if (NEW > d[i])
{
NEW = d[i];
suouin = i;
}
}
int linfgs = d[x];
d[x] = d[suouin];
d[suouin] = linfgs;
}
foreach (int f in d)
{
Console.Write(f + ",");
}
int[] xing = new int[(d.Length )+ 1];
Console.WriteLine(xing.Length);
Console.WriteLine("请再输入一个数");
int y = Convert.ToInt32(Console.ReadLine());
int[] z = new int[d.Length + 1];
int ysuoy = z.Length - 1;
for(int i = 0; i < d.Length; i++)
{
if (y <= d[i])
{
ysuoy = i;
break;
}
}
for(int i = 0; i < z.Length; i++)
{
if (i < ysuoy)
{
z[i] = d[i];
}else if (i == ysuoy)
{
z[i] = y;
}
else
{
z[i ] = d[i-1];
}
}
foreach(int f in z)
{
Console.Write(f + "/");
}
第六十七课 编程题(单个字符读取)
1. 数字和字符混合在一起,作为一个优秀的挖掘人员,把输入的数字挖出来,并计算这些数字的和,并输出,@作为输入的结束。
样例输入23a34a34@
样例输出19
bool temp = true;
int he = 0;
while (temp)
{
char a = (char)Console.Read();
if (a != '@')
{
if (a >= '0' && a <= '9')
{
int number = a - '0';
he += number;
}
}
else
{
temp = false;
}
}
Console.Write(he);
我是这样写的,真心不习惯用do...while语句,为什么用while都能些的非得要用do...while语句呢?可能经历的少吧。
第六十六课 编程题
1. 回文数指正序(从左到右)和倒序(从右到左)读都是一样的整数。输入一个数,判断是否是回文数。输入的整数大于0,小于1000000。如果是回文数输出yes,不是则输出no。
样例输入 2397 输出 no
样例输入2992 输出yes
int n= Convert.ToInt32(Console.ReadLine());
int b = n;
int number = 0;
while (b != 0)
{
int temp = b % 10;
number = number * 10;
number = number + temp;
b = b / 10;
}
Console.WriteLine(number);
if (number == n)
{
Console.WriteLine("yes");
}
else
{
Console.WriteLine("no");
}
编程如果慢慢学还蛮有意思的。
ctrl+k,ctrl+u注释
ctrl+k,ctrl+c取消注释
#inclunde
Console.writeLine("Hello World!");
Windows系统里面,每行结尾其实是“<回车><换行>”,即“ \r\n”
char a = (char)Console.Read();
char b = (char)Console.Read();
Console.WriteLine("-------");
Console.WriteLine(a);
Console.WriteLine("-------");
Console.WriteLine(b);
Console.WriteLine("-------");
Console.WriteLine(a == '\r' && b == '\n');
直接敲回车,结果为true
第六十五课 编程题(循环体的标志位)
1. 随机输入一个整数num,输出一个新的数,新数恰好与原数每一位上的数字相反,(如果原数末尾有多个零,输出的新数高位不含0)。
int num = Convert.ToInt32(Console.ReadLine());
int temp = 1;
int he = 0;
string fei = "";
while (num > 1)
{
int i = num % 10;
num = num / 10;
if (i > 0)
{
fei += i;
}
}
Console.WriteLine(fei);
我这属于作弊不?嘿嘿!先学到这儿,我再想想。
2. 输入一个整数,如果这个数字末尾有数字0,则将末尾的0全部去掉,直到遇到不是零的数字,但输入的整数中间的0保留。
(这个我还没想好!!看了老师的讲解我也得好好反应反应,脑子被搅和乱了。)
int n= Convert.ToInt32(Console.ReadLine());
bool yudao = false;
while (n != 0)
{
int i = n % 10;
if(yudao == false)
{
if (i != 0)
{
Console.Write(i);
yudao = true;
}
}
else{
Console.Write(i);
}
n = n / 10;
利用bool的两个判断的性质,来从一个判断中跳到另一个判断,这样的方法很好用,很经典Console.Write(i);
yudao = true;
这里的输出语句输出了一个数字,就是被判断不为零的第一个数字,所以要输出一下,然后将判断更改为另一面,就是true,跳出满足false条件的判断。
标志位:(个人定义的哈)
标记一个条件来判断,从而满足条件后跳出此标记的判断,并进入另一条语句。
其实没那么难,如果当时反应不过来就先干别的,回头再想,逻辑这东西如果不是天生的好,那么大家就都一样。
第六十四课 编程题
1. 编写一个程序,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方等于该数本身,例如153 = 1 * 1 * 1 * 5 * 5 * 5 * 3 * 3 * 3,所以153是“水仙花数”。
for(int i = 100; i<=999; i++)
{
int ge = i % 10;
int shi = (i / 10) % 10;
int bai = i / 100;
if (i == ge * ge * ge + shi * shi * shi + bai * bai * bai)
{
Console.WriteLine(i);
}
}
三位数中的水仙花数,那就从最小的三位数一个个检查到最大的三位数,所以要在这起见遍历三位数,满足条件的打印出来。
2. 输入任意一个位数未知的整数,输出这个数每一位上的数字,输出的时候,从各位开始输出,霉输出一个数字换一行。
int n= Convert.ToInt32(Console.ReadLine());
while (n > 0)
{
int a = n % 10;
n = n / 10;
Console.WriteLine(a);
}
2. 随机输入一个位数未知的整数,去除这个整数各个位上的0,形成新的数,并输出。输入的数字n大于0,小于1000000。样例输入20603样例输出263
int n= Convert.ToInt32(Console.ReadLine());
int temp = 0;
int i = 1;
while (n > 1)
{
int a = n % 10;
n = n / 10;
if( a > 0)
{
temp += a * i;
i *= 10;
}
}
Console.WriteLine(temp);
//是注释
/*
*/ 多行注释
\ 转义
\n 换行
\t 四个空格?
\\ 表现为一个\
\"代表一个"
\n da'biao换行
第六十三课 编程题(复利的威力)
1. 已知sn=1+1/2+1/3+......1/n,显然对于任意一个整数k,当n足够大的时候,sn大于k。现输入一个整数k(1<=k<=15),要求计算出一个最小的n,使得sn>k。输入一个整数k,输出一个整数n。
样例:输入1,输出2.
int k= Convert.ToInt32(Console.ReadLine());
double sn = 0;
int n = 0;
if (1 <= k && k <= 15)
{
while (sn <= k)
{
n++;
sn += 1.0 / n;
}
Console.WriteLine(n);
}
else
{
Console.WriteLine("您的输入错误");
}
注:
难点在于n的赋值和n++的位置,放在前面就要赋值为0;放在后面就要提前赋值为1,那么输出的时候n的值就要减去1。
2. 我国现有14亿人口,按照每年0.1%的增长速度,n年后将有多少人呢?
int n =Convert.ToInt32(Console.ReadLine());
double x = Convert.ToInt32(Console.ReadLine());
for(int i = 1; i <= n; i++)
{
x += x * 0.001;
}
Console.WriteLine(x);
修改成老师的答案:
int n =Convert.ToInt32(Console.ReadLine());
double x = Convert.ToInt32(Console.ReadLine());
for(int i = 1; i <= n; i++)
{
x *= 1.001;
}
Console.WriteLine(x);
我终于知道人口增长统计表里的小数是怎么来的了,曾经还吐槽人家人口怎么还能有小数?怎么还能有半个人?唉!
3. 农夫约翰在去年赚了一大笔钱!他想要把这些钱用于投资,并对自己能得到多少收益感到好奇。已知投资的复合年利率为R(0到20之间的整数)。约翰现有总值为M的钱(100到1000000之间的整数)。他清楚地知道自己要投资y年(范围0到400)。请帮助他计算最终他会有多少钱。并输出它的整数部分。
数据保证输出结果在32位有符号整数范围内。
输入三个整数r、m、y,输出整数,即最终拥有多少钱。
Console.WriteLine("输入投资复合利率值");
double r = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("输入投资金额");
double temp = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("输入投资年数");
int y = Convert.ToInt32(Console.ReadLine());
if (0 < r && r <= 20 && 100 < temp && temp < 1000000 && 0 < y && y < 400)
{
for(int i = 0; i < y; i++)
{
temp += temp * (r / 100.0);
}
int m = (int)temp;
Console.WriteLine("利率为:"+r+"%"+" "+"收益金额为:"+m+" "+"投资年数为:"+y+"年");
}
else
{
Console.WriteLine("输入正确数值");
改成老师的答案:
Console.WriteLine("输入投资复合利率值");
double r = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("输入投资金额");
double m = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("输入投资年数");
int y = Convert.ToInt32(Console.ReadLine());
if (0 < r && r <= 20 && 100 < m && m < 1000000 && 0 < y && y < 400)
{
for(int i = 0; i < y; i++)
{
m = (int)(m+(m * (r / 100.0)));
}
Console.WriteLine("利率为:"+r+"%"+" "+"收益金额为:"+m+" "+"投资年数为:"+y+"年");
}
else
{
Console.WriteLine("输入正确数值");
008-程序的基本语法
007-运行第一个HelloWorld程序
第1个语法输出:
Console.WriteLine("Hello World!");
using System; //注释:引入命名空间
namespace _001_开始
namespace 跟上的命名空间的名字,默认不能已数字开始,一般使用英文
class program 创建了类
main 创建了一个main方法