首页 > 代码库 > 进制转换、基础语音、语句的总结与练习

进制转换、基础语音、语句的总结与练习

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,9A,B,C,D,E,FA=10B=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;  bdouble类型转换为int类型,再赋值给a

(2)convert

如:int a;  double b=12.34;  a=convert.ToInt32(b);  bdouble类型转换为32位的int整数类型,再赋值给a

如:string a;  double b=12.34;  a=convert.ToString(b);  bdouble类型转换为string类型,再赋值给a

(3)Parse

如:int a;  double b=12.34; a=int.Parse(b);  bdouble类型转换为int类型,再赋值给a

如:string a;  double b=12.34;  a=string.Parse(b);  bdouble类型转换为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返回1x<=12返回2

5、赋值 =  +=  -=  *=  /=

+=s+=5;  意思为s=s+5;  -=,*=,/=+=

 

五、语句

语句是指程序命令,都是按照顺序执行的。

语句结束的标点是分号(;)。

语句块括在括号{}中,并且可以包含嵌套块。

语句类型常用的有:顺序语句,分支语句,循环语句。

分支语句:if elseswitch 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);

进制转换、基础语音、语句的总结与练习