Câu 1: Viết chương trình chuyển đổi số thập phân 256<n<65535 sang số nhị phân

dùng toán tử dịch bít (bitwise). Trong đó n được nhập vào từ bàn phím.
Bài làm:
#include<conio.h>
#include<stdio.h>
long n;
void nhap()
{
printf("ban hay nhap vao mot so 256< =n<=65536\n");
while(n<256||n>65535)
{
printf("n= ");scanf("%d",&n);
}
}
/*****************************************************************
**********/
void doi(long n)
{
int i,b;
for(i=15;i>=0;--i)
{
b=n>>i;
if(0x01&b)
printf("1");
else
printf("0");
}
printf("\n");
}

/*****************************************************************
**********/
void main()
{
long b;
clrscr();
printf("nhap vao so can doi\n");
nhap();
doi(n);
getch();
}
Câu 2: Viết chương trình chuyển đổi số thập phân n<65535 sang số nhị phân dùng
toán tử dịch bít (bitwise). Trong đó n được nhập vào từ bàn phím
Bài làm:
#include<conio.h>
#include<stdio.h>
long n;
void nhap()
{
printf("n= ");scanf("%d",&n);
}
/*****************************************************************
**********/
void doi(long n)
{
int i,b;
for(i=15;i>=0;--i)
{

b=n>>i;
if(0x01&b)
printf("1");
else
printf("0");
}
printf("\n");
}
/*****************************************************************
**********/
void main()
{
long b;
clrscr();
printf("nhap vao so can doi \n");
nhap();
doi(n);
getch();
}
Câu 3: Viết chương trình tính giá trị biểu thức logic Z: (viết dưới dạng hàm)
Bài làm:
#include<conio.h>
#include<stdio.h>
void nhap(int*a)
{
int t;
while(t<0||t>1)
{
scanf("%d",&t);
if(t<0||t>1)
printf("ban nhap co loi\n");

else
*a=t;
}
}
/*****************************************************************
**********/
int z(int a,int b,int c,int d)
{
int t;
t=!((a&&b)||(c||d)&&((a^b)&&(!(c&&d))));
return t;
}
/*****************************************************************
**********/
void main()
{
int a,b,c,d;
clrscr();
printf("a= ");
nhap(&a);
printf("b= ");
nhap(&b);
printf("c= ");
nhap(&c);
printf("d= ");
nhap(&d);
printf("bieu thuc logic co gia tri la:\n \nZ= %d",z(a,b,c,d));
getch();

}

Z= ((A.B)+(C+D).((A + B).(C.D)) trong đó, A,B,C,D là các số 0,1 nhập vào từ bàn phím

Câu 4: Viết chương trình tính giá trị biểu thức sau
1) Z1 = ~(((a & b)^(c|d))<<2)
2) Z2 = ((a & b)^(c^d))<<2
3) Z3 = (~(a|b))>>3

Trong đó: a,b,c, d là các số dương nhập vào từ bàn phím
Bài làm:
#include<conio.h>
#include<stdio.h>
void main()
{
clrscr();
int a,b,c,d,z1,z2,z3;
printf("ban hay nhap vao cac thong so can thiet\n");
printf("a=");scanf("%d",&a);
printf("b=");scanf("%d",&b);
printf("c=");scanf("%d",&c);
printf("d=");scanf("%d",&d);
z1=~(((a&b)^(c|d))<<2);
z2=((a&b)^(c^d))<<2;
z3=(~(a|b))>>3;
printf("Gia tri cua cac bieu thuc logic la: \n");
printf("z1= %d\n",z1);
printf("z2= %d\n",z2);
printf("z3= %d\n",z3);
getch();
}
Câu 5: Viết chương trình nhập giá trị màu của điện trở và chuyển thành giá trị số
#include<conio.h>

m[i])==0) return i.'g'}. int r.i<=9.'m'}.'m'}.'a'.'a'.m3[8]. gets(m1).'a'. char m1[8].s.'u'. int ss(char*a) { int i. r+=ss(m2). printf("nhap vach mau thu 2 : ").'a'. {'v'. {'c'. {'t'.'n'. for (i=0.'n'}.i++) if(stricmp(a.'u'}.gets(m3). printf("nhap vach mau thu 1 : " ).'i'.#include<stdio.'g'}.'a'.'m'}.h> #include<math. {'d'.m4[8].'c'}. {'x'. {'n'.'e'. . {'t'.'m'}.'o'}. } void main() { clrscr().'a'.gets(m2). } .'n'. {'l'.h> char m[10][8]={ {'d'. r=ss(m1)*10. {'l'.h> #include<string.m2[8].'r'. printf("nhap vach mau thu 3 : ").

5*pow(10. } Câu 6: Viết chương trình thực hiện: 1. .5mV.-3).h> double max(double a.s). d dùng toán tử điều kiện e1?e2:e3 2.double d) { double t.ss(m3)). if(stricmp(m4.b. t=d>t?d:t. t=a>b?a:b.c. if(stricmp(m4.r*=pow(10. Bài làm: #include<conio.gets(m4).double r) { double ur. getch()."nhu bac")==0) s=20.IS) Trong đó UT=25."do")==0) s=2."nhu vang")==0) s=10. printf("nhap vao vach mau thu 4: ").-6). Tính giá trị mạch khuếch đại logarit sau: Ura=-UTln(Uvào/R. Tìm max bốn số a.h> #include<math.%d% ". return t. if(stricmp(m4.tb.h> #include<stdio.double c.ta. t=t>c?t:c. Uvào và R được nhập vào từ bàn phím.r. cỡ IS=10-6A. double is=pow(10. double ut=25.double b."nau")==0) s=1. if(stricmp(m4. printf("gia tri cua dien tro la %d +. } double kd(double uv.tc.

scanf("%lf".max(a.&c).c. printf("b= "). printf("ban hay chon cac tien ich sau\n"). printf("R= "). int i. scanf("%d".&d).&r). printf("c= ").kd(uv. . printf("a= "). } break. printf("d= "). printf("gia tri dau ra cua bo khuyech dai la: %lg\n". printf("1: tim max\n"). printf("Gia tri lon nhat cua bon so %lg\n".&b).r) ). printf("2: tim dau ra bo khyech dai\n").a. double uv.&uv). } void main() { clrscr().scanf("%lf".&i). return ur. } break.d.scanf("%lf".r.d)).scanf("%lf". case 1: { printf("ban hay nhap bon so can bat ky\n").b.&a).c.scanf("%lf". printf("Uv= ").scanf("%lf". switch (i) { case 2: { printf("ban hay nhap vao cac thong so cua mach\n").ur=-ut*log(uv/r*is).b.

if(*a<0||*a>1) printf(" co loi de nghi nhap lai!\n").nhap(&x1). X4. X2. printf("x1= "). hãy lập trình hiển thị bản chân lý của mạch X1 X2 X3 X4 Y1 Y2 Z Trong đó: X1. printf("x2= ").x2.z.} getch(). printf("Ban hay nhap vao cac thong so dau vao cua mach logic\n").h> #include<stdio.a). int x1.nhap(&y1). printf("y1= ").y1. X3.x4. .nhap(&x4).nhap(&x2).x3. printf("x4= ").y2. printf("x3= "). Y2 được nhập vào từ bàn phím #include<conio.h> void nhap(int *a) { while(*a<0||*a>1) { scanf("%d". } Câu 7: Cho mạch logic như dưới đây. } } void main() { clrscr().nhap(&x3). Y1.

h> void nhap(int *a) { while(*a<0||*a>1) { scanf("%d".x4.nhap(&y2). X3.h> #include<stdio.x2. Y1. getch(). Y2 được nhập vào từ bàn phím Bài làm: #include<conio. hãy lập trình hiển thị bảng chân lý của mạch X1 X2 X3 X4 Z Y1 Y2 Trong đó: X1. } Câu 8: Cho mạch logic như dưới đây.!(((x1&&x2)||(x3 &&x4))^(y1&&y2))).printf("y2= "). } } void main() . printf("\t\t\t\tBANG CHAN MACH LOGIC\n\n\n"). X2. X4. if(*a<0||*a>1) printf(" co loi de nghi nhap lai!\n"). printf("\t\tx1\tx2\tx3\tx4\ty1\ty2\tz\n").x1.a). printf("\t\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n".y1.y2.x3.

y1. int x1.i<=1000. printf("x4= "). printf("\t\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n".x3.h> #include<stdio.0001.k.x4. C=0.x1.x2. printf("Ban hay nhap vao cac thong so dau vao cua mach logic\n").nhap(&x1).1  F.nhap(&x4). printf("x3= ").nhap(&y1).h> void main() { clrscr(). int i.28*r*c).x4. .k*i).i=i+20) printf(" %f tan so vao %d tan so ra\n").nhap(&y2).x3.!(((!(x1&&x2))||(! (x3&&x4)))^(!(y1&&y2)))).y2. printf("x1= ").y2. float r=1000. getch(). printf("\t\t\t\tBANG CHAN MACH LOGIC\n\n\n").z.i.k=1/(6.h> #include<math. printf("\t\tx1\tx2\tx3\tx4\ty1\ty2\tz\n"). } Câu 9: Cho hệ số khuếch đại của mạch lọc tần số thấp được tính K 1  2fRC Hãy viết chương trình có thể in ra một bảng tần số và hệ số khuếch đại tương ứng với dải tần từ 1Hz–1KHz theo từng bước hơn kém nhau 20.y1. printf("y1= "). printf("y2= "). Bài làm: #include<conio.{ clrscr().nhap(&x2).c=0. %f\n".nhap(&x3). với R=1K  . printf(" he so khuyech dai for(i=0. printf("x2= ").x2.

i<=1.i. hàm XOR và hàm OR.i++) for(j=0.!(i&&j)). sau đó chuyển thành số của màu tương ứng vừa nhập.j<=1. } } void xor() { int i. printf("\n\n").i.i++) for(j=0.j++) { printf("\t\t%d\t\t%d\t\t%d". } } . Bài làm: Câu#include<conio.(i^j)).getch(). for(i=0.j++) { printf("\t\t%d\t\t%d\t\t%d".n.j.j.i<=1.j<=1. for(i=0. printf("\n\n").h> void nand() { int i.h> #include<stdio. } Câu 10: Viết chương trình nhập chỉ số màu thứ nhất của điện trở.j. Chương trình sẽ kết thúc khi bấm Y khi có lời hỏi “Bạn muốn chuyển tiếp nữa không Y/N?” Câu 11: Viết chương trình hiển thị bảng chân lý của hàm NAND.j.

printf(" cong xor\n"). nand().j.j<=1.h> char nhap() { char c. xor(). if(c<='0'||c>'5'||c!=62) printf("co loi de nghi ban nhap lai\n").h> #include<stdio. printf(" cong nand\n").i. } void and() { int i. getch(). } BAI11_12 #include<conio.i&&j).j++) { printf("\t\t%d\t\t%d\t\t%d". } return c.j. printf("\n\n"). printf("\t\tA\t\tB\t\tY\n\n").i<=1. . while((c<='0'||c>'5')&&c!=62) { c=getch().i++) for(j=0. for(i=0.void main() { clrscr().

j++) { printf("\t\t%d\t\t%d\t\t%d". for(i=0.i++) for(j=0. printf("\n\n").i. } } void not() { int i.} } void nand() { int i.i++) printf("\t\t\t\t%d\t\t%d\n\n". } void xor() { int i.n.!i).i<=1.j.j<=1. } } void xnor() { . for(i=0. for(i=0.j++) { printf("\t\t%d\t\t%d\t\t%d".j.i<=1.j.(i^j)).i<=1.j.i. printf("\n\n").i.i++) for(j=0.j<=1.!(i&&j)).

printf("\n\n").i<=1. printf(" 1 : cong and\n"). and(). } 12: Viết chương trình hiển thị bảng chân lý của hàm AND.j.i.j<=1. printf(" 4 : cong xor\n"). printf("\t\tA\t\tB\t\tY\n\n"). nand(). xnor(). not().j++) { printf("\t\t%d\t\t%d\t\t%d". } } void main() { clrscr(). xor().h> .j. printf(" 3 : cong not\n").i++) for(j=0. printf(" 5 : cong xnor\n").!(i^j)).int i. getch(). và hàm NXOR. hàm NOR. Bài làm: #include<conio. printf(" 2 : cong nand\n"). for(i=0.

} } void nor() { int i. for(i=0. printf("\t\tA\t\tB\t\tY\n\n"). } } void main() { clrscr(). for(i=0.i&&j).#include<stdio.j.j<=1. printf("\n\n").j.!(i||j)).i.h> void and() { int i. printf("\n\n").j<=1.i<=1.j++) { printf("\t\t%d\t\t%d\t\t%d".j.j++) { printf("\t\t%d\t\t%d\t\t%d". printf(" cong and\n"). nor(). printf("cong nor\n"). and().i<=1. .i++) for(j=0.j.i.i++) for(j=0.

Username). Bài làm: #include<conio. } printf("\nban da nhap dung \n").h> void main() { clrscr().b.a.getch(). if(a==0&&b==0) break. printf("password: "). ngược lại thì yêu cầu nhập lại. int i. } a=strcmp("DTVT". } Câu 14: Tính Ur của mạch cộng đảo dùng khuếch đại thuật toán . for(i=0. b=strcmp("K2". printf("*").npass).h> #include<stdio. getch().gets(nuse). char *npass. while(a!=0||b!=0) { printf("\nusename: ").i<4. Nếu mật khẩu là “DTVT”.h> #include<string.++i) { npass[i]=getch().*nuse. tên đăng nhập là “K2” thì thoát khỏi chương trình. } Câu 13: Viết chương trình nhập vào mật khẩu và tên đăng nhập (Pass.nuse).

i++) ur+=uv[i]/r[i]. getch().scanf("%f".h> void nhap(float *a. } } void main() { clrscr(). nhap(uv. printf("gia tri dau ra cua bo cong dao la Ur= %f". for(i=0.i++) { printf("a[%d]=". UV1…. printf("ban hay nhap so dau vao cua bo cong dao n: ").&a[i]).ur=0.UVn được nhập từ bàn phím #include<conio.  N U Vn ) R1 R2 Rn trong đó: n.i<n. float *r.n). for(i=0. R1….i).i<n. printf("nhap vao cac dien ap dau vao\n"). nhap(r.Rn..ur).n. RN. int i.. ur=ur*(-r[n-1]).int n) { int i. scanf("%d". printf("ban hay nhap gia tri cua cac dien tro\n"). } .U r  ( RN R R U V 1  N U V 2  .h> #include<stdio.&n).*uv.n).

h> #include<stdio. a[i]=j.m.Câu 15: Viết chương trình thực hiện chức năng so sánh 2 số 4 bit A3A2A1A0 với B3B2B1B0.i. printf("ban hay nhap so thu hai\n"). nhap(a). Trong đó.j.i). B3…B1 là những số nhị phân được nhập vào từ bàn phím. printf("ket qua sau khi so sanh la\n"). int a[4].i>=0. l=a[i]&&(!b[i]).i--) { m=!a[i]&&b[i]. nhap(b). if(l<m) . for(i=3. printf("nhap vao hai so nhi phan 4 bit\n"). } } void main() { clrscr(). scanf("%d".h> void nhap(int *a) { int i.&j).i>=0. printf("ban hay nhap so thu nhat\n"). for(i=3. Bài làm: #include<conio.l.b[4].--i) { printf("a[%d]=". A3…A1.

b[0]).b[3].h> #include<stdio.b[1].a[3]. } if(l>m) { printf("%d%d%d%d > %d%d%d%d".B. } if(l==m&&i==0) printf("%d%d%d%d = %d%d%d%d".Bi là số nhị phân được nhập vào từ bàn phím Bài làm: #include<conio. printf("a= ").a[1].b[2].a[0].a[0]. } Câu 16: Viết chương trình hiển thị bảng chân lý của mạch hiệu toàn phần (Full Subtractor – FS) D = A  B  Bi B0  AB  ABi  BBi Trong đó: A.b[3].b[0]).b[0]).a[2].b[2].a[2].bi.a[2]. int a.{ printf("%d%d%d%d < %d%d%d%d".h> void main() { clrscr().b0. } getch().b[2]. break. while(a!=0&&a!=1) . break.b[1].b.b[1].a[1].d.a[3].a[3].a[1].b[3].a[0].

g3. A1.a2<=1.a2++) for (a3=0. G1.a3<=1.b.b0).a3. while(bi!=0&&bi!=1) scanf("%d".a.&a).a3++) { printf("\n").a2. G0.d. g3=a3. b0=((!a)&&b)||(b&&bi)||((!a)&&bi). getch(). printf("hieu cua hai so %d va %d la %d va con du %d\n".a0++) for (a1=0.scanf("%d". printf("\n \t\t\tbang chan ly ma gray\n\n").g2. G3 là đầu ra G0  A0  A1 G1  A1  A2 G2  A2  A3 Bài làm: /* in ra man hinh bang chan ly ma gray*/ #include<stdio.g0.a1<=1. printf("b= "). printf("\t\t\ta0a1a2a3\tg0g1g2g3\n\n"). A3 là đầu vào. while(b!=0&&b!=1) scanf("%d".h> void main() { clrscr().&bi).g1. printf("Bi= "). G3  A3 .a1++) for (a2=0.a0<=1. } Câu 17: Viết chương trình hiển thị bảng chân lý sơ đồ biến đổi mã nhị phân sang mã Gray: Trong đó A0. d=a^b^bi.h> #include<conio.&b). for (a0=0.a1. int a0.

Sau đó hiển thị danh sách đó theo thứ tự đã được sắp xếp .g1.d. B là tín hiệu vào.D Y2  A.b. } Câu 18: Viết chương trình hiển thị bảng chân lý của bộ phân kênh 1 đường vào và 4 đường ra: trong đó D là hằng số có giá trị bằng 1.b. A. g2=a2^a3. printf("\tD\tA\tB\tY0\tY1\tY2\tY3\n\n").. Y0  A.h> #include<stdio.!a&&b.g3). getch().a++) for(b=0.g0=a0^a1. printf("Bang chan ly bo phan kenh 1 dau vao 4 dau ra\n\n"). Y0.b<=1.h> void main() { clrscr(). } getch().a0. printf("\t\t\t%d%d%d%d\t %c\t %d%d%d%d\n".a1. for(a=0. g1=a1^a2.D Y1  A.a&&b).B.!a&&!b.157.d=1.D Bài làm: /*de bai: In ra man hinh bang chan ly cua bô phan kenh 1 dau vao 4 dau ra */ #include<conio.g0.a3..a2. int a.a. } Câu 19: Viết chương trình nhập vào một mảng n giá trị các điện trở.BD Y3  A.a&&!b.B.a<=1.b++) printf("\t%d\t%d\t%d\t %d\t %d\t %d\t %d\n\n".B.Y3 là tín hiệu ra.g2. sắp xếp theo thứ tự giảm dần.

for(i=0.h> typedef struct { char tenDT[5].&a[j]). } void doi(Dien_Tro *a.Trong đó: mỗi điện trở có cấu trúc như sau: Struct Dien_Tro { char TenDT[5]. }.Gia_tri) hv(&a[i]. }Dien_Tro. void hv(Dien_Tro *a.i++) for(j=1.h> #include<stdio. float Gia_tri. float Gia_tri.i<n-1.j++) if(a[i]. t=*a. } void nhap(Dien_Tro *t) { Dien_Tro h.Dien_Tro *b) { Dien_Tro t.h> #include<string.int n) { int i.j.Gia_tri<a[j]. *a=*b. #include<conio. .j<n. *b=t.

char name[5]. int n.tenDT). Sau đó hiển thị danh sách đó theo thứ tự đã được sắp xếp Trong đó: mỗi điện trở có cấu trúc như sau: .i. float dt. for(i=0. *t=h.i<n.r[i]. printf("ban nhap thong tin ve cac dien tro cua danh sach\n").i++) { nhap(&r[i]). sắp xếp theo thứ tự tăng dần. printf("ban nhap vao so dien tro cua danh sach:\n ").&n).Gia_tri=dt.tenDT.i<n. printf("ten dien tro: ").Gia_tri). scanf("%d%*c".t. printf("Danh sach cac dien tro sau khi da sap xep la\n\n\n"). for(i=0. } Câu 20: Viết chương trình nhập vào một mảng n giá trị các điện trở. printf(" Thu tu Ten dien tro Gia tri dien tro\n\n").r[i]. doi(r. printf("R = "). h.float dt.scanf("%f%*c". } void main() { clrscr().i+1. gets(h. getch(). Dien_Tro r[1000].n). } clrscr().i++) printf(" %d %s %f\n".&dt).

t=*a.Struct Dien_Tro { char TenDT[5].h> #include<stdio.j<n. }. *b=t. float Gia_tri.&a[j]).j++) if(a[i]. }Dien_Tro.i<n-1. } void doi(Dien_Tro *a.i++) for(j=1. for(i=0. void hv(Dien_Tro *a.Gia_tri>a[j].Dien_Tro *b) { Dien_Tro t. float Gia_tri.h> typedef struct { char tenDT[5].int n) { int i. *a=*b.Gia_tri) hv(&a[i]. Bài làm: #include<conio.h> #include<string. } void nhap(Dien_Tro *t) { .j.

printf(" Thu tu Ten dien tro Gia tri dien tro\n\n").r[i].r[i].i++) printf(" %d %s %f\n". printf("ban nhap thong tin ve cac dien tro so trong danh sach\n"). getch(). float dt. h.&dt). for(i=0.Gia_tri=dt.scanf("%f%*c".tenDT. Dien_Tro r[1000]. printf("Danh sach cac dien tro sau khi da sap xep la\n\n\n"). for(i=0. gets(h.i+1.i. float dt. } . *t=h. scanf("%d%*c".&n). printf("ban nhap vao so dien tro co trong dang sach: ").Dien_Tro h. doi(r.i++) { nhap(&r[i]). printf("R = "). int n.n).t. printf("ten dien tro: ").i<n.i<n.Gia_tri). } clrscr(). } void main() { clrscr().tenDT). char name[5].

i<n. printf("Uref=").i++) u0+=d[i]*pow(2. printf("ban hay nhap vao cac thong so dau vao cua mach bien doi DAC\n\n").i). nhap(&d[i]).. U0 là điện áp được chuyển đổi. while(t!=0&&t!=1) scanf("%d"..i.&ur).i<n. } void main() { clrscr().t.&t). float ur.scanf("%d".i). di (i=0->n) được nhập vào từ bàn phím.d[100]. } for(i=0. .&n). int n.h> void nhap(int *d) { int i. Bài làm: #include<conio.h> #include<math.scanf("%f". printf("n=").u0=0. n. for(i=0.h> #include<stdio. *d=t.Câu 21: Viết chương trình nhập vào một dãy số di có giá trị 0 hoặc 1 sau đó áp dụng công thức biến đổi DAC (Digital Analog Converter) theo công thức sau: u0  U ref 2 n (d n 1 2 n 1  d n  2 2 n  2  .  d1 21  d 0 2 0 ) Trong đó: Uref.t.i++) { printf("d[%d]= ".

} dientro. và những điện trở có giá trị lẻ sang mảng Dien_Tro_Le.u0*= ur/pow(2. Bài làm: #include<conio.n). float Gia_tri.u0). }. printf("Gia tri cua tin hieu sau khi qua bo bien doi DAC la: %f". } Câu 22: Viết chương trình nhập vào một mảng Dien_Tro_Chung gồm có n điện trở có cấu trúc như dưới đây. printf("R = "). *t=h. Struct Dien_Tro { char TenDT[5]. float giatri.int n) .h> #include<stdio.tendt).giatri=dt. getch(). Sau đó lưu những điện trở có giá trị chẵn sang mảng Dien_Tro_Chan. printf("ten dien tro: "). float dt. void nhap(dientro *t) { dientro h.&dt).h> typedef struct { char tendt[5].scanf("%f%*c". gets(h.h> #include<math. } void hien(dientro a[]. h.

i++) { nhap(&r[i]). for(i=0. . dientro r[100].giatri.i.i<n. scanf("%d%*c".giatri).i<n.rc[100]. } for(i=0. hien(rl.c). printf("\n").i<n. printf("danh sach ca dien tro co gia tri chan la:\n").3f .i++) printf("%3. } void main() { clrscr(). } } printf("danh sach ca dien tro co gia tri le la:\n").i++) { if(fmod(r[i].{ int i.".l). printf("ban hay nhap vao so phan tu cua danh sach dien tro\n").l=0.rl[100]. for(i=0.a[i]. l=l+1. } else { rc[c]=r[i]. hien(rc. int n.&n).2)!=0) { rl[l]=r[i].c=0. c=c+1.

dientro **pd. b có kiểu Struct Dien_Tro { char TenDT[5]. } dientro. } Câu 23: Viết chương trình thực hiện phép toán hoán vị của hai biến a. float Gia_tri.h> #include<alloc.h> #include<stdio.h> typedef struct pp { char tendt[5]. Sau đó thực hiện chức năng thêm điện trở và hiển thị danh sách điện trở đã nhập Struct Dien_Tro { char TenDT[5]. struct pp *next. getch(). void nhap(dientro **pp. }.char *ht) { dientro *p=*pp.h> #include<string. . }. float Gia_tri. Chương trình được viết theo hướng chương trình con Câu 24: Viết chương trình nhập vào một danh sách liên kết theo chiều thuận các điện trở có cấu trúc như dưới đây. Bài làm: #include<conio.printf("\n"). float giatri.

while(1) { printf("ten dien tro: ").&pdau. *pp=p. printf("gia tri: "). p=p->next. } void main() { char ht[5]. p->giatri=t. pdau=NULL. gets(ht). p=pdau. } else { p->next=(dientro*)malloc(sizeof(dientro)). dientro *pdau. if(ht[0]==0) break. *pd=pdau.ht).dientro *pdau=*pd. p->next=NULL.&t).*pl. scanf("%f%*c". clrscr(). float t.*p. nhap(&p. } strcpy(p->tendt. printf("ban hay nhap thong tin ve cac dien tro vao danh sach\n\n"). if(pdau==NULL) { pdau=(dientro*)malloc(sizeof(dientro)). } .ht).

h> typedef struct pp { char tendt[5]. nhap(&p. }.h> #include<string. struct pp *next. float Gia_tri. pl=pl->next. Bài làm: #include<conio.h> #include<alloc. Sau đó thực hiện chức năng thêm điện trở và hiển thị danh sách điện trở đã nhập Struct Dien_Tro { char TenDT[5].tendt.ht).giatri).&pdau.printf("nhap ten dien tro can chen\n"). while(pl!=NULL) { printf(" dien tro %s =%g\n". printf("danh sach dien tro la: \n"). gets(ht). pl=pdau. } getch(). float giatri.h> #include<stdio. printf("ten ten tro: "). } Câu 25: Viết chương trình nhập vào một danh sách liên kết theo chiều ngược các điện trở có cấu trúc như dưới đây.(*pl). .(*pl).

printf("gia tri cua dien tro la: ").*pl.scanf("%f%*c". } *pd=pdau. pp->giatri=t. solieu(&pdau. } .&t). pdau=pl. if(pdau==NULL) { p=(dientro *)malloc(sizeof(dientro)). } else { solieu(&pl. void solieu(dientro **p. dientro *pp. pp=(dientro *)malloc(sizeof(dientro)). } void nhap(dientro **pp. dientro *pdau=*pd. p=pdau.ht). *pp=p. pl->next=pdau.ht). pp->next=NULL. strcpy(pp->tendt.ht).char *ht) { float t. float t. *p=pp.dientro **pd.} dientro.char *ht) { dientro *p=*pp.

if(ht[0]==0) break. pl=pdau. nhap(&p. pdau=NULL. clrscr(). gets(ht).ht). while(1) { printf("ten dien tro: "). gets(ht). } printf("nhap ten dien tro can chen\n").ht).giatri).&pdau.void main() { char ht[5]. printf("ten ten tro: "). printf("danh sach dien tro la: \n"). Các giá trị ban đầu là số 0 hoặc 1 được nhập vào bảng Các lô .(*pl). } getch().tendt.&pdau.(*pl). nhap(&p. dientro *pdau. while(pl!=NULL) { printf(" dien tro %s =%g\n". pl=pl->next. printf("ban hay nhap thong tin ve cac dien tro vao danh sach\n\n").*pl. } Câu 26: Viết chương trình cài đặt thuật toán rút gọn dùng bìa Các lô cho bài toán gồm 3 đầu vào.*p.

h> #include<stdio. struct pp *next.dientro **pd. float t.char *ht) { dientro *p=*pp.h> #include<alloc.h> #include<string. Sau đó thực hiện chức năng xóa điện trở ở vị trí bất kỳ và hiển thị danh sách điện trở đã nhập Struct Dien_Tro { char TenDT[5]. p=pdau. void nhap(dientro **pp.h> typedef struct pp { char tendt[5]. } dientro. . if(pdau==NULL) { pdau=(dientro*)malloc(sizeof(dientro)). dientro *pdau=*pd. float Gia_tri. float giatri.Câu 27: Viết chương trình nhập vào một danh sách liên kết theo chiều thuận các điện trở có cấu trúc như dưới đây. } else { p->next=(dientro*)malloc(sizeof(dientro)). Bài làm: #include<conio. int vt. }.

} void main() { char ht[5].&pdau. } clrscr(). clrscr(). printf("gia tri: ").*pl.giatri). vit=vit+1. nhap(&p.vit=0.ht).*tam. pl=pdau. int vtri. pdau=NULL. p->vt=vit. while(1) { printf("ten dien tro: "). *pd=pdau.(*pl).tendt.ht).(*pl).p=p->next. pl=pl->next. printf("ban hay nhap thong tin ve cac dien tro vao danh sach\n\n").&t). *pp=p.*p. p->giatri=t. while(pl!=NULL) { printf(" %d: dien tro %s =%g\n".(*pl). gets(ht). } strcpy(p->tendt. } . p->next=NULL. dientro *pdau. if(ht[0]==0) break. scanf("%f%*c".vt.

printf("Ban hay nhap vi tri cua dien tro can xoa\n").(*pl). } if(vtri==2) { pdau->next=pdau->next->next.&vtri). if(pl->next->next==NULL) break. pl->next=pl->next->next.(*pl). pdau=pdau->next. free(tam). } printf("Danh sach cac dien tro sau khi bi xoa la:\n\n"). free(tam). if(vtri==1) { tam=pdau.pl=pdau. while(pl!=NULL) { printf(" %d: dien tro %s =%g\n".vt. pl=pl->next. scanf("%d". } . pl=pdau.tendt. if(pl->next->vt==vtri) break.(*pl). } tam=pl->next.giatri). } else { while(1) { pl=pl->next.

} dientro.h> #include<stdio.h> #include<alloc. float Gia_tri. Bài làm: #include<conio. float giatri. } Câu 28: Viết chương trình nhập vào một danh sách liên kết theo chiều ngược các điện trở có cấu trúc như dưới đây.scanf("%f%*c". struct pp *next. }. Sau đó thực hiện chức năng xóa điện trở ở vị trí bất kỳ và hiển thị danh sách điện trở đã nhập Struct Dien_Tro { char TenDT[5]. .h> #include<string. pp=(dientro *)malloc(sizeof(dientro)). dientro *pp.&t). int vt.h> typedef struct pp { char tendt[5]. strcpy(pp->tendt.getch(). void solieu(dientro **p. printf("gia tri cua dien tro la: ").char *ht) { float t. pp->giatri=t.ht). pp->next=NULL. *p=pp.

pl->next=pdau. } *pd=pdau. } void main() { char ht[5]. vit=1. *pp=p. } else { solieu(&pl. . vit++. p=pdau.*p. pdau=pl. int vit.*tam. dientro *pdau.*pl. pdau->vt=vit. pl->vt=vit.} void nhap(dientro **pp. clrscr(). dientro *pdau=*pd.dientro **pd. int vtri. solieu(&pdau.*pl. printf("ban hay nhap thong tin ve cac dien tro vao danh sach\n\n").char *ht) { dientro *p=*pp. if(pdau==NULL) { p=(dientro *)malloc(sizeof(dientro)).ht).ht).

} . } else { while(1) { pl=pl->next. } if(vtri==2) { pdau->next=pdau->next->next.&vtri). nhap(&p. pl->next=pl->next->next.&pdau. if(vtri==1) { tam=pdau. if(ht[0]==0) break.ht). } pl=pdau. } tam=pl->next. if(pl->next->next==NULL) break. free(tam). if(pl->next->vt==vtri) break.pdau=NULL. scanf("%d". pdau=pdau->next. gets(ht). printf("Ban hay nhap vi tri cua dien tro can xoa\n"). free(tam). while(1) { printf("ten dien tro: ").

h> void main() { . } Câu 29: Viết chương trình nhập vào hai danh sách a. while(pl!=NULL) { printf(" dien tro %s =%g\n". } getch().printf("danh sach dien tro la: \n"). pl=pdau. float Gia_tri.(*pl). Câu 30: Viết chương trình hiển thị bảng chân lý của Bộ đếm thập phân đồng bộ.(*pl).b vào danh sách c.h> #include<stdio.tendt. với giả thiết là Q4n Q3n Q2n Q1n  0000 . }. Hiển thị danh sách điện trở đã nhập Struct Dien_Tro { char TenDT[5]. Bài làm: #include<conio. có các giá trị 0 hoặc 1.giatri).b liên kết theo chiều thuận các điện trở có cấu trúc như dưới đây. Cho phương trình trạng thái như sau: Q1n 1  Q1n Q2n 1  Q4n Q1n Q2n  Q1n Q2n Q3n 1  Q2n Q1n Q3n  Q2n Q1n Q3n n Q4n 1  Q3n Q2n Q1n Q n  Q1n Q4n Trong đó các Q4n Q3n Q2n Q1n là những trạng thái trước đó của trigơ JK. Sau đó thực hiện việc cộng gộp giá trị của 2 danh sách a. pl=pl->next.

Bài làm: #include<conio. printf("bang chan ly cua bo dem thap phan dong bo \n\n").d.!q1. getch(). b là 2 số thập phân nhập vào từ bàn phím và có khoảng giá trị như đã chỉ ra ở trên.q3.q1& &q2&&q3||!q1&&q4).scanf("%d".l. } void ss(int n.q3<=1.B. NAND.h> int n.m.(!q4)&&q1&&(!q2)||!q1&&q2. for(i=4.h> #include<stdio.A.q3++) for(q4=0.b trong khoảng 0<a.q4++) printf("%d %d %d %d\n". printf("ban hay nhap vao mot so 0< =n<=16\n"). while(a<0||a>16) { printf("a= ").c.i--) { .q1++) for(q2=0.q2++) for(q3=0.int g) { int i. b<=16 sử dụng toán tử bitwise và mạch XOR.int q1. void nhap(int *n) { int a=*n.q4<=1.&a).q1<=1.q2. Trong đó a.i>=0. for(q1=0. } *n=a.q2<=1. } Câu 31: Viết chương trình thực hiện so sánh 2 số thập phân a.q4.q2&&q1&&!q3||!(q1&&q2)&&q3.

n. } void main() { int a.g). m=!c&&d. c=0x01&A. nhap(&a).g). if(l<m) { printf("%d < %d".n. clrscr(). l=c&&(!d). B=g>>i. ss(a. d=0x01&B. } . } if(l>m) { printf("%d > %d". break.n. nhap(&b). } printf("\n").A=n>>i. break. getch().g). printf("nhap vao so can doi\n").b).b. } if(l==m&&i==0) printf("%d = %d".

D (có giá trị nhị phân) sau đó minh họa chương trình hiển thị đèn LED 7. Cho phương trình của trạng thái của đèn LED 7 đoạn như sau: a  D  B  CA  C A b  C  BA  B A cCB A d  D  CB  C A  C BA e  C A  B A f  D  CB  C A  BA g  D  C B  CB  B A Bài làm: #include<conio.205.186. cho đến khi người dùng bấm phím “N” thì kết thúc. } void led(int a. while(t!=0&&t!=1) scanf("%d".int b.int g) { if(a==0) printf("\t\t %c%c%c%c\n".int e. if(f==0&&b==1) printf("\t\t%c \n\t\t%c \n\t\t%c \n".205.186. B.&t).186.Câu 32: Viết chương trình nhập vào bốn bít A. C.186.h> void nhap(int *d) { int t.186.205). *d=t. if(f==1&&b==0) printf("\t\t %c\n\t\t %c\n\t\t %c\n".205.int c.186. else printf("\n").186.int d.int f.186. %c\n\t\t%c .186).186).186. if(f==0&&b==0) printf("\t\t%c %c\n\t\t%c %c\n".186.186.186).h> #include<stdio.

D.e.186.205).205. printf("Ban hay nhap vao mot so nhi phan 4 bit\n").186.205).186. else printf("\n").186).y. else printf("\n").nhap(&B). printf("C=").186).g.186.186.if(f==1&&b==1) printf("\t\t \n\t\t \n\t\t \n").nhap(&C).205.186).186.c. } void main() { char t. if(g==0) printf("\t\t %c%c%c%c\n".nhap(&D). %c\n\t\t%c .186. if(e==1&&c==1) printf("\t\t \n\t\t \n\t\t \n"). do { clrscr().205.186. if(d==0) printf("\t\t %c%c%c%c\n".f.d. printf("D=").a. if(e==0&&c==1) printf("\t\t%c \n\t\t%c \n\t\t%c \n".B.186.205.186.205.C.186. int A. printf("B="). if(e==1&&c==0) printf("\t\t %c\n\t\t %c\n\t\t %c\n".b.205. if(e==0&&c==0) printf("\t\t%c %c\n\t\t%c %c\n".

t=getch(). } while(t!='n').C.c.b. Trong đó mỗi điện trở có cấu trúc như sau: Struct Dien_Tro { char TenDT[5]. clrscr(). led(a. c=!(C||(!B)||A). }. e=!((!C&&!A)||(B&&!A)).f. d=!(D||(!C&&B)||(!C&&!A)||(C&&!B&&A)).B. do { printf("hien thi led 7 doan cua so %d%d%d%d (nhap n de thoi hien)\n".D. b=!(!C||(B&&A)||(!B&&!A)). clrscr(). Bài làm: #include<conio. printf("Ban co muon tiep tuc khong c/n\n"). a=!(D||B||(C&&A)||(!C&&!A)). } Câu 33: Viết chương trình tìm điện trở có giá trị lớn nhất trong mảng điện trở gồm n điện trở được nhập vào từ bàn phím.h> .d. g=!(D||(C&&!B)||(!C&&B)||(B&&!A)).g).printf("A="). y=getch(). Sau đó hiển thị thông tin của điện trở có giá trị lớn nhất đó.e.A). float Gia_tri.nhap(&A). f=!(D||(C&&!B)||(C&&!A)||(!B&&!A)). } while(y!='n').

#include<stdio.dientro **pd.h> #include<string.h> typedef struct pp { char tendt[5]. if(pdau==NULL) { pdau=(dientro*)malloc(sizeof(dientro)). *pd=pdau. p=p->next. *pp=p. } void main() { . scanf("%f%*c". struct pp *next.ht). float giatri. } else { p->next=(dientro*)malloc(sizeof(dientro)).&t). p->giatri=t. void nhap(dientro **pp.char *ht) { dientro *p=*pp. printf("gia tri: "). float t. } dientro. p->next=NULL.h> #include<alloc. } strcpy(p->tendt. p=pdau. dientro *pdau=*pd.

max=pl->giatri.ht).*p.*pl. pl=pl->next.(*pl). dientro *pdau. clrscr(). pl=pdau.&pdau. while(pl!=NULL) { to=pl->giatri. if(ht[0]==0) break.to. pl=pl->next. max=max>to?max:to. while(pl!=NULL) { if(pl->giatri==max) printf(" dien tro %s =%g\n". } printf("dien tro co gia tri lon nhat la: \n").giatri). float max.char ht[5]. } .(*pl). printf("ban hay nhap thong tin ve cac dien tro vao danh sach\n\n"). } pl=pdau. nhap(&p. gets(ht). pdau=NULL. } getch(). while(1) { printf("ten tro: ").tendt.

void nhap(dientro **pp. struct pp *next. } else { p->next=(dientro*)malloc(sizeof(dientro)). Bài làm: #include<conio.h> #include<string. float t. p=pdau.char *ht) { dientro *p=*pp.h> typedef struct pp { char tendt[5]. float giatri.h> #include<stdio. float Gia_tri. dientro *pdau=*pd.Câu 34: Viết chương trình tìm điện trở có giá trị nhỏ nhất trong mảng điện trở gồm n điện trở được nhập vào từ bàn phím. }. if(pdau==NULL) { pdau=(dientro*)malloc(sizeof(dientro)). Sau đó hiển thị thông tin của điện trở có giá trị nhỏ nhất đó.dientro **pd. Trong đó mỗi điện trở có cấu trúc như sau: Struct Dien_Tro { char TenDT[5].h> #include<alloc. . } dientro. p=p->next.

to.&t). *pd=pdau. . p->next=NULL. } printf("dien tro co gia tri nho nhat la: \n"). *pp=p. min=min<to?min:to. min=pl->giatri. } void main() { char ht[5]. printf("ban hay nhap thong tin ve cac dien tro vao danh sach\n\n").&pdau. while(pl!=NULL) { to=pl->giatri.ht). pdau=NULL.ht).*p. pl=pl->next. p->giatri=t. gets(ht). if(ht[0]==0) break. nhap(&p. clrscr().} strcpy(p->tendt. while(1) { printf("ten tro: ").*pl. scanf("%f%*c". printf("gia tri: "). float min. dientro *pdau. } pl=pdau.

(*pl).tendt. } getch(). while(pl!=NULL) { if(pl->giatri==min) printf(" dien tro %s =%g\n". pl=pl->next.giatri).pl=pdau. } .(*pl).

Sign up to vote on this title
UsefulNot useful