Tải bản đầy đủ (.doc) (65 trang)

Hướng dẫn lập trình C

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 (254.18 KB, 65 trang )

HƯỚNG DẪN LẬP TRÌNH CODE C
0.Viết hàm nhập/xuất mảng a các số nguyên có n phần từ bàn phím. Điều
kiện giá trị của n phải thỏa mãn 1trên thì yêu cầu nhập lại.
Code:
#include<stdio.h>
void NhapMang(int a[],int n) {
int i;
for(i=0; iprintf("Nhap a[%d]: ",i);
scanf("%d",&a[i]);
}
}
void XuatMang(int a[],int n) {
printf("Cac phan tu co trong mang la:\n");
int i;
for(i=0; iprintf("a[%d] = %d\n",i,a[i]);
}
}
int main() {
int n;
int a[n];
do {
printf("Nhap n: ");
scanf("%d",&n);
} while(n<2 || n>99);


NhapMang(a, n);
XuatMang(a, n);


}

1. Viết hàm tính giá trị trung bình các phần tử có giá trị âm trong mảng một
chiều a có n phần tử. Hàm trả về giá trị trung bình của các phần tử có giá
trị âm. Ngược lại hàm trả về giá trị 0.
Code c:
float TbAm(int a[],int n) {
int i;
float s = 0,dem = 0,tb;
for(i=0; iif(a[i] < 0) {
s = s +a[i];
dem++;
}
}
tb = s/dem;
if(dem == 0)
return 0;
return tb;
}

2. Viết hàm tính giá trị trung bình các phần tử có giá trị dương trong
mảng một chiều a có n phần tử. Hàm trả về giá trị trung bình của các
phần tử có giá trị dương. Ngược lại hàm trả về giá trị 0.
Code c:
float TbDuong(int a[],int n) {
int i;


float s = 0,dem = 0,tb;

for(i=0; iif(a[i] > 0) {
s = s +a[i];
dem++;
}
}
tb = s/dem;
if(dem == 0)
return 0;
return tb;
}

3. Viết hàm tính giá trị trung bình các số nguyên tố trong mảng một
chiều a có n phần tử. Hàm trả về giá trị trung bình của các phần tử là số
nguyên tố. Ngược lại hàm trả về giá trị 0.
Code c:
int ngto(int n) {
int i;
if(n<2)
return 0;
else {
for(i=2; i<=sqrt(n); i++)
if(n%i == 0)
return 0;
return 1;


}
}
float TbNgto(int a[],int n) {

int i;
float s = 0,dem = 0,tb;
for(i=0; iif(ngto(a[i])) {
s = s +a[i];
dem++;
}
}
tb = s/dem;
if(dem == 0)
return 0;
return tb;
}

4. Viết hàm tính giá trị trung bình các số hoàn hảo trong mảng một chiều
a có n phần tử. Hàm trả về giá trị trung bình của các phần tử là số hoàn
hảo. Ngược lại hàm trả về giá trị 0.
Code c:
int HoanHao(int n) {
int i;
int s = 0;
for(i=1; iif(n%i == 0)
s = s + i;


if(s == n)
return 1;
return 0;
}

float TbHoanHao(int a[],int n) {
int i;
float s = 0,dem = 0,tb;
for(i=0; iif(HoanHao(a[i])) {
s = s +a[i];
dem++;
}
}
tb = s/dem;
if(dem == 0)
return 0;
return tb;
}

5. Viết hàm tính giá trị trung bình các số chính phương trong mảng một
chiều a có n phần tử. Hàm trả về giá trị trung bình của các phần tử là số
chính phương. Ngược lại hàm trả về giá trị 0.
Code c:
int chinhPhuong(int n) {
int i;
for(i=1; i<=n; i++)
if(i*i ==n) {


return 1;
break;
}
return 0;
}

float TbchinhPhuong(int a[],int n) {
int i;
float s = 0,dem = 0,tb;
for(i=0; iif(chinhPhuong(a[i])) {
s = s +a[i];
dem++;
}
}
tb = s/dem;
if(dem == 0)
return 0;
return tb;
}
6. Viết hàm tính giá trị trung bình các số chẵn và chia hết cho 3 trong mảng một
chiều a có n phần tử. Hàm trả về giá trị trung bình của các phần tử thỏa mãn. Ngược
lại hàm trả về giá trị 0.
Code c:
float TbChanChiaBa(int a[],int n) {
int i;
float s = 0,dem = 0,tb;


for(i=0; iif(a[i]%2 == 0 && a[i]%3 == 0) {
s = s +a[i];
dem++;
}
}
tb = s/dem;

if(dem == 0)
return 0;
return tb;
}

7. Viết hàm tính giá trị trung bình các số lẻ và chia hết cho 5 trong mảng
một chiều a có n phần tử. Hàm trả về giá trị trung bình của các phần tử
thỏa mãn. Ngược lại hàm trả về giá trị 0.
Code c:
float TbChanChiaBa(int a[],int n) {
int i;
float s = 0,dem = 0,tb;
for(i=0; iif(a[i]%2 != 0 && a[i]%5 == 0) {
s = s +a[i];
dem++;
}
}
tb = s/dem;
if(dem == 0)


return 0;
return tb;
}

8. Viết hàm trả về giá trị và chỉ số của phần tử lớn nhất trong mảng 1
chiều a có n phần tử.
Code c:
int maxx(int a[],int n,int &max,int &maxi) {

int i;
max = a[0],maxi = 0;
for(i=1; iif(a[i]>max) {
max = a[i];
maxi = i;
}
}
}

9. Viết hàm trả về giá trị và chỉ số của phần tử nhỏ nhất trong mảng 1
chiều a có n phần tử.
Code c:
int minn(int a[],int n,int &min,int &mini) {
int i;
min = a[0],mini = 0;
for(i=1; iif(a[i]min = a[i];
mini = i;


}
}
}

10. Viết hàm sắp xếp mảng a có n phần tử theo thứ tự tăng dần.

Code c:


void SapXep(int a[], int n)
{
int tem;
int i,j;
for(i=0;ifor(j=i+1;jif(a[i]>a[j])
{
tem=a[i];
a[i]=a[j];
a[j]=tem;
}
}

11. Viết hàm sắp xếp mảng a có n phần tử theo thứ tự giảm dần.
Code c:
void SapXepGiam(int a[], int n)
{
int tem;


int i,j;
for(i=0;ifor(j=i+1;jif(a[i]{
tem=a[i];
a[i]=a[j];
a[j]=tem;
}

}

12. Viết hàm in ra các số nguyên tố trong mảng 1 chiều a có n phần tử.
Code c:
int nguyento(int n)
{
if(n==0||n==1) return 0;
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
return 0;
return 1;
}
void inNgto(int a[],int n) {
int i;
printf("Cac so nguyen to:");
for(i=1; i

if(nguyento(a[i])) {
printf("\t%d",a[i]);
}
}
}

13. Viết hàm đếm xem trong mảng một chiều a có n phần tử có tất cả các
bao nhiêu số nguyên tố nhỏ hơn k, nếu mảng không tồn tại số nguyên tố
nào nhỏ hơn k hàm trả về giá trị 0.
Code c:
int nguyento(int n)

{
if(n==0||n==1) return 0;
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
return 0;
return 1;
}
void inNgto(int a[],int n,int k) {
int i;
int dem = 0;
for(i=1; iif(nguyento(a[i]) && a[i]dem++;
}
if(dem == 0)


return 0;
return dem;
}

14. Viết hàm xuất ra màn hình các phần tử là số chính phương nằm tại
những vị trí lẻ trong mảng một chiều a có n phần tử.
Code c:
int ChinhPhuong(int n) {
int i;
for(i=1; i<=n; i++)
if(i*i ==n) {
return 1;

break;
}
return 0;
}
void inChinhPhuong(int a[],int n) {
int i;
printf("Cac so chinh phuowng thoa man:");
for(i=0; iif(chinhPhuong(a[i]) && (i%2 != 0)) {
printf("\t%d",a[i]);
}
}
}

15. Viết hàm trả về vị trí đầu tiên của số x xuất hiện trong mảng một
chiều a có n phần tử.


Code c:
int viTri(int a[],int n,int x) {
int i;
for(i=0; iif(a[i]==x) {
return i;
break;
}
}
}

16. Viết hàm trả về vị trí cuối cùng của số x xuất hiện trong mảng một chiều

a có n phần tử.
Code c:
int viTricuoi(int a[],int n,int x) {
int i;
for(i=n-1; i>=0; i--) {
if(a[i]==x) {
return i;
break;
}
}
}

17. Viết hàm tìm vị trí phần tử âm lớn nhất trong mảng một chiều a có n
phần tử.
Code c:


int viTriAmMax(int a[],int n) {
int i;
int vt;
int max;
for(i=0; iif(a[i]<0) {
vt = i;
max=a[i];
break;
}
}
for(i=0; iif(a[i]<0 && a[i]>max) {

vt = i;
max = a[i];
}
}
return vt;
}

18. Viết hàm xóa tất cả các số nguyên tố trong mảng.
Code c:
void XoaNgto(int a[],int n) {
int i,j;
for(i=0; i

if(ngto(a[i])) {
for(j=i;j{
a[j] = a[j+1];
}
n--;
i--;
}
}
}

19. Viết hàm đếm các phần tử âm, dương trong mảng một chiều a có n phần
tử.
Code c:
void DemAmDuong(int a[],int n) {
int i;

int demAm = 0;
int demDuong = 0;
for(i=0; iif(a[i]>0) {
demDuong++;
} else if(a[i]<0)
demAm++;
}
}


20. Viết hàm đếm số lần xuất hiện của phần tử x trong mảng một chiều a
có n phần tử.
Code c:
int DemX(int a[],int n,int x) {
int i;
int dem = 0;
for(i=0; iif(a[i] == x)
dem++;
}
return dem;
}

21. Viết hàm sắp xếp các phần tử lẻ trong mảng một chiều a có n phần tử
theo thứ tự tăng dần.
Code c:
void HoanVi(int &x, int &y) {
int t=x;
x=y;

y=t;
}
void SapXepLeTang(int a[], int n) {
int i, j;
for(int i=0; iif(a[i]%2!=0)
for(j=i+1; j

if(a[j]%2!=0 && a[j]HoanVi(a[j], a[i]);
}

22. Viết hàm sắp xếp các phần tử chẵn trong mảng một chiều a có n phần
tử theo thứ tự giảm dần.
Code c:
void HoanVi(int &x, int &y) {
int t=x;
x=y;
y=t;
}
void SapXepChanGiam(int a[], int n) {
int i, j;
for(int i=0; iif(a[i]%2==0)
for(j=i+1; jif(a[j]%2==0 && a[j]>a[i])
HoanVi(a[j], a[i]);
}


23. Viết hàm chèn một phần tử x vào sau vị trí k trong mảng 1 chiều a có
n phần tử.
Code c:


void ChenX(int a[], int &n,int x,int k) {
int i, j, tam;
for(i=0; iif(i==k) {
n++;
for(j=n-1; j>i+1; j--) {
a[j] = a[j-1];
}
a[i+1] = x;
break;
}
}
}

24. Viết hàm tìm và xóa tất cả các phần tử trùng với x trong mảng một
chiều a có n phần tử, nếu không tồn tại phần tử x trong mảng thì trả về
-1.
Code c:
int XoaX(int a[], int &n,int x) {
int i, j;
int dem=0;
for(i=0; iif(a[i] == x) {
for(j=i; ja[j] = a[j+1];

}
dem++;


n--;
i--;
}
}
if(dem == 0)
return -1;
}

25. Viết hàm đếm số lượng các phần tử khác nhau trong mảng 1 chiều a
có n phần tử. Ví dụ: 1 6 2 3 2 4 2 6 5 ◊ Có 6 phần tử khác nhau là 1 6 2 3
4 5.
Code c:
int DemPhanTu(int a[], int n) {
int i, j;
int dem=1;
int tam=2;
for(i=1; ifor(j=0; jif(a[j]==a[i]) {
tam = 0;
break;
} else
tam = 1;
}
if(tam == 1)
dem++;



}
return dem;
}

26. Cho mảng a gồm n số nguyên có thứ tự tăng dần. Viết hàm chèn một
số nguyên X vào mảng sao cho mảng vẫn có thứ tự tăng dần.
Code c:
int ChenX(int a[], int &n, int x) {
int i, j;
for(i=0; iif((a[i] >= x && i == 0)) {//neu x nho hon tat ca cac phan tu trong mang
n++;
for(j=n-1; j>=i; j--) {
a[j] = a[j-1];
}
a[i] = x;
break;
} else if((a[i] <= x && a[i+1] > x && i!= n-1) || (a[i] <= x && i == n-1))
{/*neu x nam trong khoang giua mang hoac x lon hon tat ca cac phan tu trong mang*/
n++;
for(j=n-1; j>i; j--) {
a[j] = a[j-1];
}
a[i+1] = x;
break;
}



}
}

27. Viết hàm trả về số lẻ nhỏ nhất lớn hơn mọi số chẵn có trong mảng
một chiều a có n phần tử các số nguyên.
Code c:
void HoanVi(int &x, int &y) {
int t=x;
x=y;
y=t;
}
void SapXepLeTang(int a[], int n) {
int i, j;
for(int i=0; iif(a[i]%2!=0)
for(j=i+1; jif(a[j]%2!=0 && a[j]HoanVi(a[j], a[i]);
}
int LeNhoNhat(int a[], int n) {
int i, j;
int max;
for(i=0; iif((a[i]%2 == 0)) {
max = a[i];


break;
}
}

for(i=0; iif((a[i]%2 == 0 && a[i]>max)) {
max = a[i];
}
}
for(i=0; iif((a[i] > max && a[i]%2 != 0)) {
return a[i];
break;
}
}
}

28. Viết hàm tìm giá trị chẵn lớn nhất nhỏ hơn mọi giá trị lẻ trong mảng
một chiều a có n phần tử các số nguyên
Code c:
void HoanVi(int &x, int &y) {
int t=x;
x=y;
y=t;
}
void SapXepChanTang(int a[], int n) {
int i, j;


for(int i=0; iif(a[i]%2==0)
for(j=i+1; jif(a[j]%2==0 && a[j]HoanVi(a[j], a[i]);

}
int ChanLonNhat(int a[], int n) {
int i, j;
int min;
for(i=0; iif((a[i]%2 != 0)) {
min = a[i];
break;
}
}
for(i=0; iif((a[i]%2 != 0 && a[i]min = a[i];
}
}
for(i=n-1; i>=0; i--) {//tim so chan lon nhat nho hon moi so le
if((a[i] < min && a[i]%2 == 0)) {
return a[i];
break;
}


}
}

29. Viết hàm tìm phần tử xuất hiện nhiều nhất trong mảng một chiều a có
n phần tử các số nguyên.
#include "conio.h"
#include "stdio.h"
#define max 100

//nhap mang
void NhapMang(int A[], unsigned int n) {
for(int i = 0; i{
printf("phan tu %d = ",i);
scanf("%d",&A[i]);
}
}
//xuat mang
void XuatMang(int A[], unsigned int n) {
for(int i = 0; iprintf("%d\t",A[i]);
}
//dem so lan xuat hien cua x trong A
unsigned int Count(int A[], unsigned int n, int x){
unsigned int temp = 0;
for(int i = 0; iif(A[i]==x)
temp++;
return temp;
}
//tim phan tu xuat hien nhat lan nhat trong A
unsigned int Count(int A[], unsigned int n) {
unsigned int temp1, temp = Count(A,n,A[0]), index = 0;
for(int i = 1; i{
temp1 = Count(A,n,A[i]);
if(temp{
temp = temp1;

index = i;
}
}
return A[index];
}
//chuong trinh chinh
void main(){
clrscr();
int B[max];
unsigned int n;
printf("Nhap n = ");
scanf("%d",&n);
NhapMang(B,n);
printf("Mang vua nhap:\n");
XuatMang(B,n);
printf("\nPhan tu xuat hien nhieu nhat la: %d",Count(B,n));
getch();
}


30. Viết hàm kiểm tra mảng a có n phần tử có phải là mảng đối xứng hay
không?
Code c:
void DoiXung(int a[],int n) {
int i,ok=1;
for(i=0; iif(a[i] != a[n-i-1]) {
ok = 0;
break;
}

}
if(ok == 1)
printf("Mang doi xung");
else
printf("Mang khong doi xung");
}

31. Viết hàm kiểm tra mảng a có n phần tử có phải là mảng toàn số
nguyên tố.
Code c:
int ngto(int n) {
int i;
for(i=2; i<=sqrt(n); i++)
if(n%i == 0)
return 0;


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

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