Tải bản đầy đủ (.docx) (29 trang)

Bài tập lập trình C có lời giải

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (76.42 KB, 29 trang )

1

BÀI LÀM C
Câu 1: Viết chương trình giải phương trình bậc hai: ax2 + bx + c = 0, với a, b, c là các hệ số thực nhập
vào từ bàn phím.
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
int a,b,c,d;
float x1, x2, x;
printf("\n nhap vao 3 so a, b, c \n ");
scanf("%d %d %d",&a,&b,&c);
if (a == 0)
{
printf("Phuong trinh %dx2 + %dx + %d = 0 co 1 nghiem x: %f\n ",a,b,c, -c/(float)b);
}
else
{
d = b*b - 4*a*c;
if(d<0)
{
printf("Phuong trinh vo nghiem\n ");
}
else if (d==0)
{
printf("Phuong trinh %dx2 + %dx + %d = 0 co nghiem kep: %f\n ",a,b,c,(float)-b/(2*a));
}
else
{


x1 = (-b - sqrt(d))/(2*a);
x2 = (-b + sqrt(d))/(2*a);
printf("Phuong trinh %dx2 + %dx + %d = 0 co 2 nghiem la x1 = %f, x2 = %f\n ",a,b,c, x1,x2);
}
getch();
}
}
Câu 2: Viết chương trình nhập vào tổng thu nhập GDP của nước ta năm 2014 (tính theo USD) và tốc
độ tăng trưởng kinh tế bình quân nào đó. In ra màn hình thu nhập GDP của các năm theo dạng:
Năm
GDP
2014
100
2015
112.5
...
...
cho đến năm có GDP >= 2 lần năm 2014 thì dừng.
#include <stdio.h>


#include <conio.h>
main ()
{
float a,b,GDP;
int Nam;
printf("Ban hay nhap vao GDP nam 2014: ");
scanf("%f",&a);
printf("Ban hay nhap toc do tang truong kinh te binh quan hang nam: ");
scanf("%f",&b);

GDP=a;
Nam = 2014;
printf("Nam\tGDP\n2014\t%f\n",GDP);
while (GDP<=(2*a))
{
GDP=GDP+(GDP*b/100);
Nam=Nam+1; printf("%d\t
%f\n",Nam,GDP);
}
getch();
}
Câu 3 : Nhập vào một dãy n số bất kỳ từ bàn phím. Sau đó sắp xếp dãy số theo chiều tăng dần. In ra
màn hình dãy số ban đầu và dãy số đã sắp xếp.
#include <stdio.h>
#include <math.h>
#include <conio.h>
main()
{
int a[50], i, j, n, m;
printf("Hay nhap so phan tu: ");
scanf("%d",&n);
for (i=0; i{
printf("\nNhap a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Day so ban dau la: ");
/*in ra day so */
for (i = 0; i < n; i++)
printf("%d ",a[i]);

printf("\nDay so da sap xep la: ");
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
{
if (a[i] > a[j])
{


m = a[i];
a[i] = a[j];
a[j] = m;
}
}
for (j=0; jprintf("%d ",a[j]);
getch();
}
Câu 4:

 ax + by =
c
Viết chương trình giải hệ 2 phương trình bậc nhất 

, với a, b, c, d, e, f, là các hệ số thực

dx + ey = f

nhập vào từ bàn phím. Thông báo kết quả ra màn hình.
#include <stdio.h>
#include <conio.h>

#include <math.h>
main()
{
int a,b,c,d;
float x1, x2, x;
printf("\n nhap vao 3 so a, b, c \n ");
scanf("%d %d %d",&a,&b,&c);
if (a == 0)
{
printf("Phuong trinh %dx2 + %dx + %d = 0 co 1 nghiem x: %f\n ",a,b,c, -c/(float)b);
}
else
{
d = b*b - 4*a*c;
if(d<0)
{
printf("Phuong trinh vo nghiem\n ");
}
else if (d==0)
{
printf("Phuong trinh %dx2 + %dx + %d = 0 co nghiem kep: %f\n ",a,b,c,(float)-b/(2*a));
}
else
{
x1 = (-b - sqrt(d))/(2*a);
x2 = (-b + sqrt(d))/(2*a);
printf("Phuong trinh %dx2 + %dx + %d = 0 co 2 nghiem la x1 = %f, x2 = %f\n ",a,b,c, x1,x2);
}
getch();



}
}
Câu 5: Tính giá trị n giai thừa (n!), với n nhập vào từ bàn phím. In kết quả ra màn hình.
#include<stdio.h>
#include<conio.h>
main()
{
int i,giaithua=1,n;
printf("Nhap mot n: ");
scanf("%d",&n);
for(i=1; i<=n; i++)
{
giaithua=giaithua*i;
}
printf("\nGiai thua cua %d la: %d",n,giaithua);
printf("\n\n===========================\n");
getch();
}
Câu 6: Viết chương trình tìm bội số chung nhỏ nhất của hai số nguyên dương nhập vào từ bàn phím.
#include<stdio.h>
#include<conio.h>
main()
{
int a, b, i = 2;
do
{
printf("Hay nhap vao 2 so nguyen duong a,b\n");
scanf("%d%d", &a, &b);
}

while (a <= 0 || b <= 0);
while (a%b!=0)
{
a = a / (i - 1)*i;
i++;
}
printf("BCNN cua 2 so la: %d", a);
getch();
}
Câu 7: Viết chương trình nhập vào ba số a, b, c. Sau đó kiểm tra xem ba số này có tạo thành cạnh của
tam giác hay không. Nếu là tam giác thì kiểm tra xem đó là loại tam giác nào trong số các loại sau: vuông,
cân, vuông cân, đều, tam giác thường.
#include <stdio.h>
#include <conio.h>
#include <math.h>


main ()
{
float a,b,c;
printf("hay nhap vao 3 so a,b,c \n");
scanf("%f",&a);
scanf("%f",&b);
scanf("%f",&c);
if ((a+b)>=c & (b+c)>=a & (a+c)>+b)
{
printf("3 canh tao thanh mot tam giac\n");
if ((a*a+b*b==c*c)|(a*a+c*c==b*b)|(b*b+c*c==a*a))
{
printf("3 canh tao thanh tam giac vuong\n");

if ((a==b)|(b==c)|(a==c))
{
printf("3 canh tao thanh tam giac vuong can\n");
}
else
{
printf("3 canh khong phai la tam giac vuong can\n");
}
}
else if ((a==b)||(b==c)||(a==c))
{
if ((a==b)&&(b==c)&&(a==c))
{
printf("la tam giac deu\n");
}
else
{
printf("la tam giac can\n");
}
}
else


{

printf("la tam giac thuong\n");

}

}

else
{
printf("3 canh khong tao thanh mot tam giac\n");
}
getch();
}
Câu 8: Nhập vào một dãy n số bất kỳ từ bàn phím. Tìm giá trị lớn nhất và nhỏ nhất của dãy số đó. In kết
quả tìm được ra màn hình cùng vị trí của các giá trị max, min trong dãy số.
#include <stdio.h>
#include <conio.h>
main()
{
int i,n,max,min, vtmax, vtmin;
int a[50];
printf("Nhap vao so n: ");
scanf("%d",&n);
for(i=0; i{
printf("\nNhap vao phan tu thu %d: ",i);
scanf("%d",&a[i]);
}
max=a[0];
vtmax = 1;
for(i=1; i{
if(max < a[i])
{
max=a[i];
vtmax= i +1 ; // lưu vị trí max



}
}
printf("\nSo lon nhat trong mang la %d nam o vi tri thu %d",max,vtmax);
min=a[0];
vtmin=1;
for(i=1; i{
if(min>a[i])
{
min=a[i];
vtmin = i+1; // lưu vị trí min
}
}
printf("\nSo nho nhat trong mang la %d nam o vi tri thu %d",min,vtmin);
getch();
}
Câu 9: Viết chương trình nhập vào ma trận thực Anxm . Sau đó tìm giá trị lớn nhất, giá trị nhỏ nhất của
ma trận này. In ma trận cùng kết quả tìm được ra màn hình.
#include<stdio.h>
main()
{
float a[20][20],max,min;
int i,j,m,n;
printf("nhap kich thuoc ma tran:");
scanf("%d%d",&m,&n);
for(i=0;ifor(j=0;j{
printf("nhap a[%d][%d]:",i,j);

scanf("%f",&a[i][j]);
}
max=a[0][0];min=a[0][0];
for(i=0;ifor(j=0;j{
if(a[i][j]>max) max=a[i][j];
if(a[i][j]}
printf("phan tu lon nhat ma tran la:%f",max);
printf("\nphan tu nho nhat ma tran la:%f",min);


}
Câu 10: Nhập vào 2 số là tháng và năm, kiểm tra xem tháng đó có bao nhiêu ngày. In kết quả ra màn
hình theo dạng: Tháng 3 năm 2014 có 31 ngày.
#include <stdio.h>
#include <math.h>
#include <conio.h>
main ()
{
int th, nm, songay;
printf("Nhap thang, nam: ");
scanf("%d%d", &th, &nm);
if (th>=1 && th<=12)
{
switch (th)
{
case 1:
case 3:

case 5:
case 7:
case 8:
case 10:
case 12:
songay = 31;
break;
case 4:
case 6:
case 9:
case 11:
songay = 30;
break;
case 2:
if (nm % 400 == 0 || (nm % 4 == 0 && nm % 100 != 0)) // nam nhuan
songay = 29;
else


songay = 28;
}

printf("=> Thang %d nam %d co %d ngay\n", th, nm, songay);
}
else
printf("=> Thang khong hop le!\n");
getch();
}
Câu 11: Viết chương trình tạo ra một danh sách liên kết thuận để quản lý danh sách sinh viên. Cấu trúc
sinh viên gồm các thành phần: Ho_ten, Tuoi, Diem_TB. Chương trình được tổ chức thành các chương trình

con sau:
1) Tạo danh sách sinh viên
2) Hiển thị danh sách ra màn hình theo dạng
DANH SACH SINH VIEN
STT

Ho ten

...

Tuoi

Diem TB

...

3) Chèn thêm một sinh viên vào sau sinh viên nào đó (có tên nhập vào từ bàn phím)
4) Xóa một sinh viên
5) Sửa một sinh viên
Hàm main() hiển thị menu để chọn các chức năng bằng cách nhập số tương ứng như sau
1.
2.
3.
4.
5.
6.

Tao danh sach sinh vien
Hien thi danh sach sinh vien
Chen them sinh vien

Xóa một sinh viên
Sửa một sinh viên
Ket thuc

Chức năng nào được chọn sẽ gọi thực hiện chương trình con tương ứng.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
typedef struct sinh_vien
{
char ho_ten[20];
float diem_tb;


struct sinh_vien *tiep;
}p_sv;
p_sv *p_dau, *p_cuoi, *p;
void tao_ds()
{
char ht[20], chon;
int stt=0;
float x;
printf("NHAP DANH SACH SINH VIEN\n");
p_dau=NULL;
do
{
fflush(stdin);
printf("Nhap thong tin ve sinh vien thu %d: \n",++stt);
printf("Nhap ho va ten: ");

gets(ht);
printf("Nhap diem trung binh: ");
scanf("%f",&x);
p=(p_sv*)malloc(sizeof(p_sv));
strcpy(p->ho_ten,ht);
p->diem_tb=x;
if (p_dau==NULL)
{
p_dau=p;
p_cuoi=p;
}
else
{
p_cuoi -> tiep=p;
p_cuoi=p;
}
p->tiep=NULL;
printf("Co nhap nua khong?");
fflush(stdin);


chon=getchar();
}while (chon!='k');
}
void in_ds()
{
int stt=0;
printf("DANH SACH SINH VIEN\n");
printf("STT\tHO_TEN\t\tDiem_trung_binh\n");
p=p_dau;

while (p!=NULL)
{
printf("%d\t%s\t\t%6.2f\n", ++stt, p->ho_ten, p->diem_tb);
p=p->tiep;
}system("pause");
}
void chen_pt()
{
p_sv *p_tim;
float x;
char ht[20];
printf("Nhap ho va te: ");
fflush(stdin);
gets(ht);
printf("Nhap diem trung binh: ");
scanf("%f",&x);
p=(p_sv*)malloc(sizeof(p_sv));
strcpy(p->ho_ten,ht);
p->diem_tb=x;
p>tiep=NULL;
printf("Muon chen sau sinh vien nao: ");
fflush(stdin);
gets(ht);
p_tim=p_dau;
while ((p_tim!=NULL)&&(strcmpi(p_tim->ho_ten,ht)))


p_tim=p_tim->tiep;
if (p_tim==NULL)
printf("Khong tim thay vi tri can chen");

else
{
if (p_tim>tiep==NULL)
p_tim->tiep=p;
else
{
p->tiep=p_tim->tiep;
p_tim->tiep=p;
}
printf("Da chen xong");
}
}
void xoa_pt()
{
p_sv *p_tim, *p_truoc;
char ht[20];
printf("Nhap ho ten sinh vien can xoa: ");
fflush(stdin);
gets(ht);
p_tim=p_dau;
while ((p_tim!=NULL)&&(strcmpi(p_tim->ho_ten,ht)))
{
p_truoc=p_tim;
p_tim=p_tim->tiep;
}
if (p_tim=NULL)
printf("Khong tim thay vi tri can xoa");
else
{



if(p_tim->tiep==NULL)
p_truoc>tiep==NULL;


else if (p_tim=p_dau)
p_dau=p_tim->tiep;
else p_truoc->tiep=p_tim->tiep;
free(p_tim);
printf("Da xoa xong");
}
}
main()
{
char chon;
do
{
system("cls");
printf("DANH SACH CHUC NANG CAN THUC HIEN\n");
printf("1. Tao danh sach\n");
printf("2. In danh sach\n");
printf("3. Chen phan tu vao trong danh sach\n");
printf("4. Xoa phan tu trong danh sach\n");
printf("5. Thoat\n");
printf("Moi chon chuc nang: ");
chon=getchar();
system("cls");
switch (chon)
{
case '1': tao_ds();

break;
case '2': in_ds();
break;
case '3': chen_pt();
break;
case '4': xoa_pt();
break;
}
}while (chon!='5');


getch();
}
Câu 12: Viết chương trình sử dụng kiểu nhập xuất nhị phân với tệp có tên là SO_LIEU.C. Số liệu bán
hàng có cấu trúc gồm các thành phần: Ten_hang, Don_gia, So_luong, Thanh_tien (= So_luong * Don_gia).
Chương trình được tổ chức thành các chương trình con sau:
1) Nhập số liệu bán hàng lên tệp SO_LIEU.C
2) Bổ sung số liệu bán hàng (ít nhất 2 mặt hàng) vào cuối tệp SO_LIEU.C
3) Hiện nội dung tệp lên màn hình theo dạng
SO LIEU BAN HANG
STT Ten Hang
Don gia
So luong
1
Sach
5
100
2
But
2

300
Tong tien

Thanh tien
500
600
1100

Hàm main() hiển thị menu để chọn các chức năng bằng cách nhập số tương ứng như sau (
1. Nhap so lieu ban hang len tep
2. Ghi bo sung so lieu ban hang vao cuoi tep SO_LIEU.C
3. Hien thi noi dung tep SO_LIEU.C
4. Ket thuc
Chức năng nào được chọn sẽ gọi thực hiện chương trình con tương ứng.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
typedef struct{
char ten[30];
int dongia;
int soluong;
int thanhtien;
}banhang;
banhang hang;
FILE *p;
long size=sizeof(banhang);
void taotep(int *s)
{
int i=1;

p=fopen("banhang.c","wb");
system("cls");


while(1)
{
printf("nhap vao ten hang thu %d(enter ket thuc): ",i++);
fflush(stdin);
gets(hang.ten);
if(hang.ten[0]=='\0') break;
else
{
printf("nhap vao don gia: ");
scanf("%d",&hang.dongia);
printf("nhap vao so luong: ");
scanf("%d",&hang.soluong);
hang.thanhtien=hang.dongia*hang.soluong;
fwrite(&hang,size,1,p); (*s)
+=hang.thanhtien;
}
}
fclose(p);
fflush(p);
}
void intep(int s)
{
int i=1;
system("cls");
p=fopen("banhang.c","rb");
if(p==NULL)

{
printf("tep khong ton tai.");
getch();
exit(1);
}
printf("\t\t\tSO LIEU BAN HANG\n");
printf("%5s %15s %10s %10s %10s\n","STT","ten hang","don gia","so luong","thanh tien");
while(fread(&hang,size,1,p)>0)


printf("%5d
%15s
%10d\n",i++,hang.ten,hang.dongia,hang.soluong,hang.thanhtien);

%10d

%10d

printf("\t\t\t\tthanh tien: %d\n",s);
fclose(p);
fflush(p);
getch();
}
int main()
{
char ch='j';
int s=0;
do
{
system("cls");

printf("chon chuc nang de thuc hien(esc ket thuc): ");
printf("\n=========================================\n");
printf("1: tao tep\n");
printf("2: in tep\n");
ch=getche();
switch(ch)
{
case '1': taotep(&s);break;
case '2': intep(s);break;
case '3': break;
}
}while(ch!=27);
getch();
return 0;
}

Câu 13: Viết chương trình đổi một số thập phân n>=0 nhập vào từ bàn phím sang các cơ số 2, 8, 16
bằng cách dùng cấu trúc dữ liệu STACK. Chương trình được tổ chức thành các chương trình con sau:
1) Hàm push(): đẩy một phần tử vào ngăn xếp
2) Hàm pop(): loại bỏ 1 phần tử khỏi ngăn xếp
3) Hàm chuyen co so(): đổi một số thập phân n>=0 sang hệ cơ số bất kì


4) Hàm hienketqua(): hiển thị kết quả ra màn hình
Hàm main() hiển thị menu để chọn các chức năng bằng cách nhập số tương ứng như sau
1. Chuyen mot so nguyen dương sang he 2
2. Chuyen mot so nguyen dương sang he 8
3. Chuyen mot so nguyen dương sang he 16
4. Ket thuc
Chức năng nào được chọn sẽ gọi chương trình con truyền tham số tương ứng.

#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int so_du;
struct node *tiep;
} p_node;
p_node *top, *p;
void push(int n)
{
p=(p_node*)malloc(sizeof(p_node))
; p->so_du=n;
p->tiep=top;
top=p;
}
void chuyen_co_so(int so, int co_so)
{
top=NULL;
while (so!=0)
{
push(so%co_so);
so=so/co_so;
}
}
void pop(int *m)
{
p=top;
*m=p->so_du;



top=top->tiep;
free(p);
}
void hien_ket_qua(int so, int co_so)
{
int n;
printf("\n so %d duoc doi sang co so %d la: ",so, co_so);
while (top!=NULL)
{
pop(&n);
if(n<10)
printf("%d",n);
else printf("\n%c",n+55);
}
}
main()
{
int a,n;
printf("Nhap so can chuyen doi: \n");
scanf("%d",&n);
printf("Nhap co so: \n");
scanf("%d",&a);
chuyen_co_so(n,a);
hien_ket_qua(n,a);
}
Câu 14: Viết chương trình nhập vào hai ma trận thực Anxp và Bpxm , sau đó tính ma trận tích Cnxm = Anxp
× Bpxm. Chương trình được tổ chức thành các chương trình con sau:
1) Nhập 1 ma trận
2) Tính tích 2 ma trận
3) Hiển thị 1 ma trận lên màn hình

Hàm main() hiển thị menu để chọn các chức năng bằng cách nhập số tương ứng như sau
1. Nhap 2 ma tran
2. Tinh tich 2 ma tran
3. Hien thi 3 ma tran
4. Ket thuc


Chức năng nào được chọn sẽ gọi thực hiện chương trình con tương ứng.
#include <stdio.h>
#include<conio.h>
#include <stdlib.h>
void nhap_mt(float a[][50],int m,int n,char ten)
{
int i,j;
printf("Nhap ma tran %c:\n",ten);
for(i=0;ifor(j=0;j{
printf("a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);
}
}
void in_mt(float a[][50],int m,int n,char ten)
{
int i,j;
printf("\nIn ma tran %c:",ten);
for(i=0;i{
printf("\n");
for(j=0;j

printf("%.2f\t",a[i][j]);
}

}
void tich_2mt(float a[][50],float b[][50],float c[][50],int m,int n,int p)
{
int i,j,k;
for(i=0;ifor(j=0;j{
c[i][j]=0;


for(k=0;k[j]+=a[i][k]*b[k][j];
}
}
int main()
{
float a[50][50],b[50][50],c[50][50];
int m,n,p;
char chon;
printf("Nhap vao gia tri cho ba chi so m,n,p: ");
scanf("%d%d%d",&m,&n,&p);
printf("\nCHON CHUC NANG CAN THUC HIEN:\n");
printf("1. Nhap 2 ma tran\n");
printf("2. Tinh ma tran tich\n");
printf("3. In 3 ma tran\n");
printf("4. Ket thuc\n");
do{

chon=getch();
switch(chon)
{
case '1':
printf("\n");
nhap_mt(a,m,n,'A');
nhap_mt(b,n,p,'B');
break;
case '2':
tich_2mt(a,b,c,m,n,p);
break;
case '3':
in_mt(a,m,n,'A');
in_mt(b,n,p,'B');
in_mt(c,m,p,'C');
}
}while(chon!='4');


return 0;
}
Câu 15: Viết chương trình cộng hai ma trận C nxm = Anxm + Bnxm . Trong đó dữ liệu về n, m và hai ma
trận A, B được lưu trữ trên tệp ‘MA_TRAN.C’ theo dạng sau: Dòng đầu tiên ghi: n m; dòng tiếp theo ghi:
Ma trận A; các dòng tiếp theo là các hàng của ma trận A; dòng tiếp theo ghi: Ma trận B; các dòng tiếp theo là
các hàng của ma trận B. Chương trình được tổ chức thành các công việc và các chương trình con sau:
1) Tạo tệp MA_TRAN.C theo cấu trúc như trên (giống như soạn thảo một chương trình C)
2) Đọc tệp MA_TRAN.C
3) Tính ma trận tổng C rồi ghi vào cuối tệp trên (sử dụng kiểu nhập xuất văn bản)
4) Mở tệp MA_TRAN.C
Hàm main() hiển thị menu để chọn các chức năng bằng cách nhập số tương ứng như sau

1. Doc tep MA_TRAN.C
2. Ghi ma tran C bo sung vao cuoi tep tren
3. Ket thuc
Câu 16: Viết chương trình nhập vào hai dãy số nguyên theo chiều tăng dần. Sau đó ghép các phần tử
của hai dãy này để tạo thành dãy thứ ba vẫn theo chiều tăng dần mà không cần sắp xếp lại. Chương trình
được tổ chức thành các chương trình con sau:
1) Nhập 1 dãy số theo chiều tăng dần
2) Ghép 2 dãy số ( đã được sắp xếp theo chiều tăng dần)
3) In 1 dãy số
Hàm main() hiển thị menu để chọn các chức năng bằng cách nhập số tương ứng như sau
1. Nhap 2 day số nguyen theo chieu tang dan
2. Ghep hai day
3. In 3 day so
4. Ket thuc
Chức năng nào được chọn sẽ gọi thực hiện chương trình con tương ứng.
#include <stdio.h>
#include<conio.h>
#include <stdlib.h>
void nhap_day(int *p,int *n,char ten)
{
int i;
printf("\nNhap so phan tu cua day so %c: ",ten);
scanf("%d",n);
printf("Nhap day so %c theo chieu tang dan:\n",ten);
for(i=0;i<*n;i++)
{


printf("%c[%d]=",ten,i);
scanf("%d",&p[i]);

}
}
void in_day(int *p,int n,char ten)
{
int i;
printf("\nIn day so %c: ",ten);
for(i=0;iprintf("%d ",p[i]);
}
void ghep_2day(int *a,int *b,int *c,int m,int n)
{
int i,j,k;
i=j=k=0;
while(k{
if(i{
if(a[i]c[k++]=a[i++];
else c[k+
+]=b[j++];
}
else
{
if(i==m)
{
for(;jc[k++]=b[j++];
}
else

{
for(;i

c[k++]=a[i++];
}
}
}
}
int main()
{
int a[20],b[20],c[20];
int m,n;
char chon;
printf("CHON CHUC NANG CAN THUC HIEN:\n");
printf("1. Nhap 2 day so\n");
printf("2. Ghep 2 day so\n");
printf("3. In 3 day so\n");
printf("4. Ket thuc\n");
do{
chon=getch();
switch(chon)
{
case '1':
printf("\n");
nhap_day(a,&m,'a');
nhap_day(b,&n,'b');
break;
case '2':
ghep_2day(a,b,c,m,n);

break;
case '3':
in_day(a,m,'a');
in_day(b,n,'b');
in_day(c,m+n,'c');
}
}while(chon!='4');
return 0;


}
Câu 17: Viết chương trình nhập vào các hệ số của hai đa thức: P=anxn + an-1xn-1 + . . . + a1x + a0 ;
Q=bmxm + bm-1xm-1 + . . . + b1x + b0 , nhập giá trị x; tính hệ số của đa thức tổng T = P + Q; rồi in ra hệ số của
ba đa thức, in ra giá trị của ba đa thức. Chương trình được tổ chức thành các chương trình con sau:
1) Nhập hệ số của 1 đa thức
2) In hệ số của 1 đa thức
3) Tính giá trị của 1 đa thức và in ra màn hình
4) Tính hệ số của đa thức tổng (
Hàm main() hiển thị menu để chọn các chức năng bằng cách nhập số tương ứng như sau
1. Nhap he so cua 2 da thuc P, Q
2. Tinh he so cua da thuc T
3. In he so cua 3 da thuc P, Q, T
4. In gia tri cua 3 da thuc P, Q, T
5. Ket thuc
Chức năng nào được chọn sẽ gọi thực hiện chương trình con tương ứng.
#include<stdio.h>
#include<conio.h>
void nhap_da_thuc(float a[],int *n,char ten)
{
int i;

printf("Nhap so phan tu cua da thuc %c: ",ten);
scanf("%d",n);
printf("Nhap cac he so cua da thuc:\n");
for(i=0;i<*n;i++)
{
printf("%c[%d]=",ten,i);
scanf("%f",&a[i]);
}
}
void tinh_tong_2dt(float a[],float b[],float c[],int n,int m)
{
int i,j,k,min;
i=j=k=0;
min=nfor(i=0;i<=min;i++)
c[i]=a[i]+b[i];


×