BỘ CÔNG THƯƠNGTRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HỒ CHÍ MINHLAB REPORT EXERCISESKỸ THUẬT LẬP TRÌNH.
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HỒ CHÍ MINH
LAB REPORT EXERCISES
KỸ THUẬT LẬP TRÌNH
Trang 2NỘI DUNG 1: CON TRỎ Câu 1: Chương trình thực hiện các xử lý cơ bản trên con trỏ. Code:
#include<stdio.h>
int main()
{
int *a;
int z;
z=10;
printf("How works pointer and how to handle pointers:\n");
printf("\nValue of z = %d",z);
printf("\nAddress of z = %p\n",&z);
a=&z;
printf("\nNow a is assigned with the address of z:");
printf("\nAddress of pointer a = %p", a);
printf("\ncontent of pointer a = %d\n", *a);
z=30;
printf("\nNow, The value of z assigned to 30");
printf("\nAddress of pointer a = %p", a);
printf("\ncontent of pointer a = %d\n", *a);
*a=5;
printf("\nNow, pointer variable a is assigned the value : 5");
printf("\nAddress z = %p", &z);
printf("\nValue of z = %d\n", z);
return 0;
}
Kết quả:
~ 2 ~
Trang 3Câu 2: Dùng con trỏ, viết chương trình để thực hiện các phép tính số học. Code:
#include<stdio.h>
int main()
{
float a,b;
float *x,*y;
char *k,kt;
k=&kt;
printf("Nhap A va B: ");
x=&a;
y=&b;
scanf("%f%f",x,y);
getchar();
printf("\nNhap dau: ");
scanf(" %c",k);
getchar();
switch(*k){
case '+':
printf("%f %c %f = %f",*x,*k,*y,*x+*y);
break;
case '-':
printf("%f %c %f = %f",*x,*k,*y,*x-*y);
break;
case '*':
printf("%f X %f = %f",*x,*y,*x**y);
break;
case '/':
printf("%f %c %f = %f",*x,*k,*y,*x/(*y));
break;
default:
printf("\nnhap sai!");
break;
}
}
Kết quả:
~ 3 ~
Trang 4Câu 3: Dùng con trỏ, viết chương trình để tìm giá trị lớn nhất giữa số.
Code:
#include<stdio.h>
int main()
{
float a,b;
float *max;
printf("Nhap a va b: ");
scanf("%f%f",&a,&b);
if(a>b)
{
max=&a;
}
else
{
max=&b;
}
printf("\nSo max cua a va b la: %f",*max);
}
Kết quả:
Câu 4: Dùng con trỏ, viết hàm hoán đổi 2 số(swap).
Code:
#include<stdio.h>
void swap(int *x,int *y)
{
int t=*x;
*x=*y;
*y=t;
}
int main()
{
int a,b;
int *x,*y;
printf("Nhap a va b: ");
scanf("%d %d",&a,&b);
Too long to read on your phone? Save to
read later on your computer
Save to a Studylist
Trang 5printf("\nTRUOC khi hoan doi: %d %d ",a,b); swap(&a,&b);
printf("\nSAU khi hoan doi: %d %d ",a,b);
}
Kết quả:
Câu 5: Viết chương trình thực hiện các chức năng sau: Code:
#include<stdio.h>
void input(int *a,int &n);
void output(int *a,int &n);
void sochan(int *a,int &n);
int max(int *a,int &n)
{
int max=a[0];
for(int i=1;i<n;i++)
{
if(a[i]>max)
{
max=a[i];
}
}
return max;
}
int main()
{
int a[100];
int n;
input(a,n);
output(a,n);
sochan(a,n);
int m;
m=max(a,n);
printf("\nGia tri MAX: %d",m);
}
void input(int *a,int &n)
{
printf("Nhap phan tu n: ");
scanf("%d",&n);
for(int i=0;i<n;i++)
~ 5 ~
Trang 6printf("a[%d]= ",i);
scanf("%d",a+i);
}
}
void output(int *a,int &n){
printf("\nXuat mang: ");
for(int i=0;i<n;i++)
{
printf(" %d",*(a+i));
}
}
void sochan(int *a,int &n)
{
printf("\nSo chan trong mang: ");
for(int i=0;i<n;i++)
{
if(a[i]%2==0){
printf(" %d",*(a+i));
}
}
}
Kết quả:
Câu 6:Viết chương trình sử dụng vùng bộ nhớ cấp phát động (HEAP SEGMENT) cho phép
người dùng nhập 2 số thực.Tính tổng, hiệu, tích, thương của chúng.
Code:
#include<stdio.h>
#include<stdlib.h>
~ 6 ~
Trang 7int main()
{
float *a,*b;
a=(float*)malloc(sizeof(float));
b=(float*)malloc(sizeof(float));
printf("Nhap a va b: ");
scanf("%f%f",a,b);
getchar();
char *c;
c=(char*)malloc(sizeof(char));
printf("\nNhap dau: ");
scanf("%c",c);
getchar();
switch(*c)
{
case '+':
printf("%f + %f = %f",*a,*b,*a+*b); break;
case '-':
printf("%f - %f = %f",*a,*b,*a-*b); break;
case '*':
printf("%f X %f = %f",*a,*b,*a**b); break;
case '/':
printf("%f %: %f = %f",*a,*b,*a/(*b)); break;
default:
printf("\nKhong hop le!"); break;
}
free(a);
free(b);
free(c);
}
Kết quả:
~ 7 ~
Trang 8: Viết chương trình sử dụng bộ nhớ cấp phát động cho phép người dùng nhập hai 2 ký
Câu 7
tự, sau đó chương trình in ra các ký tự giữa 2 kí tự này theo thứ tự tăng dần.
Code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *pc1, *pc2;
pc1=(char *) malloc(sizeof(char));
pc2=(char *) malloc(sizeof(char));
if (pc1==NULL || pc2==NULL)
{
printf("Khong du bo nho\n");
return 1;
}
printf("Nhap vao hai ky tu: ");
scanf("%c %c", pc1, pc2);
if (*pc1>*pc2)
~ 8 ~
Trang 9char temp=*pc1;
*pc1=*pc2;
*pc2=temp;
}
char c;
for (c=*pc1;c<=*pc2;c++)
{
printf("%c %4d %4o %4X\n", c, c, c, c);
}
free(pc1);
free(pc2);
return 0;
}
Kết quả:
Câu 8: Viết chương trình thực hiện các thao tác mảng 1 chiều,sử dụng kỹ thuật cấp phát động
(HEAP)
Code:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void nhap(float *a,int *n)
{
for(int i=0;i<*n;i++)
{
printf("a[%d]= ",i);
scanf("%f",a+i);
}
}
void xuat(float *a,int *n)
{
~ 9 ~
Trang 10for(int i=0;i<*n;i++)
{
printf(" %f",*(a+i));
}
}
float trungbinh(float *a,int *n)
{
float s=0;
for(int i=0;i<*n;i++)
{
s+=a[i];
}
return s/(*n);
}
float tongbinhphuong(float *a,int *n)
{
float s=0;
for(int i=0;i<*n;i++)
{
s+=pow(*(a+i),2);
}
return s;
}
void them(float *a,int *n,int &p,float &x){
for(int i=*n;i>p;i ){
a[i]=a[i-1];
}
a[p]=x;
*n=*n+1;
}
void xoa(float *a,int *n,int &p){
for(int i=p;i<*n-1;i++){
a[i]=a[i+1];
}
*n=*n-1;
}
float timkiem(float *a,int *n,float &tim)
{
int k=0;
for(int i=0;i<*n;i++)
{
if(tim==*(a+i))
{
k=1;
break;
}
else
{
~ 10 ~
Trang 11}
}
return k;
}
void tang(float *x,float *y)
{
int t=*x;
*x=*y;
*y=t;
}
int main()
{
//Cau a) Nhap mang so THUC//
float *a;
a=(float*)malloc(sizeof(float));
int *n;
n=(int*)malloc(sizeof(int));
printf("Nhap phan tu mang: ");
scanf("%d",n);
nhap(a,n);
//Cau b) Xuat cac pha tu mang //
xuat(a,n);
//Cau c) Tinh trung binh mang//
float m=trungbinh(a,n);
printf("\n\nTrung binh mang: %f",m);
//Cau d) Tinh tong binh phuong//
float ss=tongbinhphuong(a,n);
printf("\nTong binh phuong: ss= %f",ss); //cau e) Tinh phuong sai//
float d2;
d2=(ss/(*n))-pow(m,2);
printf("\nPhuong sai: d^2= %f",d2);
//Cau f) Tinh do lech chuan//
float d;
d=sqrt(d2);
printf("\nDo lech chuan: d= %f ",d);
//Cau g) Them gia tri x vao vi tri p//
float x;
int p;
printf("\n\nNhap so can them: ");
scanf("%f",&x);
printf("Nhap vi tri can them: ");
scanf("%d",&p);
them(a,n,p,x);
xuat(a,n);
//Cau h) Xoa phan tu tai vi tri p//
printf("\n\nNhap vi tri can xoa: ");
scanf("%d",&p);
~ 11 ~
Trang 12xuat(a,n);
printf("\n");
//Cau i) Tim kiem vi tri x trong mang//
float tim;
printf("\nNhap so can tim: ");
scanf("%f",&tim);
if(timkiem(a,n,tim)){
printf("TIM THAY!");
}
else
{
printf("KHONG TIM THAY!");
}
//Cau j) Sap xep tang giam//
for(int i=0;i<*n;i++){
for(int j=i+1;j<*n;j++)
{
if(a[i]>a[j])
{
tang(a+i,a+j);
}
}
}
printf("\n\nSap xep TANG: ");
xuat(a,n);
for(int i=0;i<*n;i++){
for(int j=i+1;j<*n;j++)
{
if(a[i]<a[j])
{
tang(a+i,a+j);
}
}
}
printf("\nSap xep GIAM: ");
xuat(a,n);
free(a);
free(n);
}
Kết quả:
~ 12 ~