bài tập C
Trang 1LẬP TRÌNH C
1 Bài tập mảng
* Tạo các hàm
#include <stdio.h>
-Nhập -void Input(int *p, int n){
int i;
for(i=0; i<n; i++){
printf("nhap phan tu thu %i: ",i);
scanf("%d",&p[i]);
}
}
-In -void Display(int *p, int n){
int i;
for(i=0; i<n; i++)
printf("%5d",p[i]);
printf("\n");
}
-Sắp xếp tăng dần/giảm dần -void Sort(int *p, int n, int d){
int i, j, tg;
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(d*p[i]>d*p[j]){
tg = p[i];
p[i] = p[j];
p[j] = tg;
} }
-Tìm phần tử lớn nhất/nhỏ nhất -int Maxmin(nhất -int *p, nhất -int n, nhất -int d){
int temp, i;
temp = p[0];
for(i=1; i<n; i++)
if(d*p[i]>d*temp) temp = p[i];
return temp;
}
-Tính tổng các phần tử trong mảng -int Sum(mảng -int *p, mảng -int n){
Trang 2int s=0,i;
for(i=0; i<n; i++)
s+=p[i];
return s;
}
-Tính trung bình giá trị các phần tử -float Average(int *p, int n){
int s=0,i;
for(i=0; i<n; i++)
s+=p[i];
return (float)s/n;
}
-Tìm phần tử x có trong mảng không -int Search(không -int *p, không -int n, không -int vt, không -int x){
int i;
for(i=vt; i<n; i++)
if(p[i]==x)
return i;
return -1;
}
-Xóa phần tử x có trong mảng -int Delete(mảng -int *p, mảng -int *n, mảng -int vt, mảng -int x){
int i;
vt = Search(p,*n,vt,x);
if(vt>-1){
for(i=vt; i<*n-1; i++)
p[i] = p[i+1];
*n = *n - 1;
}
return vt;
}
-Chèn phần tử x vào mảng -void Insert(int *p, int *n, int x){
p[*n] = x;
*n = *n + 1;
}
-Thay thế phần tử x bằng phần tử y -void Replace(int *p, int n, int x, int y){
int i;
for(i=0; i<n; i++)
Trang 3if(p[i]==x) p[i]=y;
}
2 Kiểm tra xem a,b,c có phải là 3 cạnh của tam giác không?
#include <stdio.h>
#include <math.h>
void main (void)
{
int a,b,c;
printf("nhap vao do dai 3 canh:");
scanf("%d%d%d",&a,&b,&c);
if(a<b+c && b<a+c && c<b+a){
printf("%2d%2d%2d la 3 canh cua tam giac\n",a,b,c); if(a==b && b==c && c==a)
printf("tam giac deu\n");
else
if(a==b || a==c || c==b)
printf(" tam giac can\n");
else
printf("tam giac thuong\n");
}
else
printf("khong phai 3 canh tam giac\n");
}
3 Hiển thị trên màn hình Mã|Ký tự bảng mã ASCII
#include <stdio.h>
#include <conio.h>
void main (void){
int ch;
for(ch=0; ch<=225;ch++
){
printf("%c %d\n",ch,ch);
if(ch % 22==0)
getch();
}
}
4
#include <stdio.h>
#include <math.h>
void main (void){
Trang 4long n,i;
float s;
printf("Nhap vao so nguyen duong N:"); scanf("%ld",&n);
s=0;
for (i=1;i<=n;i++)
s = s+i*i;
printf("s = %f",sqrt(s));
}
5
#include <stdio.h>
#include <math.h>
void main (void){
int i,n,s;
printf(" nhap vao so nguyen duong n:"); scanf("%d",&n);
while(n<=0){
printf("nhap lai");
scanf("%d",&n);
}
s = 0;
for(i=1; i<=n; i++)
if(i%2==1)
s = s+(2*i+1)*(2*i+1);
printf("GTBT la: %d\n",s);
}
6 Tính n!
#include <stdio.h>
#include <math.h>
void main (void){
int n,s,i;
printf("nhap vao N:");
scanf("%d",&n);
s = 1;
for(i=n;i>=1;i=i-1)
s=s*i;
printf("s= %d\n",s);
}
7 Kiểm tra số nguyên tố?
#include <stdio.h>
Trang 5#include <math.h>
#include <conio.h>
int n,i,t;
printf("nhap vao so nguyen n:");
scanf("%d",&n);
if (n<2){
printf("nhap lai:");
scanf("%d",&n);
}
else
for (i==2;i<= sqrt(n)){
t = n%i;
if(t!=0)
printf("la so nguyen to:");
else
printf("khong la nguyen to");
}
}
8 Tính biểu thức theo ct Fibonasi
#include <stdio.h>
#include <math.h>
void main(void){
int n,fn,f,s,i;
int f0 = 0,f1 = 1;
printf("nhap vao so N:");
scanf("%d",&n);
while (n<2){
printf("nhap lai:");
scanf("%d",&n);
}
for (i=1;i<=n;i++)
fn = f(i-1)+f(i-2);
s = f0+f1+fn;
printf("s= %d",s);
}
-Con trỏ -Tìm
max -#include <stdio.h>
#include <string.h>
Trang 6void main (void){
int a[100], n, i, max;
printf("n=");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("a[%d]=",i);
scanf("%d",a+1);
}
max = *a;
for(i=1;i<n;i++)
if(*(a+1)>max)
max=*(a+1);
printf("max=%d",max);
}
-Con trỏ biến
động -#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main(void){
int *p,max,n,i;
printf("n=");
scanf("%d",&n);
p = malloc(n*sizeof(int));
if(p==NULL){
printf("Khong cap phat duoc bo nho\n"); getch();
exit(0);
}
for(i=0;i<n;i++){
printf("Nhap phan tu thu %d:",i);
scanf("%d",&p+i);
}
max = *p;
for(i=1; i<n; i++)
if(*(p+i) > max)
max = *(p+i);
printf("max=%d\n",max);
free(p);
}
Trang 7- Hàm main –
mảng -#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include "array.h"
void main(void){
int a[100], n, temp, key, d, tong, vt, x, y;
float tb;
do{
system("cls");
printf("1 Nhap vao day so.\n");
printf("2 In day so.\n");
printf("3 Sap xep day so.\n");
printf("4 Tim so lon nhat/nho nhat day so.\n");
printf("5 Tong cac phan tu trong day so.\n");
printf("6 Trung binh cac phan tu trong day so.\n");
printf("7 Tim mot phan tu trong day so.\n");
printf("8 Tim tat ca phan tu trong day so.\n");
printf("9 Xoa mot phan tu trong day so.\n");
printf("A Xoa tat ca phan tu trong day so.\n");
printf("B Chen mot phan tu vao cuoi day so.\n");
printf("C Tim kiem va thay the phan tu trong day so.\n"); printf("Q Thoat khoi chuong trinh.\n");
key = getch();
switch(key){
case '1':
system("cls");
printf("Nhap so phan tu cua day: ");
scanf("%d",&n);
Input(a,n);
printf("Da nhap xong!\n");
getch();
break;
case '2':
system("cls");
printf("Cac phan tu cua day:\n");
Display(a,n);
getch();
break;
Trang 8case '3':
system("cls");
printf("Sap xep tang (1)/ sap xep giam (-1)? ");
scanf("%d",&d);
Sort(a,n,d);
printf("Day da sap xep xong!\n");
getch();
break;
case '4':
system("cls");
printf("Tim so lon nhat (1)/ so nho nhat (-1)? ");
scanf("%d",&d);
temp = Maxmin(a,n,d);
printf("So can tim: %d\n",temp);
getch();
break;
case '5':
system("cls");
tong = Sum(a,n);
printf("Tong cac phan tu trong day: %d\n",tong);
getch();
break;
case '6':
system("cls");
tb = Average(a,n);
printf("Trung binh cac phan tu trong day: %0.2f\n",tb); getch();
break;
case '7':
system("cls");
printf("Nhap phan tu can tim: ");
scanf("%d",&x);
vt = Search(a,n,0,x);
if(vt>-1)
printf("Tim thay phan tu %d tai vi tri %d\n",x,vt); else
printf("Khong tim thay\n");
getch();
break;
case '8':
Trang 9printf("Nhap phan tu can tim: "); scanf("%d",&x);
vt = Search(a,n,0,x);
if(vt==-1)
printf("Khong tim thay\n"); else{
printf("Cac vi tri tim thay:\n"); while(vt>-1){
printf("%6d",vt);
vt = Search(a,n,vt+1,x); }
}
getch();
break;
case '9':
system("cls");
printf("Nhap phan tu can xoa: "); scanf("%d",&x);
vt = Delete(a,&n,0,x);
if(vt==-1)
printf("Khong tim thay\n"); else
printf("Da xoa xong!\n"); getch();
break;
case 'A':
case 'a':
system("cls");
printf("Nhap phan tu can xoa: "); scanf("%d",&x);
vt = Delete(a,&n,0,x);
if(vt==-1)
printf("Khong tim thay\n"); else{
while(vt>-1)
vt = Delete(a,&n,vt,x); printf("Da xoa xong!\n"); }
getch();
Trang 10case 'B':
case 'b':
system("cls");
printf("Nhap phan tu can chen: ");
scanf("%d",&x);
Insert(a,&n,x);
printf("Da chen xong!\n");
getch();
break;
case 'C':
case 'c':
system("cls");
printf("Nhap phan tu can tim: ");
scanf("%d",&x);
printf("Nhap phan tu can thay the: ");
scanf("%d",&y);
Replace(a,n,x,y);
printf("Da thay the xong!\n");
getch();
break;
case 'Q':
case 'q':
return;
}//end of switch
}while(1); //end of do while
}// end of program
-Chuỗi -Độ dài
chuỗi -int Len(char *s){
int i=0;
while(s[i]!=0) i++;
return i;
}
-Đổi thường thành hoa -void Upper(char *s){
int i=0;
while(s[i]!=0 && s[i]>='a' && s[i]<='z'){
s[i] = s[i] - 32;
Trang 11}
}
-Đổi hoa thành thường
-void Lower(char *s){
int i=0;
while(s[i]!=0 && s[i]>='A' && s[i]<='Z'){
s[i] = s[i] + 32;
i++;
}
}
-Xóa khoảng trống phía bên phải -void RTrim(char *s){
while(s[Len(s)-1]==32) s[Len(s)-1] = 0;
}
-Xóa khoảng trống phía bên trái -void LTrim(char *s){
int i;
while(s[0]==32)
for(i=0; i<Len(s); i++)
s[i] = s[i+1];
}
-Xóa khoảng trống
giữa -void MTrim(char *s){
int i, n, j;
n = Len(s);
for(i=0; i<n; )
if(s[i]==32 && s[i+1] == 32)
for(j=i; j<n; j++)
s[j] = s[j+1];
else
i++;
}
-Thay thế ký
tự -void Replace(char *s, char x, char y){
int i,n;
n = Len(s);
for(i=0; i<n; i++)
if(s[i]==x) s[i]=y;
}
Trang 12-Hàm
main -#include <stdio.h>
#include "chuoi.h"
void main(void){
char s[100], x, y;
printf("Nhap chuoi: ");
gets(s);
printf("Nhap ki tu can tim: ");
scanf("%c",&x);
fflush(stdin);
printf("Nhap ki tu can thay the: ");
scanf("%c",&y);
Replace(s,x,y);
puts(s);
printf("do dai sau khi xoa: %d\n",Len(s));
}