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

dapan bai tap ontap d15CNTT7 8

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 (163.64 KB, 39 trang )

PHẦN MẢNG
Bài tap 1
Câu 1 :Hãy giải thích từng dịng lệnh trong chương trình dưới đây:
# include "stdio.h"
# include "stdlib.h"
void nhapmang(int *a,int n){
int *p;// Khai báo một con trỏ p;
for (p=a;pphần tử đầu tới phần tử cuối danh sách
scanf("%d",p); //đọc giá trị từ bàn phím cho ơ nhớ con trỏ p đang trỏ.
}
main(){
int *a; int n; //khai báo con trỏ a và biến n kiểu số nguyên
printf("nhap so phan tu mang:"); // hiển thị ra màn hình “nhap so phan tu mang”
scanf("%d",&n);//đọc giá trị từ bàn phím là một số nguyên đưa vào địa chỉ của bien n;
a=(int *)malloc(n*sizeof(int)); // cấp phát bộ nhớ động n ô nhớ , mỗi ô nhớ có kích thước 4 byte
để chứa giá trị là số nguyên và cho con trỏ a trỏ vào.
//a=(int *)calloc(n,sizeof(int));
//a=new int[n];
printf("\n Nhap tung phan tu \n");
nhapmang(a,n);// gọi hàm nhập
printf("\n IN MANG \n");
inmang(a,n);// gọi hàm in mảng
}
Câu 2 :Viết thêm hàm inmang(a,n) để in mảng ra màn hình.
Câu 3 :Viết thêm hàm nguyenTo để hiển thị các số nguyên tố có trong mảng.
# include "stdio.h"
# include "stdlib.h"
#include <conio.h>
void nhapmang(int *a,int n)
{ int *p;


for (p=a;pscanf("%d",p);//doc gia tri tu ban phim so nguyen dua vao dia chi cua con tro
p
}
void inmang(int *a,int n)
{ int *p;
for(p=a;pprintf("%5d",*p);
}
void sont(int *a,int n)


{ int *p; int dem;
for(p=a;p{ dem=0;
for(int i=1;i<=*p;i++)
if(*p%i==0) dem++;
if(dem==2)
printf("%5d",*p);
}
}
main()
{
int *a;//khai bao con tro a tro vao o nho kieu so nguyen
int n; // khai bao bien n
printf("nhap so phan tu mang:"); //hien thi ra man hinh
scanf("%d",&n);//doc tu ban phim so nguyen vao dia chi cua bien n
a=(int *)malloc(n*sizeof(int));//cap phat bo nho dong cho n o nho kieu so
nguyen cho con tro a tro vao
//a=(int *)calloc(n,sizeof(int));

//a=new int[n];
printf("Nhap tung phan tu \n");
nhapmang(a,n);// goi ham nhap
printf("\nIN MANG \n");
inmang(a,n);//goi ham in mang
printf("\ncac so nguyen to la:\n");
sont(a,n);
getch();
}

Bai tap 2
Câu 1 : Hãy giải thích từng dịng lệnh trong chương trình dưới đây:
# include "stdio.h"
#include "stdlib.h"
void nhapmang(int *a,int n){
int i;
for (i=0;iscanf("%d",a+i); // đọc giá trị từ bàn phím là một số nguyên đưa vào địa chỉ của
phần tử thứ i
}
main(){
int *a,n;// khai báo con trỏ a và biến n;
printf("nhap so phan tu mang:");// hiển thị ra màn hình “nhap so phan tu mang”
scanf("%d",&n);// đọc giá trị từ bàn phím là một số nguyên đưa vào địa chỉ của
bien n;
a=(int *)calloc(n,sizeof(int));// cấp phát bộ nhớ động n ô nhớ , mỗi ơ nhớ có kích thước 4
byte để chứa giá trị là số nguyên và cho con trỏ a trỏ vào.


printf("\n Nhap tung phan tu \n");

nhapmang(a,n);// gọi hàm nhập mảng
printf("\n IN MANG \n");
inmang(a,n);// gọi hàm in mảng.
}
Câu 2 : Viết thêm hàm inmang(a,n) để in mảng ra màn hình.
Câu 3 : Nhập x, xố các phần tử có giá trị bằng x có trong mảng. Gọi thực hiện hàm trong hàm
main().
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
void nhapmang(int *a,int n){
int i;
for (i=0;iscanf("%d",a+i);
}
void inmang(int *a, int n)
{ for (int i=0;iprintf("%5d",*(a+i));
}
int xoapt(int *a,int &n,int x)
{ int dem=0;
for (int i=0;iif (*(a+i) == x)
{dem++;}
int dem1=dem;
do
{
for (int i=0;iif (*(a+i) == x)
{ for (int j=i; j

a[j]= a[j+1];
n--;
dem--;
}
}while (dem != 0 );
printf("dem= %d \n",dem1);
return dem1;
}
main(){
int *a,n;
printf("nhap so phan tu mang:");
scanf("%d",&n);
a=(int *)calloc(n,sizeof(int));
free(a);
printf("\n Nhap tung phan tu \n");
nhapmang(a,n);


printf("\n IN MANG \n");
inmang(a,n);
int x;
printf("\n Nhap vao phan tu can xoa: ");scanf("%d",&x);
if (xoapt(a,n,x) == 0)
{ printf("\n Khong co phan tu x trong mang");
} else inmang(a,n);
}

Bài tap 3
Câu 1 : Hãy giải thích từng dịng lệnh trong chương trình dưới đây:
# include "stdio.h"

#include "stdlib.h"
void nhapmang(int *a,int n){
int i;
for (i=0;iscanf("%d",a+i);
}
main(){
int *a,n,i;
printf("nhap so phan tu mang:");
scanf("%d",&n);
a=(int *)malloc(n*sizeof(int));
printf("\n Nhap tung phan tu \n");
nhapmang(a,n);
}
Câu 2 : Nhập một số x từ bàn phím trong hàm main(), viết hàm kiểm tra x có trong mảng khơng.
Câu 3 : Ghi vào tệp D:/daysochan.txt những phần tử chẵn của mảng.
Chương trình chính gọi thực hiện các hàm trên
Câu 4: Viết thêm hàm Đếm các số dương có trong mảng. Sau đó đưa kết quả ra màn hình ở
hàm main().
Câu 5: Viết hàm tên trungBinhCong để tính trung bình cộng các số âm trong mảng.
Cau 6: Viết hàm Sắp xếp mảng theo giá trị tăng dần(hoặc giảm dần).
Câu 7: Viết hàm kiểm tra trong dãy có hai số dương bằng nhau mà cạnh nhau hay không
Câu 8: Viết hàm tính trung bình cộng các phần tử trong đoạn x và y. Với x và y nhập từ bàn
phím trong hàm main().
Câu 9: Nhập một số x từ bàn phím trong hàm main(), viết hàm kiểm tra x có trong mảng không.
Câu 10: Ghi vào tệp D:/data.txt những phần tử nhỏ hơn 10 trong mảng.
Câu 11: Viết hàm Kiểm tra trong dãy có hai số âm bằng nhau mà cạnh nhau hay khơng. Đưa
thơng báo ra màn hình trong hàm main().



Câu 12: Nhập một số x từ bàn phím từ hàm main(), Viết hàm đếm các giá trị trong mảng nhỏ hơn
x.
Câu 13: Ghi vào tệp mangthuc.txt những phần tử dương của mảng. Đọc dữ liệu từ tệp ra màn
hình.
Câu 14: Tìm giá trị lớn nhất trong mảng
Câu 15: Tính tổng các phần tử âm và lẻ trong mảng
Cach 1:
#include "stdio.h"
#include "stdlib.h"
#include <conio.h>
void nhapmang(int *a,int n){
int *p;// khai bao mot con tro p kieu so nguyen
for (p=a;pscanf("%d",p);// doc so nguyen tu ban phim vao o nho con tro p dang tro
}
void inmang(int *a,int n)
{ int *p;
for(p=a;pprintf("%5d",*p);// hien thi gia tri o nho con tro ma p dang tro
}
int dem_soduong(int *a,int n)
{ int *p; int dem=0;
for(p=a;pif(*p>0) dem++;
return dem;
}
float tbc_soam(int *a,int n)
{ int dem=0; float tong=0;
int *p;
for(p=a;p

if(*p<0)
{ tong=tong+*p;
dem++;
}
return tong/dem;
}


void sapxep_tang(int *a,int n)
{ int tg;
for(int i=0;ifor(int j=i+1;jif(a[i]>a[j])
{ tg=a[i];
a[i]=a[j];
a[j]=tg;
}
}
/*void sapxep_tang(int *a,int n)
{ int tg; int *p1,*p2;
for(p1=a;p1for(p2=p1+1;p2if(*p1>*p2)
{ tg=*p1;
*p1=*p2;
*p2=tg;
}
}*/
float tbc_xy(int *a,int n,int x,int y)
{ int dem=0; float tong=0; int *p;

for(p=a;pif(*p>=x && *p<=y)
{ tong=tong+*p;
dem++;
}
return tong/dem;
}
main(){
int *a;//khai bao con tro nguyen ( con tro la o nho chua dia chi cua mot o nho chua gia tri)
int n; //khai bao bien n
printf("nhap so phan tu mang:");//in ra man hinh nhap so phan tu mang
scanf("%d",&n);//doc gia tri nguyen tu ban phim vao dia chi cua o nho n


a=(int *)calloc(n,sizeof(int));//cap phat dong mot vung nho gom n phan tu moi phan tu co
kich thuoc 4 byte
printf("\nNhap tung phan tu \n");
nhapmang(a,n);//goi ham nhap mang
printf("IN MANG \n");
inmang(a,n);//goi ham in mang
//printf("\ndem cac so duong la:%d",dem_soduong(a,n));
//printf("\ntrung binh cong cac so am la:%.1f",tbc_soam(a,n));
//sapxep_tang(a,n);
//printf("\ndanh sach sau khi sap xep la:\n");
//
inmang(a,n);
int x,y;
printf("\nnhap x:"); scanf("%d",&x);
printf("\nnhap y:"); scanf("%d",&y);
printf("\ntrung binh cong cac pt trong doan %d -%d la:%.1f",x,y,tbc_xy(a,n,x,y));

getch();
}
Cach 2
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <string.h>
void nhap(int *p,int n)// dinh nghia ham nhap dua con tro p va bien n vao
{ for(int i=0;i{
printf("p[%d]= ",i);//hien thi p[i]=
scanf("%d",p+i);//doc gia tri so nguyen tu ban phim vao dia chi cua phan tu p[i]
}
}
void hienthi(int *p,int n)
{
for(int i=0;i{
printf("%5d",*(p+i));//hien thi gia tri p[i] ra man hinh, moi gia tri cach nhau 5 o
tren man hinh


}
}
void kt_x(int *p,int n,int x)
{
int ktra=0;
for(int i=0;iif(*(p+i)==x)
{

printf("\n co so %d trong mang",x);
ktra=1;
break;//ngat lenh
}
if(ktra==0) printf("\n khong co so %d trong mang",x);
}
int dem_soduong(int *p,int n)
{ int dem=0;
for (int i=0;i{
if(*(p+i)>0)
dem++;
}
return dem;
}
float trungbinhcong(int *p,int n)
{ float tong=0;
int dem=0;
for (int i=0;iif(*(p+i)<0)
{
tong +=*(p+i);
dem++;
}
if(dem!=0) return tong/dem;
else return 0;
}
void sapxep_tang(int *p,int n)



{ int temp;
for(int i=0;ifor(int j=i+1;jif(*(p+i)>*(p+j))
{ temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
void kiemtra_haisobangnhau (int *p , int n)
{
int ktra=0;
for(int i=0;iif(*(p+i)==*(p+i+1)&&*(p+i)>0)
{
printf("\n co hai so duong bang nhau ma canh nhau trong day");
ktra++;
break;
}
if(ktra==0) printf("\n khong co hai so duong bang nhau ma canh nhau trong day");
}
float tinh_tbc(int *p,int n,int x, int y)
{ int dem=0;
float tong=0;
for(int i=0;iif(*(p+i)>=x&&*(p+i)<=y)
{tong+=*(p+i);
dem++;
}
return tong/dem;

}
int main(){
int n;//khai bao bien n kieu so nguyen
int *p;//khai bao con tro p kieu so nguyen
//con tro la o nho chua dia chi cua o nho chua gia tri


printf ("nhap n= "); //hien thi ra man hinh nhap n
scanf("%d",&n);//doc tu ban phim so nguyen vao dia chi bien n
p=(int *)malloc(n*sizeof(int));//cap phat bo nho dong cho n phan tu kieu so nguyen cho
con tro p tro va
nhap(p,n);//goi ham nhap
printf("\nIn mang:\n");
hienthi(p,n);//goi ham hien thi
int x;
/*printf("\nnhap x= "); scanf("%d",&x);
kt_x(p,n,x);*/
//printf("\ncac so duong trong mang la:%d",dem_soduong(p,n));
//printf("\ntrung binh cong cac so am la:%.1f",trungbinhcong(p,n));
//sapxep_tang(p,n);
//printf("\nday so sau khi sap xep tang dan la:\n");
//hienthi(p,n);
//kiemtra_haisobangnhau(p,n);
int y;
printf("\nnhap x= "); scanf("%d",&x);
printf("\nnhap y= "); scanf("%d",&y);
printf("\ntrung binh cong cac so tu %d ->%d la:%.2f",x,y,tinh_tbc(p,n,x,y));
getch();
}
CÂU 10- GHI FILE

Viết chương trình dưới dạng hàm thực hiện các chức năng sau:
1. Nhập một mảng số thực một chiều gồm n phần tử vào bộ nhớ động.
2. Hiển thị dãy vừa nhập ra màn hình trên một hàng.
5. Ghi vào tệp D:/data.txt những phần tử nhỏ hơn 10 trong mảng.
Chương trình chính gọi thực hiện các hàm trên
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <stdlib.h>
void nhap(float *a,int n)
{ float *p;
for(p=a;pscanf("%f",p);


}
void hienthi(float *a,int n)
{ float *p;
for(p=a;pprintf("%5.1f",*p);
}
void ghitep(float *a,int n)
{ FILE *f;
f=fopen("D:/FILE/ghitep.txt","wt");
if(f==NULL)
{ printf("tao file bi loi"); exit(1);
}
float *p;
for(p=a;pif((*p)<10) fprintf(f,"%5.1f",*p);

fclose(f);
}
int main()
{ float *a; int n;
printf("nhap so luong phan tu:"); scanf("%d",&n);
a=(float*)malloc(n*sizeof(float));
nhap(a,n);
hienthi(a,n);
ghitep(a,n);
free(a);
getch();
}

PHẦN MA TRẬN
Bai tap 1
Câu 1 :Hãy giải thích từng dịng lệnh trong chương trình dưới đây:
#include "stdio.h"
void nhap(float **a,int m, int n){
int i,j;
float x;
for (i=0;ifor (j=0;j

{
printf("a[%d][%d]=",i,j);//
scanf("%f",&x);
a[i][j]=x;
}
}

main(){
int n,m,i,j;
printf("Nhap so hang : ");
scanf("%d",&m);
printf("Nhap so cot:");
scanf("%d",&n);
float **a=new float *[m];
for (i=0;ia[i]=new float [n];
printf("\n Nhap tung phan tu cho ma tran \n");
nhap(a,m,n);
printf("\n In ma tran \n");
xuat(a,m,n);
}
Câu 2: Viết hàm tìm giá trị nhỏ nhất trên hàng đầu tiên của ma trận.
Cau 4: Viet ham tim gia tri lon nhat tren cot dau tien cua ma tran
Câu 3: Ghi vào tệp “D:/matran.txt” các phần tử của ma trận theo dạng bảng
#include "stdio.h"
void nhap(float **a,int m, int n)
{
float x;//khai bao bien x kieu so thuc
for (int i=0;ifor (int j=0;j{
printf("a[%d][%d]=",i,j);// hien thi ra man hinh a[i][j]
scanf("%f",&x);//doc gia tri tu ban phim so thuc cho bien x
a[i][j]=x;//gan x cho phan tu a[i][j]
}
}
void xuat(float **a,int m,int n)

{ for (int i=0;i

{ for(int j=0;jprintf("%5.1f",a[i][j]);
printf("\n");
}
}
float min_hang0(float **a,int m,int n)
{ float min =a[0][0];
for(int j=1;jif(a[0][j]return min;
}
float max_cot0(float **a,int m,int n)
{ float max =a[0][0];
for(int i=1;iif(a[i][0]>max) max=a[i][0];
return max;
}
main(){
int n,m;// khai bao 2 bien kieu so nguyen m va n
printf("Nhap so hang : ");//hien thi ra man hinh nhap so hang
scanf("%d",&m);//doc tu ban phim so nguyen vao bien m
printf("Nhap so cot:");
scanf("%d",&n);
float **a=new float *[m];//cap phat dong m con tro de chua m mang so thuc cho
con tro cap 2 a tro vao
//con tro cap hai de chua dia chi cua cac con tro cap 1
//con tro cap 1 chua dia chi cua o nho chua gia tri

for (int i=0;ia[i]=new float[n];//cap phat dong n phan tu kieu so thuc cho con tro a[i]
tro vao
printf("Nhap tung phan tu cho ma tran \n");
nhap(a,m,n);//goi ham nhap
printf("In ma tran \n");
xuat(a,m,n); //goi ham xuat
//printf("\ngia tri nho nhat tren hang dau tien la:%.1f",min_hang0(a,m,n));
printf("\ngia tri lon nhat tren cot dau tien la:%.1f",max_cot0(a,m,n));


}

Bai tap 2
Câu 1 :Hãy giải thích từng dịng lệnh trong chương trình dưới đây:
#include "stdio.h"
void nhap(float **a,int m, int n){
int i,j;
float x;
for (i=0;ifor (j=0;j{
printf("a[%d][%d]=",i,j);
scanf("%f",&x);
a[i][j]=x;
}
}
main(){
int n,m,i,j;
printf("Nhap so hang : ");

scanf("%d",&m);
printf("Nhap so cot:");
scanf("%d",&n);
float **a=new float *[m];
for (i=0;ia[i]=new float [n];
printf("\n Nhap tung phan tu cho ma tran \n");
nhap(a,m,n);
printf("\n In ma tran \n");
xuat(a,m,n);
}
Câu 2: Viết hàm tìm giá trị nhỏ nhất trên hàng đầu tiên của ma trận.
Câu 3: Ghi vào tệp “D:/matran.txt” các phần tử của ma trận theo dạng bảng
Câu 4: Viết hàm in ra màn hình giá trị phần tử trên hàng cuối cùng của ma trận.
Câu 5: Viết thêm hàm tính tổng các giá trị trên cột cuối cùng của ma trận.
Câu 6: Tính trung bình cộng các phần tử lẻ của ma trận
Câu 7: Tìm giá trị lớn nhất trên cột 0 của ma trận. In giá trị lớn nhất đó ra màn hình.
Câu 8: Tìm giá trị lớn nhất trên hàng 0 của ma trận. In giá trị lớn nhất đó ra màn hình.


Câu 9. Tính tổng các phần tử của ma trận. In kết quả tính được ra màn hình.
Câu 10: Tìm giá trị nhỏ nhất trên cột 1 của ma trận. In giá trị nhỏ nhất đó ra màn hình.
Câu 11: Đếm các số dương trong ma trận
Câu 12: Đếm các số chẵn trong ma trận.
Câu 13: Sắp xếp theo chiều giảm dần các giá trị trên cột 0 của ma trận.
Câu 14: Tính tổng các phần tử trên đường chéo chính của ma trận. In kết quả tính được ra màn
hình.
Câu 15: Ghi vào tệp matran.txt các phần tử dương trong ma trận
Câu 16: Tính trung bình cộng các phần tử của ma trận. In kết quả tính được ra màn hình.
Câu 15: Ghi vào tệp matran.txt các phần tử dương trong ma trận

Câu 16: Tính trung bình cộng các phần tử của ma trận. In kết quả tính được ra màn hình.
Câu 17: Nhập vào một số x, kiểm tra x có trong ma trận khơng. Nếu có in ra vị trí hàng và cột
của ma trận.
Câu 18: Hiển thị ra màn hình vị trí các phần tử có giá trị bằng 0
Câu 19: Nhập h từ bàn phím. Tính trung bình cộng các giá trị trên cột h.
Câu 20: Ghi vào tệp D:/matran.txt hàng cuối cùng của ma trận
Mot so bai phan ma tran
#include "stdio.h"
void nhap(float **a,int m, int n)
{
float x;//khai bao bien x kieu so thuc
for (int i=0;ifor (int j=0;j{
printf("a[%d][%d]=",i,j);// hien thi ra man hinh a[i][j]
scanf("%f",&x);//doc gia tri tu ban phim so thuc cho bien x
a[i][j]=x;//gan x cho phan tu a[i][j]
}
}
void xuat(float **a,int m,int n)
{ for (int i=0;i{ for(int j=0;jprintf("%5.1f",a[i][j]);
printf("\n");
}
}
void ht_hangcuoi(float **a,int m,int n)
{ for(int j=0;jprintf("%5.1f",a[m-1][j]);
}

float tong_cotcuoi(float **a,int m,int n)
{
float tong=0;
for(int i=0;itong=tong+a[i][n-1];
return tong;
}
void sx_giam_hang0(float **a,int m,int n)
{ float tg;
for(int i=0;ifor(int j=i+1;jif(a[i][0]

{ tg=a[i][0];
a[i][0]=a[j][0];
a[j][0]=tg;
}

}
float tong_cc(float **a,int m,int n)
{ float tong=0;
for(int i=0;itong=tong+a[i][i];
return tong;
}
main(){
int n,m;// khai bao 2 bien kieu so nguyen m va n
printf("Nhap so hang : ");//hien thi ra man hinh nhap so hang
scanf("%d",&m);//doc tu ban phim so nguyen vao bien m

printf("Nhap so cot:");
scanf("%d",&n);
float **a=new float *[m];//cap phat dong m con tro de chua m mang so thuc cho con
tro cap 2 a tro vao
//con tro cap hai de chua dia chi cua cac con tro cap 1
//con tro cap 1 chua dia chi cua o nho chua gia tri
for (int i=0;ia[i]=new float[n];//cap phat dong n phan tu kieu so thuc cho con tro a[i] tro
vao
printf("Nhap tung phan tu cho ma tran \n");
nhap(a,m,n);//goi ham nhap
printf("In ma tran \n");
xuat(a,m,n); //goi ham xuat
//printf("\nhien thi cac phan tu hang cuoi la:\n");
//ht_hangcuoi(a,m,n);
//
printf("\ntong cot cuoi la:%.1f",tong_cotcuoi(a,m,n));
// sx_giam_hang0(a,m,n);
//printf("In ma tran sau khi sap xep giam dan la: \n");
//xuat(a,m,n);
printf("\ntong cac phan tu tren duong cheo chinh la:%.1f\n",tong_cc(a,m,n));
}
CÂU 11- MA TRẬN

Viết chương trình dưới dạng hàm thực hiện các chức năng sau:
1. Nhập ma trận gồm mxn phần tử có kiểu thực vào bộ nhớ động.
2. Hiển thị ma trận vừa nhập ra màn hình theo dạng bảng.
3. Đếm các số dương trong ma trận
#include <stdio.h>
#include <conio.h>

#include <malloc.h>
void nhap(float **a,int m,int n)
{ float x;
for(int i=0;ifor(int j=0;j{ printf("a[%d][%d]=",i,j);
scanf("%f",&x);


a[i][j]=x;
}

}
void hienthi(float **a,int m,int n)
{ for(int i=0;i{
for(int j=0;jprintf("\n");
}
}
int dem_soduong(float **a,int m,int n)
{ int dem=0;
for(int i=0;ifor(int j=0;jif(a[i][j]>0) dem++;
return dem;
}
int main()
{ int n,m;
printf("nhap so hang:");scanf("%d",&m);

printf("nhap so cot:"); scanf("%d",&n);
//ma tran la mot day cac mang 1 chieu
//a con tro cap 2 de cap phat m con tro cap 1 kieu so thuc de chua cac hang cua ma tran
float **a=new float *[m];
//cap phat n bo nho cho tung con tro cap 1
for(int i=0;ia[i]=new float[n];
printf("nhap tung phan tu cua ma tran:\n");
nhap(a,m,n);
hienthi(a,m,n);
printf("\n cac so duong trong ma tran la:%d",dem_soduong(a,m,n));
//giai phong tung hang
for (int i=0;i{ free(a[i]);
}
free(a); // giai phong cac con tro cap 1
}

PHẦN CẤU TRUC
Bài tập 1
Câu 1 :Hãy giải thích từng dịng lệnh trong chương trình dưới đây:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct {
char ma[12];
char ten[40];
float hsl;
}nhanvien;
void nhap(nhanvien *a,int n){



nhanvien *p;
for(p=a;p{
printf("Nhap ma nhanvien:");
fflush(stdin); gets(p->ma);
printf("Nhap ten nhanvien:");
fflush(stdin); gets(p->ten);
printf("Nhap he so luong:");
scanf("%f",&p->hsl);
}
}
void xuat(nhanvien *a, int n){
nhanvien *p;
for (p=a;pprintf("\n %15s \t %20s \t %5.3f ",p->ma,p->ten,p->hsl);
}
}
main(){
int n,i;
printf("Nhap so nhan vien n=");
scanf("%d",&n);
nhanvien *a=new nhanvien[n];
printf("Nhap thong tin tung nhan vien \n");
nhap(a,n);
printf("\n In thong tin nhan vien \n");
xuat(a,n);
}
Viết thêm các lệnh cho chương trình trong Câu 1 để:

Câu 2 .Viết hàm hiển thị thông tin nhân viên ra màn hình cùng với lương (lương=hsl*1490).
Câu 3 .Ghi vào tệp D:/nhanvien.txt thơng tin nhân viên có hệ số lương là 4,2. Thơng tin mỗi
nhân viên trên một dịng.
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include <string.h>
#include <stdlib.h>
typedef struct


{ char manv[10];
char hoten[10];
int namsinh;
float hsluong;
}nhanvien;
void nhap(nhanvien*a, int n)
{nhanvien*p;
for (p=a;p{
printf("Nhap ma nhan vien:"); fflush(stdin); gets(p->manv);
printf("Nhap ho ten nhan vien: "); fflush(stdin); gets(p->hoten);
printf("Nhap nam sinh:"); scanf("%d", &(p->namsinh));
printf("Nhap he so luong: "); scanf("%f", &(p->hsluong));
}
}
void hienthi(nhanvien *a, int n)
{nhanvien*p;
for(p=a;pprintf("%s %s %d %5.1f\n",(p->manv),(p->hoten),(p->namsinh),(p->hsluong));

}
void ht_luong(nhanvien *a,int n)
{ nhanvien *p;
for(p=a;pprintf("%s %s %d %5.1f %5.1f \n",(p->manv),(p->manv),(p->namsinh),(p->hsluong),(p>hsluong)*1950);
}
void ht_manv(nhanvien *a, int n)
{
nhanvien*p;
for(p=a;pif(strcmp((p->manv),"nv01")==0)
printf("%s %s %d %5.1f\n",(p->manv),(p->hoten),(p->namsinh),(p->hsluong));
}
void ghifile(nhanvien*nv,int n)
{
FILE *f; nhanvien *p;
f=fopen("D:/file/cautrucnv.txt","wt");
if(f==NULL)
{ printf("loi tao file");
exit(1);
}
fprintf(f,"\nthong tin cac nhan vien co he so luong la 4.2:\n");
for(p=nv;pif(p->hsluong==4)
fprintf(f,"%s %s %d %5.1f\n",(p->manv),(p->hoten),(p->namsinh),(p->hsluong));
fflush(f);


fclose(f);
}

int main(){
nhanvien *a; int n;
printf("Nhap so nhan vien:");
scanf("%d", &n);
a=(nhanvien*)malloc(n*sizeof(nhanvien));
printf("nhap thong tin cho tung nhan vien:\n");
nhap(a,n);
printf("\n in thong tin cua danh sach nhan vien:\n");
hienthi(a,n);
/*printf("\n in thong tin cua danh sach nhan vien cung luong:\n");
ht_luong(a,n);
printf("\n in thong tin cua danh sach nhan vien co ma nhan vien nv01:\n");
ht_manv(a,n);*/
ghifile(a,n);
free(a);
getch();
}

Bài tập 2
Câu 1 :Hãy giải thích từng dịng lệnh trong chương trình dưới đây:
#include "stdio.h"
#include "stdlib.h"
typedef struct{
char ma[11];
char ten[30];
float diem;
} sinhvien;
void nhap(sinhvien *sv, int n)
{
int i;

for (i=0;i{
printf("Nhap ma sv thu %d: ",i);
fflush(stdin); //xoa bo nho dem nhung ki tu dac biet
gets(sv[i].ma);//nhap xau ky tu vao cho mã sv thư i
printf("Nhap ten sv thu %d: ",i);
fflush(stdin);
gets(sv[i].ten);//nhap xau ki tu cho ten sv thu i


printf("Nhap diem cho sv thu %d: ",i);
scanf("%f",&sv[i].diem);
}
}
void xuat(sinhvien *sv, int n){
for (int i=0;iprintf("\n %15s \t %30s \t %6.2f",sv[i].ma,sv[i].ten,sv[i].diem);
}
main(){
int n;// khai bao bien n de nhap so luong sinh vien
printf("so sinh vien:"); // in ra man hinh
scanf("%d",&n); //nhap gia tri tu ban phim dua gia tri vao dia chi cua bien n
sinhvien *sv= new sinhvien[n];//cap phat dong n vung nho de chua thong tin cua
n sinh vien. Cho con tro sv tro vao.
//Sinhvien *sv=(sinhvien*)malloc(n*sizeof(sinhvien));
//Sinhvien *sv=(sinhvien*)calloc(n,sizeof(sinhvien));
puts("Nhap thong tin cho tung cau truc");// hiển thị thơng tin ra màn hình
nhap(sv,n);// gọi hàm nhập đưa con trỏ sv và biến n vào
puts("\n IN DANH SACH SINH VIEN \n");// hiển thị thông tin ra màn hình
xuat(sv,n);

}
Viết thêm các lệnh cho chương trình trong Câu 1 để:
Câu 2 :Viết hàm đưa ra điểm cao nhất trong danh sách sinh viên. In thông tin các sinh viên có
điểm cao nhất trong hàm main().
Câu 3 :Ghi vào tệp “D:/thilai.dat” thơng tin của những sinh viên có điểm > 8.5. Thơng tin mỗi
sinh viên trên một dịng.
#include "stdio.h"
#include <conio.h>
#include <stdlib.h>
typedef struct{
char ma[11];
char ten[30];
float diem;
} sinhvien;
void nhap(sinhvien *sv, int n)


{ int i;
for (i=0;i{ printf("Nhap ma sv thu %d: ",i);
fflush(stdin); gets(sv[i].ma);
printf("Nhap ten sv thu %d: ",i);
fflush(stdin); gets(sv[i].ten);
printf("Nhap diem cho sv thu %d: ",i);
scanf("%f",&sv[i].diem);
}
}
void xuat(sinhvien *sv, int n){
for (int i=0;iprintf("\n %s %s %6.2f",sv[i].ma,sv[i].ten,sv[i].diem);

}
float max_diem(sinhvien *sv,int n)
{ float max=sv[0].diem;
for(int i=1;iif(maxreturn max;
}
void ghifile(sinhvien*sv,int n)
{
FILE *f;
f=fopen("D:/file/cautruc.txt","wt");
if(f==NULL)
{ printf("loi tao file");
exit(1);
}
fprintf(f,"\nthong tin cac sinh vien co diem >8.5 la:\n");
for(int i=0;iif(sv[i].diem>8.5)
fprintf(f,"\n %s %s %6.1f",sv[i].ma,sv[i].ten,sv[i].diem);
fflush(f);
fclose(f);
}
main(){
int n;
printf("so sinh vien:");
scanf("%d",&n);
sinhvien *sv= new sinhvien[n];
puts("Nhap thong tin cho tung cau truc");
nhap(sv,n);
puts("\n IN DANH SACH SINH VIEN \n");

xuat(sv,n);


float max1=max_diem(sv,n);
printf("\ndanh sach sinh vien co diem lon nhat la:\n");
for(int i=0;iif(max1==sv[i].diem)
printf("\n %s \t %s \t %6.2f",sv[i].ma,sv[i].ten,sv[i].diem);
ghifile(sv,n);
getch();
}
Bài tap 3
Câu 1 :Hãy giải thích từng dịng lệnh trong chương trình dưới đây:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct {
char ma[12];
char ten[40];
char nhaxb[40];
int namxb;
}sach;
void nhap(sach *a,int n){
sach *p;
for(p=a;p{
printf("Nhap ma sach:");
fflush(stdin); gets(p->ma);
printf("Nhap ten sach:");
fflush(stdin); gets(p->ten);

printf("Nhap nha xb:");
fflush(stdin); gets(p->nhaxb);
printf("Nhap năm xuât ban: ");
scanf(“%d”,&p->namxb);
}
}
main(){
int n,i;
sach *a;
printf("Nhap so sach n=");


scanf("%d",&n);
printf("Nhap thong tin tung cuon sach \n");
nhap(a,n);
printf("\n In thong tin sach \n");
xuat(a,n);
}
Viết thêm các lệnh cho chương trình trong Câu 1 để:
Câu 2 :Em hãy bổ sung lệnh xin cấp phát bộ nhớ động trong hàm main() cho mảng a gồm n phần
tử. Viết hàm xuat(a,n) để in thông tin của các cuốn sách lên màn hình, thơng tin mỗi cuốn sách
trên một dòng.
Câu 3 : Ghi vào tệp “D:/Sach.txt” thông tin những cuốn sách xuất bản sau năm 2018. Thơng tin
mỗi cuốn sách trên một dịng.
Bài giảng
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include <conio.h>
typedef struct {

char ma[12];//khai bao ma sach toi da 12 ki tu
char ten[40];//khai bao ten sach toi da 40 ki tu
char nhaxb[40];//khai bao nha xuat ban toi da 40
int namxb;//khai bao nam xuat ban kieu so nguyen
}sach; //khai bao cau truc sach
void nhap(sach *a,int n){
sach *p;//khai bao con tro p tro vao o nho kieu sach
for(p=a;p{ printf("Nhap ma sach:");//in ra man hinh nhap ma sach
fflush(stdin);//xoa bo nho dem cac ki tu dac biet
gets(p->ma);//doc xau ki tu tu ban phim cho ma sach
printf("Nhap ten sach:");//in ra man hinh nhap ten sach
fflush(stdin);//xoa bo nho dem cac ki tu dac biet
gets(p->ten);//doc xau ki tu tu ban phim cho ten sach
printf("Nhap nha xb:");
fflush(stdin); gets(p->nhaxb);
printf("Nhap nam xuat ban: ");
scanf("%d",&p->namxb);//doc mot so nguyen vao dia chi cua bien nam xuat ban
}
}
void xuat(sach *a,int n)
{ sach *p;
for(p=a;pprintf("%s %s %s %d\n",p->ma,p->ten,p->nhaxb,p->namxb);
}


void ghifile(sach *a,int n)
{ FILE *f;
f=fopen("D:/FILE/ghisach.txt","wt");

if(f==NULL)
{ printf("tao file bi loi"); exit(1);
}
sach *p;
for(p=a;pif(p->namxb>2018)
fprintf(f,"%s %s %s %d\n",p->ma,p->ten,p->nhaxb,p->namxb);
fclose(f);
}
main(){
int n,i;
sach *a;//khai bao con tro a tro o nho sach
printf("Nhap so sach n=");
scanf("%d",&n);//doc mot so nguyen tu ban phim vao dia chi cua bien n
a=(sach*)malloc(n*sizeof(sach));//cap phat dong 1 vung nho de chua n quyen sach
printf("Nhap thong tin tung cuon sach \n");
nhap(a,n);//goi ham nhap
printf("\n In thong tin sach \n");
xuat(a,n);//goi ham xuat
ghifile(a,n);
getch();
}Bai số 4
Câu 1 :Hãy giải thích từng dịng lệnh trong chương trình dưới đây:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
struct maytinh{
char ma[12];
char ten[40];
int namsx[40];

float gianhap;
};
void nhap(maytinh *a,int n){
maytinh *p;
for(p=a;p{
printf("Nhap ma :");
fflush(stdin); gets(p->ma);


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×