http://baike.baidu.com/view/2634573.htm?fr=aladdin
在百科上看到C#的新特性靜態構造函數,其中提到靜態構造函數“不能繼承” 今天做了個試驗,發現實際上靜態構造函數是可以繼承的,代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 靜態構造函數 { public class Parent { protected static int var1; static Parent() { var1 = 100; } } public class Child:Parent { public int GetVar1() { return var1; } } class Program { static void Main(string[] args) { Console.WriteLine(new Child().GetVar1()); Console.ReadKey(); } } }
運行結果顯示100 說明雖然是父類的靜態構造函數 但是在創建子類實例前這個靜態構造函數也被調用過了
另外一種情況是帶有static修飾的類,因為同時被定義為sealed,也就是靜態類,是不能被繼承的,因而也無所謂它的靜態構造函數是否能繼承了。
break語句
break語句通常用在循環語句和開關語句中。當break用於開關語句switch中時,可使程序跳出switch而執行switch以後的語句;如果沒有break語句,則將成為一個死循環而無法退出。break在switch 中的用法已在前面介紹開關語句時的例子中碰到,這裡不再舉例。
當break語句用於do-while、for、while循環語句中時,可使程序終止循環而執行循環後面的語句, 通常break語句總是與if語句聯在一起。即滿足條件時便跳出循環。
注意:
1) break語句對if-else的條件語句不起作用。
2) 在多層循環中, 一個break語句只向外跳一層。
對於你的問題,就是跳出for循環,執行循環後面的語句,即str[i++] = '.';語句
/*
下面是我寫的程序,可以輸入正確的結果,但是這個程序的時間復雜度為:O(N^6),不是最好的,你的循環結構與明顯的錯誤;整型數組沒有初值,就進行了運算,肯定錯誤很多,根據題目按條件走
*/
#include <stdio.h>
void main()
{
int A,B,C,D,E,F; //定義五個整型變量,分別代表他們的作案情況,如果是1作案,0不作案
for(A=0;A<=1;A++)
for(B=0;B<=1;B++)
for(C=0;C<=1;C++)
for(D=0;D<=1;D++)
for(E=0;E<=1;E++)
for(F=0;F<=1;F++)
{
if(A+B>=1) //A、B至少有一人作案;
if(A+E+F>=2) //A、E、F三人中至少有兩人參與作案;
if(A+D==1) //A、D不可能是同案犯;
if(B+C==2 || B+C==0) //B、C或同時作案,或與本案無關;
if(C+D==1) //C、D中有且僅有一人作案;
if(D+E==0) //如果D沒有參與作案,則E也不可能參與作案。
{
printf("作案人員為:\n");
if (A) printf("A ");
if (B) printf("B ");
if (C) printf("C ");
if (D) printf("D ");
if (E) printf("E ");
if (F) printf("F \n");
}
}
}