三月九号的内容复习
9號的內容:上午主要是練習兩個圖題型,下午繼續,只是在最后的時候講的是迭代和窮舉。關于這些內容我先整理下文字敘述性的內容,然后再把題型在練習一下。。。
循環:反復執行某段代碼。
循環四要素:初始條件,循環條件,循環體,狀態改變。
for(初始條件;循環條件;狀態改變)
{
循環體
}
break——中斷循環,跳出循環
continue——停止本次循環,進入下次循環
for循環擁有兩類:
窮舉:
把所有可能的情況都走一遍,使用if條件篩選出來滿足條件的情況。
迭代:
從初始情況按照規律不斷求解中間情況,最終推導出結果。
while循環
其實是for循環的變形寫法
for(inti=1;i<=5;i++)
{
循環體;
}
上面的for循環可以寫成
inti=1;
for(;i<=5;)
{
循環體;
i++;
}
寫成while就是以下樣式
inti=1;
while(表達式(i<=5))
{
循環體;
狀態改變(i++);
}
do
{
循環體;
狀態改變(i++);
}while(表達式(i<=5))
注意:dowhile是不管滿不滿足表達式,我都會先執行一遍。
跳轉語句:
break:跳出整個循環
continue:跳出本次循環,繼續下次循環。
練習:輸入五遍你好
輸入一個正整數,求階乘
Console.Write("請輸入一個正整數");
int a = int.Parse(Console.ReadLine());
int sum = 1;
for (int i = 1; i <= a; i++)
{
sum *= i;
}
Console.WriteLine(sum);
Console.ReadLine();
//輸入一個正整數,求和
Console.Write("a=");
int a = int.Parse(Console.ReadLine());
int sum = 0;
for (int i = 1; i <= a; i++)
{
sum += i;
}
Console.WriteLine(sum);
Console.ReadLine();
//求1!+2!+3!+4!+.....+n!
Console.Write("請輸入n=");
int n = int.Parse(Console.ReadLine());
int sum = 0;
for (int i = 1; i <= n; i++)
{
int sum1 = 1;
for (int j = 1; j <= i; j++)
{
sum1 *= j;
}
sum += sum1;
}
Console.WriteLine(sum);
Console.ReadLine();
//找出100以內和7有關的數
int a = 0;
for (int i = 1; i <= 100; i++)
{
if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7)
{
a++;
Console.WriteLine(i);
}
}
Console.WriteLine("共" + a + "次");
Console.ReadLine();
//一個游戲,前20關是每一關自身的分數,
//21-30關每一關是10分
//31-40關,每一關是20分
//41-49關,每一關是30分
//50關,是100分
這題有兩種解題思路,一種是for嵌套if,一種是if嵌套for,經驗證兩種的結果一樣
Console.Write("請輸入你的關數a=");
int a = int.Parse(Console.ReadLine());
int sum = 0;
if (a >= 0 && a <= 50)
{
for (int i = 1; i <= a; i++)
{
if (i >= 0 && i <= 20)
{
sum += i;
}
else if (i >= 21 && i <= 30)
{
sum += 10;
}
else if (i >= 31 && i <= 40)
{
sum += 20;
}
else if (i >= 41 && i <= 49)
{
sum += 30;
}
else
{
sum += 100;
}
}
Console.WriteLine(sum);
}
else
{
Console.WriteLine("輸入有誤");
}
Console.ReadLine();
第二種是:
Console.Write("輸入關數a=");
int a = int.Parse(Console.ReadLine());
int sum = 0;
if (a >= 0 && a <= 50)
{
if (a >= 1 && a <= 20)
{
for (int i = 1; i <= a; i++)
{
sum += i;
}
}
else if (a >= 21 && a <= 30)
{
for (int i = 1; i <= 20; i++)
{
sum += i;
}
for (int i = 21; i <= a; i++)
{
sum += 10;
}
}
else if (a >= 31 && a <= 40)
{
for (int i = 1; i <= 20; i++)
{
sum += i;
}
for (int i = 21; i <= 30; i++)
{
sum += 10;
}
for (int i = 31; i <= a; i++)
{
sum += 20;
}
}
else if (a >= 41 && a <= 49)
{
for (int i = 1; i <= 20; i++)
{
sum += i;
}
for (int i = 21; i <= 30; i++)
{
sum += 10;
}
for (int i = 31; i <= 40; i++)
{
sum += 20;
}
for (int i = 41; i <= a; i++)
{
sum += 30;
}
}
else
{
for (int i = 1; i <= 20; i++)
{
sum += i;
}
for (int i = 21; i <= 30; i++)
{
sum += 10;
}
for (int i = 31; i <= 40; i++)
{
sum += 20;
}
for (int i = 41; i <= 49; i++)
{
sum += 30;
}
sum += 100;
}
}
else
{
Console.WriteLine("輸入有誤");
}
Console.WriteLine(sum);
Console.ReadLine();
//乘法口訣
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("" + j + "*" + i + "=" + (i * j) + " ");
}
Console.WriteLine();
}
Console.ReadLine();
////單位給發了一張150元購物卡,
//拿著到超市買三類洗化用品。
//洗發水15元,香皂2元,牙刷5元。
//求剛好花完150元,有多少種買法,
//每種買法都是各買幾樣?
//設買的洗發水x,150/15==10
//設買的牙刷 y,150/5=30
//設買的香皂 z,150/2=75
int biao = 0;
int m = 0;
for (int x = 0; x <= 10; x++)
{
for (int y = 0; y <= 30; y++)
{
for (int z = 0; z <= 75; z++)
{
m++;
if (15 * x + 5 * y + 2 * z == 150)
{
biao++;
Console.WriteLine("這是第" + biao + "中共有洗發水" + x + "瓶,香皂" + z + "塊,牙刷" + y + "只");
}
}
}
}
Console.WriteLine("共有" + biao + "中");
Console.WriteLine(m);
Console.ReadLine();
截取一部分,25916是運行的次數
//紙張可以無限次對折,紙張厚度為0.07毫米。
//問多少次對折至少可以超過8848?
//0.07----7,884800000
int a = 7;
int i = 0; //int i=1;
for (; ; )
{
a *= 2;
i++;
if (a >= 884800000)
{
Console.WriteLine(a);
Console.WriteLine(i);
break;
}
//i++;
}
Console.ReadLine();
幾何倍增的威力是很大的
以上就是內容的復習
總結
- 上一篇: IntelliJ IDEA(简称IJ)建
- 下一篇: 20-克拉默法则、逆矩阵、体积