Cấu trúc có điều kiện C Bài Tập vầ giải Giải1.Viết chương trình giải phương trình bậc 2 : ax2 + bx + c = 02.Viết chương trình giả 1 máy tính tay với các phép toán đơn giản như +,,, và lấy căn bậc 2.Gợi ý : Nhập phép toán (toán tử) và 2 số (toán hạng). Lưu ý nếu lấy căn bậc 2 thì chỉ nhập 1 toán hạng
Trang 1CHƯƠNG 4: CẤU TRÚC ĐIỀU KIỆN
1 Viết chương trình giải phương trình bậc 2 : ax 2 + bx + c = 0
Console.WriteLine("cho 3 hệ số a,b,c: ");
int a = int.Parse (Console.ReadLine());
int b = int.Parse (Console.ReadLine());
int c = int.Parse (Console.ReadLine());
int denta;
if ( a == 0 )
{ if ( b ==0)
{ if ( c == 0)
Console.WriteLine( "PT có vô số nghiệm" );
else Console.WriteLine( "PT vô nghiệm" );
} else Console.WriteLine( " PT có nghiệm x = {0}",-c/b );
}
else {denta = b*b - 4*a*c;
if ( denta == 0)
Console.WriteLine("PT có nghiệm x1 = x2 ={0}", -b/(2*a));
if ( denta < 0)
Console.WriteLine( "PT vô nghiệm" );
else { Console.WriteLine( " PT có hai nghiệm là:");
Console.WriteLine( " x1 = {0}",(-b+Math.Sqrt(denta))/(2*a)); Console.WriteLine( " x2 = {0}",(-b-Math.Sqrt(denta))/(2*a)); }
Trang 2Console.ReadLine() ;
2 Viết chương trình giả 1 máy tính tay với các phép toán đơn giản như +,-,*,/ và lấy căn bậc 2.
Gợi ý : Nhập phép toán (toán tử) và 2 số (toán hạng) Lưu ý nếu lấy căn bậc 2 thì chỉ nhập 1 toán hạng
Console.WriteLine(" nhập giá trị a:");
float a = float.Parse(Console.ReadLine());
Console.WriteLine("nhập giá trị b:");
float b = float.Parse(Console.ReadLine());
Console.WriteLine(" nhập một số từ 1 dến 5 tuong ung +,-,*,/ và lay can bac hai");
int n = int.Parse(Console.ReadLine());
switch (n)
{
case 1: Console.WriteLine("{0}+{1}={2}",a,b,a+b); break;
case 2: Console.WriteLine("{0}-0{1}={2}",a,b,a-b); break;
case 3: Console.WriteLine("{0}*{1}={2}",a,b,a*b); break;
case 4: if ( b==0) Console.WriteLine(" khong thuc hien duoc phep chia");
else Console.WriteLine("{0}/{1}={2}",a,b,a/b); break;
case 5: Console.WriteLine("can bac hai cua {0} la {1}",a,Math.Sqrt(a)); break;
}
Console.ReadLine();
3 Viết chương trình giải hệ phương trình sau
a 1 x + b 1 y = c 1
a 2 x + b 2 y = c 2
với tất cả trường hợp ( có nghiệm, vô nghiệm, vô số nghiệm)
Trang 3Console.WriteLine(" nhap a1,b1,c1,a2,b2,c2");
double a1,b1,c1,a2,b2,c2;
a1=double.Parse(Console.ReadLine());
b1=double.Parse(Console.ReadLine());
c1=double.Parse(Console.ReadLine());
a2=double.Parse(Console.ReadLine());
b2=double.Parse(Console.ReadLine());
c2=double.Parse(Console.ReadLine());
if ((a1*b2-a2*b1)==0) {
if ((c1*b2-c2*b1)==0)
{
if ((a1*c2-a2*c1)==0)
Console.WriteLine("PT co vo so nghiem");
else Console.WriteLine("PT vo nghiem");
} else Console.WriteLine("Pt vo nghiem");
} else Console.WriteLine(" PT co nghiem la x ={0}, y={1}",((c1*b2-c2*b1)/(a1*b2-a2*b1)), ((a1*c2-a2*c1)/(a1*b2-a2*b1)));
Console.ReadLine();
4 Nhập 4 số a,b,c và d In ra số lớn nhất và nhỏ nhất trong 4 số này.
Console.WriteLine(" nhap 4 so a,b,c,d");
float a = float.Parse(Console.ReadLine());
float b = float.Parse(Console.ReadLine());
Trang 4float c = float.Parse(Console.ReadLine());
float d = float.Parse(Console.ReadLine());
float max, min;
max = Math.Max(Math.Max(Math.Max(a,b),c),d);
min = Math.Min(Math.Min(Math.Min(a,b),c),d);
Console.WriteLine(" gia tri lon nhat la: " + max);
Console.WriteLine(" gia tri nho nhat la: " + min);
Console.ReadLine();
5 Nhập 4 số a,b,c và d In lại 4 số trên nhưng theo thứ tự giảm dần
6 An một phím bất kỳ từ A G > Phát âm tần số tương ứng với phím được ấn
A: La B : Si C : Do D : Re E : Mi F:Fa G: Sol
7 Nhập năm dương lịch sau năm 1900, in ra tên năm âm lịch tương ứng (năm 1900 là năm Canh
Tý)
Thập Can : Giáp, At, Bính , Đinh, Mậu, Kỷ , Canh , Tân, Nhâm, Quý
Thập nhị Chi : Tý , Sửu, Dần, Mão, Thìn, Tỵ, Ngọ, Mùi, Thân, Dậu, Tuát, Hợi
Console.WriteLine(" nhap nam sinh duong lich cua ban:");
int namsinh = int.Parse(Console.ReadLine());
int a,b;
string s1 = " ";
string s2 = " ";
a = ( namsinh - 1900 + 7 )%10;
b = ( namsinh - 1900 + 1 )%12;
switch (a) { case 1 : s1 = " giap";break;
case 2 : s1 = " At";break;
case 3 : s1 = " Binh";break;
Trang 5case 4 : s1 = " Dinh";break;
case 5 : s1 = " Mau";break;
case 6 : s1 = " ky";break;
case 7 : s1 = " Canh";break;
case 8 : s1 = " Tan";break;
case 9 : s1 = " Nham";break;
case 0 : s1 = " Quy";break;
}
switch ( b)
{ case 1 : s2 = " Ty";break;
case 2 : s2 = " Suu";break;
case 3 : s2 = " Dan";break;
case 4 : s2 = " Mao";break;
case 5 : s2 = " Thin";break;
case 6 : s2 = " Ty";break;
case 7 : s2 = " Ngo";break;
case 8 : s2 = " Mui";break;
case 9 : s2 = " Than";break;
case 10 : s2 = " Dau";break;
case 11 : s2 = " Tuat";break;
case 0 : s2 = " Hoi";break;
}
Console.WriteLine(" nam am lich tuong ung:" + s1+" " + s2); Console.ReadLine();
Trang 68 Nhập năm sinh một người nam, năm sinh một người nữ Cho biết 2 người có kỵ tuổi nhau hay
không (Tứ hành xung gồm 3 bộ {Dần-Thân-Tỵ-Hợi},{Thìn-Tuất-Sửu-Mùi} và {Tỵ-Ngọ-Mẹo-Dậu} )
Console.WriteLine(" nhap nam sinh cua nam:");
int nam = int.Parse(Console.ReadLine());
Console.WriteLine(" nhap nam sinh cua nu:");
int nu = int.Parse(Console.ReadLine());
if ( nam == nu)
Console.WriteLine(" cung tuoi nam duoi ma an");
else { if ( Math.Abs(nam - nu )%3 == 0)
Console.WriteLine(" xung khac");
else {if(Math.Abs(nam-nu)%4 ==0)
Console.WriteLine(" hop tuoi");
else Console.WriteLine(" binh thuong");
} }
Console.ReadLine();
Trang 7CHƯƠNG 5: CẤU TRÚC LẶP
1 Nhập 1 số N bất kỳ Nếu N>0 thì kiểm tra xem N có phải là số nguyên tố hay không?
Console.WriteLine(" nhap n");
int n = int.Parse(Console.ReadLine());
int i=0;
if ( n ==1)
Console.WriteLine(" n ko phai so NT");
else { if ( n< 4) Console.WriteLine(" n la so NT");
else { int canbachai=(int)Math.Sqrt(n);
for (i=2;i<=canbachai; i++) {if ( n%i ==0)
{Console.WriteLine(" ko la so NT");
break;}
}
if ( i > canbachai) Console.WriteLine(" n la so NT");
} Console.ReadLine();
2 Nhập 1 số N nguyên dương, sau đó in ra giá trị nhị phân của N.
Console.WriteLine(" nhap so nguyen n:");
int n = int.Parse(Console.ReadLine());
string nhiphan = " " ; while ( n != 0 )
Trang 8{ nhiphan = n%2 + nhiphan;
n = n/2;
} Console.WriteLine(" gia tri nhi phan:" + nhiphan);
Console.ReadLine();
3 Viết chương trình nhập vào chiều dài 2 cạnh của 1 hình chữ nhật, sau đó vẽ hình chữ nhật
này trên màn hình tạo bằng các dấu *
Vd: 3 10
**********
**********
**********
Console.WriteLine(" nhap chieu dai 2 canh hinh chu nhat");
int a=int.Parse(Console.ReadLine());
int b=int.Parse(Console.ReadLine());
int i,j;
for (i=1;i<=a;i++) { for(j=1; j <=b;j++)
Console.Write("*");
Console.WriteLine();
} Console.ReadLine();
Trang 94 Hoàn chỉnh bài máy tính bỏ túi: thêm 1 số phép toán như x lũy thừa y,căn bậc chẵn bất
kỳ,sigma N và N!
5 Viết chương trình nhập vào 1 chuỗi họ tên, sau đó tách họ lót và tên riêng ra rồi in lên màn
hình
6 Tính số hạng thứ N của dãy Fibonacci
a 0 =a 1 =1
a n =a n-1 +a n-2 với n>=2
Console.WriteLine(" nhap so hang thu n(n>2):");
int n = int.Parse(Console.ReadLine());
if ( n < 2)
Console.WriteLine(" nhap lai n:");
else {int i=1,s1=1,s2=1;
Console.Write(" 1 1");
for( i=2;i<n;i++) {s2 = s2 +s1;
Console.Write(s2+" ");
s1 = s2-s1;
} }
Console.ReadLine();
7 Nhập vào 1 số nguyên N Cho biết
Số N có bao nhiêu ký số
Tổng các ký số của N là bao nhiêu
Ví dụ N=23412 Số này có 5 ký số và tông 5 ký số này là 2+3+4+1+2 = 12
Trang 10Console.WriteLine(" nhap so nguyen n:");
int n = int.Parse(Console.ReadLine());
int dem =0,s=0,m,k;
while ( n> 0) {m = n%10;
dem = dem +1;
s=s+m;
n=n/10;
} Console.WriteLine(" so n co {0} ki so",dem);
Console.WriteLine(" tong cac ki so:" +s);
Console.ReadLine();
8 Viết chương trình nhập vào 2 số M>N>0, sau đó in ra các kết quả sau:tổ hợp của M chọn N ,
chỉnh hợp M chọn N
Console.WriteLine(" nhap so nguyen duong m,n(m>n>0)");
int m = int.Parse(Console.ReadLine());
int n = int.Parse(Console.ReadLine());
if ( m<=n||n<=0)
Console.WriteLine(" nhap lai m,n");
else {double s1 = 1, s2=1,s3=1;//s1:giaithua cua m,s2: giai thua cua n,s3: giai thua cua m-n for ( int i =1; i<=m; i++)
s1 = s1*i;
for ( int j =1; j<=(m-n);j++)
s2=s2*j;
Trang 11for ( int t=1;t<=n;t++)
s3=s3*t;
Console.WriteLine(" to hop chap "+m+" cua "+n+" la"+(s1/(s2*s3))); Console.WriteLine(" chinh hop la:"+ s1/s2);
}
Console.ReadLine();