5 -7作业汇总

知识点:

注:int类型默认32位有大小范围  且第一位为符号位 0 为正 1 为负



8.4作业

A:1、风力预警系统有如下标准:普通风力小于5级,为蓝色;大于5小于8,为黄色;大于8小于10为橙色;大于10位红色。如果风为龙卷风或台风等特殊情况,大于8级即为红色,实现上述判定标准,输入风力级别,输出预警颜色,输入风类别为:龙卷风,台风,自然风

特殊情况 用户输入是否是龙卷风 再作判断

//     Console.WriteLine ("输入风的种类,1为普通风,2为特殊风");

// int m = int.Parse(Console.ReadLine ());

// Console.WriteLine ("输入风级:");

// int windFoce= int.Parse(Console.ReadLine());

//

// switch (m) {

// case 1:

// {

//

// if (windFoce < 5) {

// Console.WriteLine ("蓝色");

// } else if (windFoce >= 5 && windFoce < 8) {

// Console.WriteLine ("黄色");

// } else if (windFoce >= 8 && windFoce < 10) {

// Console.WriteLine ("橙色");

// } else if (windFoce >= 10) {

// Console.WriteLine ("红色");

// }

// break;

// }

// case 2:

// {

// if (windFoce >= 8) {

// Console.WriteLine ("红色");

// }

// break;

// }

// }

2、实现一个程序,控制台实现如下效果,现在控制台输出如下语句

请输入编号选择您想购买的商品:

1、笔      2、作业本    3、橡皮擦     4、直尺

用户输入编号后打印出用户选择的商品

Console.WriteLine("请输入编号");

// int n = int.Parse(Console.ReadLine());

// switch (n) {

// case 1:

// {

// Console.WriteLine ("笔");

// break;

// }

// case 2:

// {

// Console.WriteLine ("作业本");

// break;

// }

// case 3:

// {

// Console.WriteLine ("橡皮擦");

// break;

// }

// case 4:

// {

// Console.WriteLine ("直尺");

// break;

// }

//

// }

B:3、实现在控制台输入数据n, 计算n并打印出n的阶乘;

while做法

Console.WriteLine("输入数字");

Int64 n = int.Parse (Console.ReadLine ());

int a = 1;

Int64 sum = 1;

while (a < n + 1) {

if (n == 0) {

Console.WriteLine ("{0}",0);

}

sum *= a;

a++;

Console.WriteLine ("{0}",a);

}

Console.WriteLine ("{0}",sum);

for做法

Console.WriteLine("输入数字");

Int64 n = int.Parse (Console.ReadLine ());

Int64 sum = 1;

if (n == 0) {//当n = 0的情况

sum = 0;

} else {

for (Int64 i = 1; i <= n; ++i) {

sum *= i;

}

}

Console.WriteLine ("{0}",sum);

注:int类型默认32位有大小范围  且第一位为符号位 0 为正  1为负

00000000 00000000 00000000 00000000

4、从控制台输入一个年份,判断是否为闰年(闰年的条件:1、年份能被4整除   或  2、年份若是100的整数倍的话,需被400整除)

Console.WriteLine ("输入年份");

// int y = int.Parse (Console.ReadLine());

//

//

// if (y % 4 == 0 && y % 100 != 0) {

// Console.WriteLine ("{0}年为闰年", y);

// } else if (y % 100 == 0 && y % 400 == 0) {

// Console.WriteLine ("{0}年为闰年", y);

// } else {

// Console.WriteLine ("{0}年为平年", y);

// }


周末作业

1、连续输入一周七天的温度,同时求出该周平均温度。

// float sum = 0;

// for (int i = 0; i < 7; ++i) {

// Console.WriteLine ("请输入星期{0}的温度",i + 1);

// string temp = Console.ReadLine ();

// sum += float.Parse (temp);

// }

// Console.WriteLine ("七天气温的平均值为:{0}",sum/7.0f);

2、猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

int a = 10,b = 1;

// while (a > 1) {

// b = (b + 1)*2;

// --a;

// Console.WriteLine ("第" + a + "天,有桃子" + b + "颗");

// }

// Console.WriteLine ("{0}",b);


int a,  b = 1;

(a  天数  b 桃子)

// for (a = 1; a < 10; a++) {

// b = (b + 1) * 2;

// }

// Console.WriteLine ("第一天吃桃子数量为:{0}", b);

3、分析下列语句中a、b的结果

int a = 1, b = 3;

a += b %= 2;//(b%2+a = a)1+1 =2

int a = 1,b = 4;

a = ++b/a++; //a = 5 a++ 没有用 

如何用代码将以下数据转换成二进制和十六进制,1000和2049。

正整数转成二进制。要点:除二取余,然后倒序排列,高位补零。

负整数转换成二进制  方法:先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一。


1、十进制转化二进制

int x = 1000;

while (x >0 ){

int n = x % 2;

Console.WriteLine ("{0}",n);

x /= 2;

}

//数组

转化二进制 单词 binary

int x = 1000;

int[] binary =new int [16];//动态初始化,初始化后为16个0

                                       //int[]必须要给定长度

int index = 0;//index用来当做数组的下标

while (x > 0) {

int n = x % 2;

binary [index] = n;//修改binary 下标index 对应的值

++index;//每执行一次  往后推一位

x /= 2;

}

//反向打印输出

for (int i = binary.Length - 1;i >=0; --i  ){// - -i 是从后往前的每一个值

                                                             //binary .Length - 1是为了避免下标越界

                                                             //因为题中的数组长度为16 但是从0开始 i最大只能是15

Console.Write ("{0}",binary[i]);//binary[i]是数组中每一个  i 对应的值

}

2、十进制转化十六进制

1000除16商62余8,62除16商3余14,3除16商0余3; 1000 ==> 3E8

一直除16取余 倒过来 

int x = 1000;

//0x3E8 = 8 * 16 ^ 0 + E *16 ^ 1 + 3 * 16 ^ 2

while (x > 0){

int n = x % 16;//余8 14 3

if (n >= 10) {//大于10的余数

Console.WriteLine ("{0}",(char)(n + 55));

} else {

Console.WriteLine ("{0}",n);

}

x /= 16; //x = 1000,62,3

}

//数组方式

int x = 1000;

int[] hexadecimal = new int[8];

int index = 0;

while (x > 0){

int n = x % 16;

hexadecimal [index] = n;

++index;

x /= 16;

}

for (int i = hexadecimal.Length - 1;i >=0; --i  ){

if (hexadecimal[i] >= 10) { // 在十六进制中10以上的数为abcdef

Console.Write ("{0}", (char)(hexadecimal[i] + 55));//转化为小写字母

} else {

Console.Write ("{0}", hexadecimal[i]);

}

}

8/11 work

A:

1、编写一个程序,要求用户从键盘输入2个float数,输出最大者。

float a = float.Parse(Console.ReadLine());

float b = float.Parse(Console.ReadLine());

float c = a > b ? a : b;

Console.WriteLine ("{0}", c);

2、编写一个程序,要求用户从键盘输入3个不同整数,输出第二大的数。

int a = int.Parse(Console.ReadLine ());

int b = int.Parse(Console.ReadLine ());

int c = int.Parse(Console.ReadLine ());

if (a > b && b > c || c > b && b > a) {

Console.WriteLine ("{0}", b);

}else if(b > a&&a>c || c>a && a >b){

Console.WriteLine ("{0}", a);

}else{

Console.WriteLine ("{0}", c);

}

3、从键盘输入两个实数a和b,代表两点在X轴的坐标,再输入一个0到1之间的数c,代表时间,(假如从a到b需要1s),

输出在时间c时的坐标。

例如:输入a为1和b为5,再输入c为0.5,则输出结果为:3。

结果 = a +(b - a)* 0.5;

a= 1 b= 5  c= 0.5 坐标 = 3

float a = float.Parse(Console.ReadLine()) ;

float b = float.Parse(Console.ReadLine());

Console.WriteLine ("输入0 到 1 的数c");

float c = float.Parse (Console.ReadLine ());

float Z;

if (a < b) {

Z = a + (b - a) * c;

} else {

Z = b + (a - b) * c;

}

Console.WriteLine ("{0}",Z);

4、输入一个成绩(0到100之间的整数),如果大于等于90输出:优秀;小于90而大于等于80输出:

良好;小于80而大于等于70输出:一般;小于70而大于等于60输出:及格,否则输出:不及格。

int a = int.Parse(Console.ReadLine());

if (a >= 90) {

Console.WriteLine ("优秀");

} else if (a < 90 && a >= 80) {

Console.WriteLine ("良好");

} else if (a < 80 && a >= 70) {

Console.WriteLine ("一般");

} else if (a < 70 && a >= 60) {

Console.WriteLine ("及格");

} else {

Console.WriteLine ("不及格");

}

B:

5、输入3个字符,如果字符中至少有2个数字,求这些数字的和。例:输入‘0’,‘3’,‘8’,求出和为11.

ASCII码48 -57表示 0 -9

char a = char.Parse(Console.ReadLine());

char b = char.Parse(Console.ReadLine());//

char c = char.Parse(Console.ReadLine());

if ((a <= 57 && a >= 48) && (b <= 57 && b >= 48) && (c <= 57 && c >= 48)) {

int sum = 0;

sum = (int)(a - 48) + (int)(b - 48) + (int)(c - 48);

Console.WriteLine ("{0}",sum );

} else if ((b <= 57 && b >= 48) && (c <= 57 && c >= 48)) {

int sum = 0;

sum = (int)(b - 48) + (int)(c - 48);

Console.WriteLine ("{0}", sum);

} else if ((c <= 57 && c >= 48) && (a <= 57 && a >= 48)) {

int sum = 0;

sum = (int)(c - 48) + (int)(a - 48);

Console.WriteLine ("{0}", sum);

} else if((a <= 57 && a >= 48) && (b <= 57 && b >= 48)){

int sum = 0;

sum = (int)(a - 48) + (int)(b - 48);

Console.WriteLine ("{0}", sum);

}

int a = 0, b = 0, c = 0;

int num = 0;//定义有几个字符能转成Int值

if (int.TryParse (Console.ReadLine (), out a)) {

num++; //如果转成的话 num  = 1;

} //不能转的话不作操作

//TryParse ()out 格式+

if (int.TryParse(Console.ReadLine (),out b )){

num++;

}

if (int.TryParse(Console.ReadLine (),out c )){

num++;

}

if (num >= 2){

int sum  = a + b +c;//输出三个中int 值的和

Console.WriteLine ( "sum = "+ sum);

}

6、输入一个字符,判断它如果是小写字母输出其对应大写字母,如果是大写字母输出其对应小写字母,如果是数字输出其相反数,如果是空格,输出“space”,如果不是上述情况,输出“other”。

ASCII码  大写A65 Z90小写z97 z122 空格Space

char a =  char.Parse(Console.ReadLine());

if (a >= 97 && a <= 122) {

Console.WriteLine ("{0}", (char)(a - 32));

} else if (a >= 65 && a <= 90) {

Console.WriteLine ("{0}", (char)(a + 32));

} else if (a == 32) {

Console.WriteLine ("Space");

} else if (a >= 48 && a <= 57) {

Console.WriteLine ("{0}",-(a - 48));

}

else {

Console.WriteLine ("Other");

}

// C:

7、思考一下程序的执行结果:

int m=0,n=3;

if (m >= 0);//if嵌套  如果加 ;分号 的话结束

if (n > 3)

Console.WriteLine ("A");

else

Console.WriteLine("B");

8、思考如何实现:连续输入若干个字符,包括换行和空格等其他特殊符号,

按~结束(最后语句中包含换行和空格等,但不包含~)

Console.WriteLine("按~键退出");

while (Console.ReadKey().KeyChar != '`')

{

}

char ch;

string str = "";

do {

ch= (char)(Console.Read());

if(ch != '~'){

str += ((char)ch).ToString();

}else{

break;

}

} while (ch != '~');

Console.WriteLine ("\n输入结束:\n" + str);

for 一般用于确定次数的循环

while 一般用于不确定次数循环

#region 一元二次方程

9、输入a,b,c三个整数,求一元二次方程的解(有没有解,是多少)。一元二次方程为ax^2 + bx + c = 0;

float a = float.Parse(Console.ReadLine());

float b = float.Parse(Console.ReadLine());

float c = float.Parse(Console.ReadLine());

if (Math.Pow (b, 2) - 4 * a * c > 0) {

float x1 = (float)(-b + (Math.Sqrt (Math.Pow (b, 2) - 4 * a * c))) / 2 * a;

float x2 = (float)(-b - (Math.Sqrt (Math.Pow (b, 2) - 4 * a * c))) / 2 * a;

Console.WriteLine ("方程解为x1 = {0}, x2 = {1}", x1, x2);

} else if (Math.Pow (b, 2) - 4 * a * c == 0) {

float x = (float)(-b + (Math.Sqrt (Math.Pow (b, 2) - 4 * a * c))) / 2 * a;

Console.WriteLine ("方程解为x1 = {0}", x);

} else if (Math.Pow (b, 2) - 4 * a * c < 0) {

Console.WriteLine ("方程没有解");

}

#endregion

8、14

计算100至10000之间有多少个数 各位数字之和为7

int number = 100;

int num = 0;

while ( number <= 7000) {

if (number > 100 && number <= 7000) {

if (number % 10 + (number / 10) % 10 + (number / 100)%10 + number / 1000 == 7 ) {

++num;

}

}

++number;

}

Console.WriteLine (num);

int num = 0;

for (int number = 100; number <= 7000; number++) {

int a, b, c, d;

a = number % 10;

b = (number / 10) % 10;

c = (number / 100) % 10;

d = (number / 1000) % 10;

if (a + b + c + d == 7) {

Console.WriteLine (number);

num++;

}

}

Console.WriteLine (num);

int number = 100;

int num = 0;

while (number <= 7000) {

int a, b, c, d;

a = number % 10;

b = (number / 10) % 10;

c = (number / 100) % 10;

d = (number / 1000) % 10;

if (a + b + c + d == 7) {

Console.WriteLine (""+number);

num++;

Console.WriteLine ("第" + num +"个");

}

number++;

}

2、打印出1 - 100之间所有的偶数

int a = 1;

while (a <= 100) {

if (a % 2 == 0) {

Console.WriteLine (a);

}

a++;

}

3、打印 1 + 2 + 3 + ....+100的值

int a = 0;

int sum = 0;

while (a <= 100) {

a++;

sum += a;

}

Console.WriteLine ("{0}", sum);

在终端循环输出数字,一旦输入数字小于0,停止输入

while break

while (true) {

int  a = int.Parse(Console.ReadLine());

if (a < 0) {

break;

}

}

利用continue 打印实现1 - 100之间 不是3的倍数

int a = 0;

while(a<100){

a++;

if (a % 3 == 0) {

continue;

}

Console.WriteLine (a);

}

sum = 1 +...n; 求sum 不超过10000的最大整数值和项值N

int n =0 ;

int sum= 0;

do {

n++;

sum +=n;

if(sum==9999){

break;

}

} while (sum<10000);

Console .WriteLine("项值为"+ (n-1));//

Console.WriteLine ("最大整数" + (sum-n));

//

用for循环打印出1 - 100之间不是7的倍数并且不包含7的数

for(int a = 0;a <=100;a++){

1、 if (a % 7 != 0 && a % 10 != 7 && a / 10 != 7) {

Console.WriteLine (a);

}

2、 if (a % 7 != 0 && !(a.ToString().Contains("7"))) {

Console.WriteLine (a);

}

for (int i = 1; i <= 3; i++) {

for (int j = 1; j <=i; j++) {

Console.Write (j);

}

Console.WriteLine ();

}

乘法口诀打印

for (int a = 1; a <= 9; a++) {

for (int b = 1; b <= a; b++) {

Console.Write ("{0}*{1}={2} ", b, a,a*b);

}

Console.WriteLine ();

}

8/14 work

A:

1、编程将所有“水仙花数”打印出来,并打印其总个数。“水仙花数”是一个各个位立方之和等于该整数的三位数。

方法一、

for(int i=1;i<10;i++)

{

for(int j=0;j<10;j++)

{

for(int k=0;k<10;k++)

{

int m=i*100+j*10+k;          //这里int定义最好放到开头处

int n=i*i*i+j*j*j+k*k*k;

if(n==m)Console.WriteLine(m); //注意这里是==

}

}

}

方法二、

for (int i = 100; i < 1000; ++i) {

int a = i % 10;//% 10得到的都是小于10的数

int b = i/10%10;

int c = i / 100;

int sum = 0;

if (Math.Pow (a, 3) + Math.Pow (b, 3) + Math.Pow (c, 3) == i) {

sum++;

Console.WriteLine (i);

}

Console.WriteLine(sum);

}

2、自定义一个数组并求数组中的所有元素最大值、最小值、平均值及各元素之和。

求数组中的最大值、最小值、总和、平均值

方法一、

int[] a = { 75, 2, 3, 35, 38, 39, 66, 89 };

int max = a [0];

int min = a[0];

// int min_1 = int.MaxValue;//Int 类型的最大值

int sum = 0;

for (int i = 0; i < a.Length; i++) {

if (a [i] > max) {

max = a [i];

}

if (a [i] < min) {

min = a [i];

}

sum += a [i];

}

Console.WriteLine ("数组中最大值是{0},最小值是{1},总和是{2},平均值是{3}", max, min, sum, sum / a.Length);

Console.ReadKey ();

方法二、

int[] a = { 75, 2, 3, 35, 38, 39, 66, 89 };

int max = 0;

int min = a[0];

int sum = 0;

for (int i = 0; i < a.Length; i++) {

max = max < a [i] ? a [i] : max;//三元算法求最大值最小值

min = min > a [i] ? a [i] : min;

sum += a [i];

}

Console.WriteLine ("数组中最大值是{0},最小值是{1},总和是{2},平均值是{3}", max, min, sum, sum / a.Length);

Console.ReadKey ();

3、已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。

for(int a =0;a<=9;a++){

for (int b = 0; b<= 9; b++) {

for (int c = 0;  c <= 9; c++) {

if ((a * 100 + b * 10 + c) + (c * 100 + b * 10 + a) == 1333) {

Console.WriteLine ("a = {0},b = {1},c = {2}", a, b, c);

}

}

}

}

4、打印100以内的所有质数. (只能被1和它本身整除的数是质数)

for(int i = 2;i<100;i++){

bool flag = false;

for (int j = 2; j <= i / 2; ++j) {

if (i % j == 0) {

flag = true;

break;

}

}

if(!flag ){

Console.WriteLine ("{0}是质数",i);

}

}

int a ,b;

for (a = 2; a < 10; a++) {

for (b = 2; b <= a ; b++) {

if (a % b == 0)//

break;//排除了所有不是质数的情况

}

if (b == a) {

Console.WriteLine ("{0}", a);

}

}

5、输入两个数,求最大公约数和最小公倍数。(有两种方法:辗转相除法和普通方法)


最大公约数:几个数公有的因数中最大的一个

最小公倍数:几个数公有的倍数中最小的一个

普通方法:

int a =int.Parse(Console.ReadLine());

int b = int.Parse (Console.ReadLine ());

int min = a < b ? a : b;

int max_grs = 0;

for (int i = 1; i <= min; ++i) {//i 小于他们中最小的那个数

if (a % i == 0 && b % i == 0) {

max_grs = i;

}

}

Console.WriteLine ("最大公约数为"+max_grs);

Console.WriteLine ("最小公倍数为"+(a*b)/max_grs);


辗转相除法:

int a =int.Parse(Console.ReadLine());

int b = int.Parse (Console.ReadLine ());

int temp = 0;//接收余数

do {

//120 56

temp  = a % b;//120 % 56 = 8  56 %  8 = 0能整除56的一定也能整除120

a = b;//a  = 8

b = temp;//b = 0;

} while(temp != 0);

Console.WriteLine ("最大公约数为" + a);

6、一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高

float sum ,hight;

sum = 100f;

hight = 100f;

for (int i = 2; i <= 10; i++) {

hight /= 2f;

sum += hight * 2;

}

Console.WriteLine ("经过 {0} 米,第十次反弹 {1} 米",sum ,hight/2);

B:

7、百钱百鸡问题:鸡翁一值钱5;母鸡一值钱3;鸡雏三值钱1,百钱买百鸡,问鸡翁鸡母鸡雏各几何?

//5x + 3y +z/3 = 100

x + y +z =100

14x +8y = 200

for(int x  = 0;x<20;x++){

for (int y = 0; y < 34; y++) {

if(14 *  x + 8 * y ==200){

Console.WriteLine ("x={0},y={1},z={2}",x,y,100-x-y);

}

}

}

for (int x = 0; x <= 20; x++) {

for (int y = 0; y < 34; y++) {

int z = 100 - x - y;

if (15 * x + 9 * y + z == 300) {

Console.WriteLine ("x={0},y={1},z={2}", x, y, z);

}

}

}

8、输入n,分别用 * 输出边长为n 的实心菱形

例如n = 3时,输出

i        空格     *

*              -2行数    2          1    星号 =(2n -1)- 2*|i|

***            -1            1        3

*****            0            0        5

***            -1            1        3

*              2            2        1

int n = int.Parse (Console.ReadLine());

for (int i = -n + 1; i <= n - 1; ++i) {

for (int j = 0; j < Math.Abs (i); ++j) {

Console.Write (" ");

}

for (int k = 0; k < 2 * n - 1 - 2 * Math.Abs (i); ++k) {

if( k ==0|| k== 2 * n - 2 - 2 * Math.Abs (i)){

Console.Write ("*");

}else{

Console.Write (" ");

}

}

Console.WriteLine ("\n");

}

实现空心菱形

*          -2

*  *        -1

*      *      0

*  *        1

*          2

推荐阅读更多精彩内容