題目一
文本文件中存儲了多個文章標題、作者,標題和作者之間用若干空格(數量不定)隔開,每行一個,標題有的長有的短,輸出到控制檯的時候最多標題長度10,如果超過10,則截取長度8的子串並且最後添加“...”,加一個豎線後輸出作者的名字。
namespace test1
{
class Program
{
/*文本文件中存儲了多個文章標題、作者,標題和作者之間用若干空格(數量不定)隔開,
每行一個,標題有的長有的短,輸出到控制檯的時候最多標題長度10,
如果超過10,則截取長度8的子串並且最後添加“...”,加一個豎線後輸出作者的名字。*/
static void Main(string[] args)
{
//把文本中的信息讀取出來
String[] lines = File.ReadAllLines(@"D:\C#\exam\test1\test1.txt",Encoding.Default);
//遍歷每行
foreach (String line in lines)
{
//以空格作爲分隔符,返回分割的子字符串
String[] zh=line.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);
//取得標題
String title=zh[0];
//取得作者
String author=zh[1];
//截取標題長度
String title1=title.Substring(0);
//標題長度是否大於10
if (title.Length>10)
{
//截取標題長度,取前八位
title1 = title.Substring(0, 7);
//後面的位數用...填充
title1 = title1 + "...";
}
Console.WriteLine("{0}|{1}", title1, author);
}
Console.ReadKey();
}
/*這個不太好想*/
}
}
題目二
namespace test2
{
class Program
{
/*定義兩個int類型的變量如:a和b分別賦值爲10和5,
不借助第三方變量寫程序交換兩個變量的值。*/
static void Main(string[] args)
{
//定義兩個整型變量
int a, b;
//如果a的值是整型就跳出循環,否則就繼續循環
while(true)
{
Console.WriteLine("請輸入a的值:");
//接受a的值
String A = Console.ReadLine();
if (!(int.TryParse(A, out a)))
{
Console.WriteLine("輸入的類型非法,請重新輸入!");
}
else
{
break;
}
}
//如果b的值是整型就跳出循環,否則就繼續循環
while (true)
{
Console.WriteLine("請輸入b的值:");
//接受b的值
String B = Console.ReadLine();
if (!(int.TryParse(B, out b)))
{
Console.WriteLine("輸入的類型非法,請重新輸入!");
}
else
{
break;
}
}
//a、b的值進行交換
a = a + b;
b = a - b;
a = a - b;
Console.WriteLine("交換變量後a的值爲:{0},b的值爲:{1}", a, b);
Console.ReadLine();
/*注:交換兩個變量的值是個老生長談的話題,實現方式有很多,但限於個人時間精力有限,
只寫了一種比較簡單的做法*/
}
}
}
題目三
namespace test3
{
//定義父親類
class Father
{
/*定義父親類Father(姓firstName,財產wealth,血型blood),
兒子Son類(玩遊戲PlayGame),女兒Daughter類(跳舞Dance),
調用父類構造函數給子類字段賦值。*/
//父親類的構造函數
public Father(String firstName, decimal wealth, String blood)
{
this.FirstName = firstName;
this.Wealth = wealth;
this.Blood = blood;
}
//爲firstName字段賦值
String firstName;
public String FirstName
{
get
{
return firstName;
}
set
{
firstName = value;
}
}
//爲wealth字段賦值
decimal wealth;
public decimal Wealth
{
get
{
return wealth;
}
set
{
wealth=value;
}
}
//爲blood字段賦值
String blood;
public String Blood
{
get
{
return blood;
}
set
{
blood=value;
}
}
static void Main(string[] args)
{
//實例化son類
Son son=new Son("張",99999M,"A");
Console.WriteLine("姓:{0},財產:{1},血型:{2}",son.FirstName,son.Wealth,son.Blood);
son.PlayGame();
//實例化daughter類
Daughter daughter=new Daughter("田",88888M,"B");
Console.WriteLine("姓:{0},財產:{1},血型:{2}",daughter.FirstName,daughter.Wealth,daughter.Blood);
daughter.Dance();
Console.ReadKey();
}
}
//定義Son類,繼承自Father類
class Son:Father
{
//子類的構造函數
public Son(String SfirstName,decimal Swealth,String Sblood):base(SfirstName,Swealth,Sblood)
{
}
//子類的方法
public void PlayGame()
{
Console.WriteLine("玩遊戲PlayGame");
}
}
//定義Daughter類,繼承自Father類
class Daughter:Father
{
//子類的構造函數
public Daughter(String DfirstName,decimal Dwealth,String Dblood):base(DfirstName,Dwealth,Dblood)
{
}
//子類的方法
public void Dance()
{
Console.WriteLine("跳舞Dance");
}
}
/*此題沒弄明白,參考網友作答*/
}
題目四
已知一個int類型的數組,用冒泡排序法將數組中的元素按從小到大的順序排列;
namespace test4
{
class Program
{
/* 已知一個int類型的數組,用冒泡排序法將數組中的元素按從小到大的順序排列.*/
static void Main(string[] args)
{
//聲明一個int類型的數組
int[] arr = { 80, 67, 23, 64, 25, 84, 90, 25 };
//用兩層for循環實現冒泡排序
for (int i = 0; i < arr.Length;i++ )
{
for (int j = 0; j < arr.Length-1-i; j++)
{
//從小到大排序
if(arr[j]>arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
Console.WriteLine("該數組經過冒泡排序後,從小到大的排列順序爲:");
//輸出經過排序後的數組
for (int i = 0; i < arr.Length;i++)
{
Console.Write(arr[i]+" ");
}
Console.ReadLine();
}
}
}
題目五
namespace test5
{
class Program
{
/* 123-456---789-----123-2把類似的字符串中重複符號去掉,
即得到123-456-789-123-2*/
static void Main(string[] args)
{
//設置標識位
char fuhao = '@';
Console.WriteLine("請輸入一串字符串,可以輸入多個連續的符號");
//接受輸入的字符串
String strInput=Console.ReadLine();
//遍歷每一個字符
for (int i = 0; i < strInput.Length; i++)
{
//檢索出每個字符
char ele = strInput.ElementAt(i);
//字符是否爲數字型判斷
if (ele >= '0' && ele <= '9')
{
//爲標識位賦值
fuhao = '@';
Console.Write(ele);
}
else
{
if (ele != fuhao)
{
Console.Write(ele);
}
fuhao = ele;
}
}
Console.ReadKey();
}
}
/*這段程序自我感覺良好,陶醉中...*/
}
第六題
namespace test6
{
class Program
{
/*有1、2、3、4 四個數字,編程實現能組成多少個互不相同且無重複數字的三位數?
都是多少?*/
static void Main(string[] args)
{
//定義個位數、十位數、百位數、這個三位數以及三位數的總數
int i, j, k,z,count=0;
Console.WriteLine("這些三位數分別爲:");
//個位數取值
for (i = 1; i <= 4; i++)
{
//十位數取值
for (j = 1; j <= 4; j++)
{
//百位數取值
for (k = 1; k <= 4; k++)
{
//判斷條件:個位數不等於十位數、個位數不等於百位數並且十位數不等於百位數
if ((i != j) && (i != k) && (j != k))
{
//三位數的個數
count++;
//三位數字
z = i + j * 10 + k * 100;
//輸出這個三位數,並且用空格進行間隔
Console.Write(z + " ");
//每輸出4個三位數字就換行
if (count % 4 == 0)
{
Console.WriteLine();
}
}
}
}
}
Console.WriteLine("三位數的總數爲:{0}", count);
Console.ReadKey();
/*這是我想到的比較容易理解的寫法,雖然比較麻煩,但思路清晰,便於理解
還可以再簡化,但限於時間精力有限,以後再完善吧!*/
}
}
}
第七題
namespace test7
{
class Program
{
/* 從鍵盤上輸入兩個整數,由用戶回答它們的和,差,積,商和取餘運算結果,
並統計出正確答案的個數。*/
static void Main(string[] args)
{
//定義兩個整數
int a, b;
//如果a的值是整型就跳出循環,否則就繼續循環
while (true)
{
Console.WriteLine("請輸入a的值:");
//接受a的值
String A = Console.ReadLine();
if (!(int.TryParse(A, out a)))
{
Console.WriteLine("輸入的類型非法,請重新輸入!");
}
else
{
break;
}
}
//如果b的值是整型並且不爲0就跳出循環,否則就繼續循環(除數不能爲0)
while (true)
{
Console.WriteLine("請輸入b的值:");
//接受a的值
String B = Console.ReadLine();
if (!(int.TryParse(B, out b))||Convert.ToInt32(B)==0)
{
Console.WriteLine("輸入的類型非法,請重新輸入!");
}
else
{
break;
}
}
Console.WriteLine("請分別寫出它們的和,差,積,商,取餘運算結果:");
Console.WriteLine("它們的和爲:");
//接受用戶輸入的 和
int he = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("它們的差爲:");
//接受用戶輸入的 差
int cha = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("它們的積爲:");
//接受用戶輸入的 積
int ji = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("它們的商爲:");
//接受用戶輸入的 商
int shang = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("它們取餘爲:");
//接受用戶輸入的 取餘
int quyu = Convert.ToInt32(Console.ReadLine());
//定義正確的個數
int count = 0;
//用戶輸入的和與實際和進行比較
if (he == (a + b))
{
count++;
}
//用戶輸入的差與實際差進行比較
if (cha == (a - b))
{
count++;
}
//用戶輸入的積與實際積進行比較
if (ji == (a * b))
{
count++;
}
if(shang == (a / b))
{
count++;
}
//用戶輸入的餘數與實際餘數進行比較
if (quyu == (a % b))
{
count++;
}
Console.WriteLine("您回答的正確個數爲:{0}", count);
Console.ReadKey();
/*這個程序關鍵是除數不能爲0,我處理的不是太好,直接把除數不能爲0放在了最前面*/
}
}
}
第八題
namespace test8
{
class Program
{
/*從一段文本中提取所有的數字。*/
static void Main(string[] args)
{
Console.WriteLine("請輸入一段文本信息:");
//接受文本信息
string szInput = Console.ReadLine();
//遍歷文本信息
for (int i = 0; i < szInput.Length; i++)
{
//檢索每一個字符
char ele = szInput.ElementAt(i);
//判斷字符是否爲數字
if (ele >= '0' && ele <= '9')
{
//輸出數字
Console.Write(ele+" ");
}
}
Console.ReadKey();
}
/*這段程序我認爲是自己寫的最精簡的*/
}
}
第九題
namespace test9
{
public partial class Form1 : Form
{
/*在label控件中隨機輸入20個1~1000之間的整數,求出其中所有的素數的和。*/
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//實例化隨機數
Random r = new Random();
//保存素數的和
int sum = 0;
Console.WriteLine("這20個隨機數爲:");
for (int i = 1; i <= 20; i++)
{
//隨機產生1~1000之間的隨機數
int n = r.Next(1, 1001);
//把值加入到label1中
txtShuzi.Text+= Convert.ToString(n) + " ";
int j;
//素數判斷
for ( j = 2; j <= n/2; j++)
{
if (n % j != 0)
{
continue;
}
else
{
break;
}
}
if (j > n / 2)
{
txtSushu.Text += n + " ";
sum += n;
}
}
label1.Text = Convert.ToString(sum);
}
/*寫這個程序費了不少勁,雖然不是最簡單的,但總算是實現了*/
}
}
第十題
namespace test10
{
class Program
{
/*編寫一個擲篩子100次的程序,並打印出各種點數的出現次數。*/
static void Main(string[] args)
{
//產生隨機數
Random rand = new Random();
//定義Count來存儲各點數出現的次數
int[] Count = new int[6]{0,0,0,0,0,0};
Console.WriteLine("輸出的篩子點數分別爲:");
//控制輸出的行數
for (int i = 0; i < 5; i++)
{
//控制輸出的列數
for (int j = 0; j < 20; j++)
{
//隨機產生1到6之間的數字
int r = rand.Next(1, 7);
Count[r - 1]++;
Console.Write(r + " ");
}
Console.WriteLine("");
}
Console.WriteLine("點數1出現的次數爲:{0}", Count[0]);
Console.WriteLine("點數2出現的次數爲:{0}", Count[1]);
Console.WriteLine("點數3出現的次數爲:{0}", Count[2]);
Console.WriteLine("點數4出現的次數爲:{0}", Count[3]);
Console.WriteLine("點數5出現的次數爲:{0}", Count[4]);
Console.WriteLine("點數6出現的次數爲:{0}", Count[5]);
Console.ReadLine();
}
}
}