首页 > 代码库 > 进制转换、基础语音、语句的总结与练习
进制转换、基础语音、语句的总结与练习
C#阶段总结
一、进制转换
计算机中采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利的途径、节省设备等优点。
我们常用的进制还有八进制、十进制、十六进制,其特点是:
(1)逢N进一 N是每种进位计数制表示一位数所需要的符号数目为基数。
二进制:逢二进一,借一当二
八进制:逢八进一,借一当八
十六进制:逢十六进一,借一当十六
(2)数制转换 不同进位计数制之间的转换原则:不同进位制之间的转换是根据两个有理数如相等,则两数的整数部分和分数部分一定分别相等的原则进行的。也就是说,若转换前两数相等,转换后仍必须相等。
二进制:有2个基数:0,1
八进制:有8个基数:0,1,2,3,4,5,6,7
十进制:有10个基数:0,1,2,3,4,5,6,7,8,9
十六进制:有16个基数:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(A=10,B=11,C=12,D=13,E=14,F=15)
进制之间的转换
(1)十进制转换为N进制:用十进制数字除以N取余直至商为0,余数倒写即可
(2)N进制转换为十进制:由右至左,依次将每个位上的数字乘以N的(n-1)次方,再相加即可(n为由右至左依次的位数)
(3)二进制与八进制之间的转换 23=8
二进制转换为十进制 从右至左,每3个数用八进制的数字代替,依次为八进制的个位、十位、百位
八进制转换为二进制 从右至左,每个八进制数字用二进制数代替
(二进制与十六进制之间的转换同二进制与八进制之间的转换 24=16)
二、语言基础
1、项目结构
1.1 项目后缀
.config 配置文件(存放配置参数文件)
.csproj 项目文件(管理文件项)
.sln 解决方案文件(管理项目)
.cs 源文件(程序代码)
1.2 函数的四要素:名称,输入,输出,加工
1.3 主函数
Static void Main (string[] args)
{主函数内容}
1.4 命名空间 namespace ConsoleApplicationl
类 class Program
方法 static void Main(string[] args)
程序引用的库 using
1.5 注释的三种方式
//注释一行
/**/注释一段区域
///放在函数上面使用,给函数加注解
1.6 转义字符
\n 换行 \t 水平制表符 \v 垂直制表符
三、数据类型
常用的数据类型有引用型(string-字符串类型),值类型(int-整数类型,double-双精度浮点类型)等。
基本的类型转换
1、自动转换(隐式转换) 从值类型转换到引用类型的时候
如:int a=5; string b = a.ToString(); 输出b则为字符串类型的”5”
2、强制转换(显式转换) 从引用类型转换到值类型时候,或者从浮点型转换到整数型
当从一个引用类型转换到值类型时,必须引用类型中的数据元素,能够转换成值类型的容量范围内的数据才行,否则不能转
(1)用()
如:int a; double b=12.34; a=(int)b; 将b由double类型转换为int类型,再赋值给a
(2)用convert
如:int a; double b=12.34; a=convert.ToInt32(b); 将b由double类型转换为32位的int整数类型,再赋值给a
如:string a; double b=12.34; a=convert.ToString(b); 将b由double类型转换为string类型,再赋值给a
(3)用Parse
如:int a; double b=12.34; a=int.Parse(b); 将b由double类型转换为int类型,再赋值给a
如:string a; double b=12.34; a=string.Parse(b); 将b由double类型转换为string类型,再赋值给a
四、运算符
1、算数运算符:++(加加) --(减减) *(乘) /(除) %(取余) +(加) -(减)
★前++和后++的区别:
a=++b; 意思为,先计算b=b+1,再将b的值赋值给a,此时a=b;(先计算后赋值)
a=b++; 意思为,先将b的值赋值给a,再计算b=b+1,此时b>a;(先赋值后计算)
2、关系运算符:
>(大于) <(小于) >=(大于等于) <=(小于等于) ==(等于) !=(不等于)
3、逻辑运算符
&&(与 并且) ||(或) !(非--注:优先级最高)
4、条件运算符: ? : ; ?判断条件是否满足,满足则执行:前内容,不满足则执行:后内容
如:x=(x>12)?1:2; 如果x>12返回1,x<=12返回2
5、赋值 = += -= *= /=
+=:s+=5; 意思为s=s+5; -=,*=,/=同+=
五、语句
语句是指程序命令,都是按照顺序执行的。
语句结束的标点是分号(;)。
语句块括在括号{}中,并且可以包含嵌套块。
语句类型常用的有:顺序语句,分支语句,循环语句。
分支语句:if else;switch case.
循环语句:for ;(do) while.——循环,循环的嵌套,穷举,迭代
作用:反复执行同一段代码
循环四要素:初始条件、循环条件、循环体、状态改变
循环的最后一句是:当循环条件不再满足!!!
分支语句格式有一下几种:
(1)格式一:
If (判断条件<若是ture则执行,若是false则跳过>)
{ //if判断为ture则执行此代码}
(2)格式二:二选一
If (判断条件<若是ture则执行,若是false则跳至else>)
{ //if判断为ture则执行此代码}
else
{ //if判断为false则执行此代码}
(3)格式三:多选一(同 switch case;break;)
If (判断条件<若是ture则执行此代码并终止以下其他的判断,若是false则跳至下一else if>)
{ //if判断为ture则执行此代码}
else if(判断条件)
{ //else if判断为ture则执行此代码,否则跳过}
……
else
{ //以为if判断均不满足则执行此代码}
(4)格式四:多个if判断是否满足多个条件
If((判断条件<若是ture则执行此代码,否则不执行,然后跳至下一个if继续判断是否满足)
//1、输入输出练习——输入你的姓名、年龄、工作单位,连成一句话打印出来
Console.Write("请输入你的姓名:");
string name = Console.ReadLine();
Console.Write("请输入你的年龄:");
string age = Console.ReadLine();
Console.Write("请输入你的工作单位:");
string danwei = Console.ReadLine();
Console.WriteLine("你的姓名是" + name + ",今年" + age + "岁了,在" + danwei + "工作。");
Console.WriteLine("你的姓名是{0},今年{1}岁了,在{2}工作。", name, age, danwei);
//2、赋值练习——问:现在几点了?输入一个时间(0-23),若是早晨,需要加am,若是下午,需要加pm
Console.Write("请问现在几点了?");
int time = Convert.ToInt32(Console.ReadLine());
string t = time > 12 ? (time - 12) + "pm" : time + "am";
Console.WriteLine("现在时间是{0}点。", t);
//3、分支语句练习——输出100以内的与7有关的整数——输出1000以内的与7有关的数字
Console.WriteLine("100以内与7有关的数字有:");
for (int i = 1; i <= 100; i++)
{
if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7)
{
Console.Write(i + "\t");
}
}
Console.WriteLine();
//4、分支语句练习——输入年、月、日,判断是否正确——如果输入错误,请重新输入
Console.Write("请输入年份:");
int year = int.Parse(Console.ReadLine());
if (year > 0 && year <= 9999)
{
Console.Write("请输入月份:");
int month = int.Parse(Console.ReadLine());
if (month > 0 && month <= 12)
{
Console.Write("请输入几号:");
int day = int.Parse(Console.ReadLine());
if (day > 0 && day <= 31)
{
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
Console.WriteLine("你输入的日期是{0}年{1}月{2}日。", year, month, day);
}
else if (month == 4 || month == 6 || month == 9 || month == 11)
{
if (day == 31)
{
Console.WriteLine("你输入的日期错误。");
}
else
{
Console.WriteLine("你输入的日期是" + year + "年" + month + "月" + day + "日。");
}
}
else
{
if (day <= 28)
{
Console.WriteLine("你输入的日期是{0}年{1}月{2}日。", year, month, day);
}
else if (day == 29)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
Console.WriteLine("你输入的日期是" + year + "年" + month + "月" + day + "日。");
}
else
{
Console.WriteLine("你输入的日期错误。");
}
}
else
{
Console.WriteLine("你输入的日期错误。");
}
}
}
else
{
Console.WriteLine("你输入的日期错误。");
}
}
else
{
Console.WriteLine("你输入的月份错误。");
}
}
else
{
Console.WriteLine("你输入的年份错误。");
}
//5、分支语句练习——输入3个整数,由小到大输出这三个数
Console.Write("请输入第一个整数:");
int x = int.Parse(Console.ReadLine());
Console.Write("请输入第二个整数:");
int y = int.Parse(Console.ReadLine());
Console.Write("请输入第三个整数:");
int z = int.Parse(Console.ReadLine());
int a, b, c;
if (x > y)
{
if (x > z)
{
c = x;
if (y > z)
{
b = y;
a = z;
}
else
{
b = z;
a = y;
}
}
else
{
c = z;
b = x;
a = y;
}
}
else//x<y
{
if (y < z)
{
c = z;
b = y;
a = x;
}
else//y>z
{
c = y;
if (x > z)
{
b = x;
a = z;
}
else
{
b = z;
a = x;
}
}
}
Console.WriteLine("你输入的三个数字是:{0},{1},{2}。", a, b, c);
//6、分支语句练习——你去相亲,问你有房子吗?有就结婚,没有问你有钱吗?有就先买房再结婚,没有问你有能力吗?有就先挣钱再买房再结婚,没有就拜拜~
Console.Write("你有房子吗?");
string a = Console.ReadLine();
if (a == "有")
{
Console.WriteLine("你们结婚吧!");
}
else if (a == "没有")
{
Console.Write("你有钱吗?");
string b = Console.ReadLine();
if (b == "有")
{
Console.WriteLine("那你先买房子再结婚!");
}
else if (b == "没有")
{
Console.Write("请问你有挣钱的能力吗?");
string c = Console.ReadLine();
if (c == "有")
{
Console.WriteLine("那你先去挣钱,然后买房子,再结婚吧!");
}
else if (c == "没有")
{
Console.WriteLine("你连挣钱的能力都没有,就不用再相亲了!");
}
else
{
Console.WriteLine("你都没有勇气回答我的问题,不用再相亲了!");
}
}
else
{
Console.WriteLine("请你认真回答我的问题!");
}
}
else
{
Console.WriteLine("请你认真回答我的问题!");
}
//7、分支语句练习——输入男生或女生的体重,判断是否是标准体重
Console.Write("请问你是男生还是女生?");
string x = Console.ReadLine();
if (x == "男生")
{
Console.Write("请输入你的身高(cm):");
int s = int.Parse(Console.ReadLine());
Console.Write("请输入你的体重(kg):");
int t = int.Parse(Console.ReadLine());
if (t >= s - 100 - 3 && t <= s - 100 + 3)
{
Console.WriteLine("你的身高和体重很标准。");
}
else if (t < s - 100 - 3)
{
Console.WriteLine("你的体重有点低哦。");
}
else
{
Console.WriteLine("你的体重有点高哦。");
}
}
else if (x == "女生")
{
Console.Write("请输入你的身高(cm):");
int s = int.Parse(Console.ReadLine());
Console.Write("请输入你的体重(kg):");
int t = int.Parse(Console.ReadLine());
if (t >= s - 110 - 3 && t <= s - 110 + 3)
{
Console.WriteLine("你的身高和体重很标准。");
}
else if (t < s - 110 - 3)
{
Console.WriteLine("你的体重有点低哦。");
}
else
{
Console.WriteLine("你的体重有点高哦。");
}
}
else
{
Console.WriteLine("你输入的性别有误。");
}
//8、switch case多选一练习——输入几月几号,计算是今年的第多少天
int m1 = 31, m2 = 28, m3 = 31, m4 = 30, m5 = 31, m6 = 30, m7 = 31, m8 = 31, m9 = 30, m10 = 31, m11 = 30;
int sum = 0;
Console.Write("请输入几月:");
int m = int.Parse(Console.ReadLine());
Console.Write("请输入几号:");
int d = int.Parse(Console.ReadLine());
switch (m)
{
case 1:
{
sum += d;
break;
}
case 2:
{
sum = m1 + d;
break;
}
case 3:
{
sum = m1 + m2 + d;
break;
}
case 4:
{
sum = m1 + m2 + m3 + d;
break;
}
case 5:
{
sum = m1 + m2 + m3 + m4 + d;
break;
}
case 6:
{
sum = m1 + m2 + m3 + m4 + m5 + d;
break;
}
case 7:
{
sum = m1 + m2 + m3 + m4 + m5 + m6 + d;
break;
}
case 8:
{
sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + d;
break;
}
case 9:
{
sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + d;
break;
}
case 10:
{
sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + d;
break;
}
case 11:
{
sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + d;
break;
}
case 12:
{
sum = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + d;
break;
}
}
Console.WriteLine("你输入的日期是今年的第" + sum + "天。");
//9、for循环练习——输入一个正整数,计算1+2+……+n的和
Console.Write("请输入一个正整数:");
int n = int.Parse(Console.ReadLine());
int sum = 0;
for (int i = 1; i <= n; i++)
{
sum += i;
}
Console.WriteLine("从1到{0}的和为:{1}", n, sum);
//10、for循环练习——输入一个正整数,计算1!+2!+……+n!的和(阶乘和)
Console.Write("请输入一个正整数:");
int n = int.Parse(Console.ReadLine());
int sum = 0;
int jc = 1;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
{
jc *= j;
}
sum += jc;
jc = 1;
}
Console.WriteLine("{0}的阶乘之和为:{1}", n, sum);
//11、for与if嵌套练习——输入你闯到的关卡数,计算总分数。1-20关分数等于关数,21-30关每关20分,30-39关每关30分,第40关50分
Console.Write("请输入你闯到的关卡数:");
int n = int.Parse(Console.ReadLine());
int sum = 0;
if (n > 0 && n <= 40)
{
if (n >= 1 && n <= 20)
{
for (int i = 1; i <= n; i++)
{
sum += i;
}
}
else if (n > 20 && n <= 30)
{
for (int i = 1; i <= 20; i++)
{
sum += i;
}
for (int j = 21; j <= n; j++)
{
sum += 20;
}
}
else if (n >= 31 && n <= 39)
{
for (int i = 1; i <= 20; i++)
{
sum += i;
}
for (int j = 21; j <= 30; j++)
{
sum += 20;
}
for (int k = 31; k <= n; k++)
{
sum += 30;
}
}
else
{
for (int i = 1; i <= 20; i++)
{
sum += i;
}
for (int j = 21; j <= 30; j++)
{
sum += 20;
}
for (int k = 31; k <= 39; k++)
{
sum += 30;
}
sum += 50;
}
Console.WriteLine("恭喜你闯到了第{0}关,你的总分是{1}。", n, sum);
}
else
{
Console.WriteLine("你输入的关卡数有误。");
}
//12、for循环嵌套练习——输入一个正整数,打印一个n*n的矩阵,再打4个三角形,打一个菱形
//n*n的矩阵
Console.Write("请输入一个正整数:");
int n = int.Parse(Console.ReadLine());
int hang = 1;
while (hang <= n)
{
int lie = 1;
while (lie <= n)
{
Console.Write("★");
lie++;
}
hang++;
Console.WriteLine();
}
Console.WriteLine();
//左上角为直角三角形
Console.Write("请输入一个正整数:");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n + 1 - i; j++)
{
Console.Write("★");
}
Console.WriteLine();
}
//左下角为直角三角形
Console.Write("请输入一个正整数:");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("★");
}
Console.WriteLine();
}
//右上角为直角三角形
Console.Write("请输入一个正整数:");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
for (int k = 1; k < i; k++)
{
Console.Write(" ");
}
for (int j = 1; j <= n + 1 - i; j++)
{
Console.Write("★");
}
Console.WriteLine();
}
//右下角为直角三角形
Console.Write("请输入一个正整数:");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
for (int k = 1; k <= n - i; k++)
{
Console.Write(" ");
}
for (int j = 1; j <= i; j++)
{
Console.Write("★");
}
Console.WriteLine();
}
//菱形
Console.Write("请输入一个正整数:");
int n = int.Parse(Console.ReadLine());
for (int i1 = 1; i1 <= n; i1++)//菱形上半部分
{
for (int k1 = 1; k1 <= n - i1; k1++)//打印空白 空白个数=n-i1
{
Console.Write(" ");
}
for (int j1 = 1; j1 <= 2 * i1 - 1; j1++)//打印星星 星星个数=2n-1
{
Console.Write("★");
}
Console.WriteLine();
}
for (int i2 = 1; i2 < n; i2++)//菱形下半部分
{
for (int k2 = 1; k2 <= i2; k2++)//打印空白 空白个数=i2
{
Console.Write(" ");
}
for (int j2 = 1; j2 <= 2 * (n - i2) - 1; j2++)//打印星星 星星个数=2(n-i2)-1
{
Console.Write("★");
}
Console.WriteLine();
}
//13、for循环嵌套练习——打一个九九乘法表
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write(j + "×" + i + "=" + i * j + "\t");
}
Console.WriteLine();
}
//14、for循环练习——兔子生兔子问题
Console.Write("请输入第几个月:");
int m = int.Parse(Console.ReadLine());
int you = 1, xiao = 0, cheng = 0;
if (m == 1)
{
int sum = you + xiao + cheng;
Console.WriteLine("第1个月时幼兔有{0}只,", you);
Console.WriteLine("第1个月时小兔有{0}只,", xiao);
Console.WriteLine("第1个月时成兔有{0}只,", cheng);
Console.WriteLine("第1个月时兔子总数有{0}只。", sum);
}
else
{
for (int i = 2; i <= m; i++)
{
cheng = cheng + xiao;
xiao = you;
you = cheng;
}
int sum = you + xiao + cheng;
Console.WriteLine("第{0}个月时幼兔有{1}只,", m, you);
Console.WriteLine("第{0}个月时小兔有{1}只,", m, xiao);
Console.WriteLine("第{0}个月时成兔有{1}只,", m, cheng);
Console.WriteLine("第{0}个月时兔子总数有{1}只。", m, sum);
}
//15、for与if嵌套练习——计算100以内所有质数的和
int sum = 0;
for (int i = 1; i <= 100; i++)
{
int s = 0;
for (int k = 1; k <= i; k++)
{
if (i % k == 0)
{
s += 1;
}
}
if (s == 2)
{
sum += i;
}
}
Console.WriteLine("一百以内质数和为:" + sum);
//16、穷举练习——百鸡百钱,公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱
//买公鸡数量0-50,买母鸡数量0-100,买小鸡数量0-200
double g = 2, m = 1, x = 0.5;
int sum = 0;
for (double G = 0; G <= 50; G++)
{
for (double M = 0; M <= 100; M++)
{
for (double X = 0; X <= 200; X++)
{
if (G * g + M * m + X * x == 100 && G + M + X == 100)
{
sum += 1;
Console.WriteLine("第{0}种买法:公鸡买{1}只,母鸡买{2}只,小鸡买{3}只。", sum, G, M, X);
}
}
}
}
Console.WriteLine("一共有{0}种买法。", sum);
//17、迭代练习——老汉卖羊:老汉每到一个村庄卖的羊数是上一个村庄剩下羊数一半多卖一个,第8个村庄的时候剩下3只羊,问最初有多少羊?
Console.Write("老汉在第n个村庄时剩下3只羊,你想知道他最初有多少只吗?请给n一个正整数:");
int n = int.Parse(Console.ReadLine());
int s = 3;
for (int i = 1; i < n; i++)
{
s = (s + 1) * 2;
}
Console.WriteLine("老汉在第{0}个村庄时有{1}只羊。", n, s);
进制转换、基础语音、语句的总结与练习