In ra màn hình số phần tử hiện có của dãy và giá trị các phần tử giá trị các phần tử in trên một hàng Tính tổng và trung bình cộng của các phần tử trong dãy.. Nhập vào một số thực x,
Trang 1Một số bài mẫu chương 3
Bài 1 : Cho một dãy A gồm n số (n ≤ 100) Viết chương trình :
Nhập n và giá trị cho các phần tử dãy A
In ra màn hình số phần tử hiện có của dãy và giá trị các phần tử (giá trị các phần tử in trên một hàng)
Tính tổng và trung bình cộng của các phần tử trong dãy
GIAI
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int i,n;
float A[100];
do{
printf( "Nhap vao so phan tu : " );
scanf( "%i" ,&n);
}
while (n<0 || n>100);
printf( "Nhap day A\n" );
for(i=0; i< n; i++)
{
printf( "A[%i]=" ,i);
scanf( "%f" ,&A[i]);
}
printf( "Day ban dau : " );
for(i=0; i< n; i++) printf( "%f " ,A[i]);
printf( "\n" );
printf( "So phan tu : %d\n" ,n);
float tong=0;
for(i=0; i< n; i++) tong=tong+A[i];
printf( "Tong cua cac phan tu trong day : %f\n" ,tong);
printf( "Trung binh cong : %.4f\n" ,tong/n);
return 0;
}
Bài 2 : Viết chương trình nhập dãy A có n số thực (n≤100) Nhập vào một số thực x, Tách dãy A thành 2 dãy con, dãy thứ nhất gồm toàn những phần tử nhỏ hơn x, dãy thứ hai gồm những phần tử còn lại In hai dãy
con ra màn hình
GIAI
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
Trang 2int i,n,j,k;
float A[100],B[100],C[100];
float x;
//nhap vao day A
do{
printf( "Nhap vao so phan tu(<100) : " );
scanf( "%d" ,&n);
}
while (n<0 || n>100);
printf( "Nhap day A\n" );
for(i=0; i<n; i++)
{
printf( "A[%i] = " ,i);
scanf( "%f" ,&A[i]);
}
//Nhap x va tach day A thanh hai day con
//Day B : cac phan tu <x
//Day C : cac phan tu con lai
printf( "Nhap gia tri x: " );
scanf( "%f" ,&x);
j=0;k=0;
for(i=0; i<n; i++)
{
if(A[i]<x){
B[j]=A[i];
j++;
}
else{
C[k]=A[i];
k++;
}
}
//in ra cac phan tu thuoc hai day
printf( "Day B : \n" );
for(i=0; i<j; i++) printf( "%f " ,B[i]);
printf( "\n" );
printf( "Day C : \n" );
for(i=0; i<k; i++) printf( "%f " ,C[i]);
printf( "\n" );
system( "pause" );
return 0;
}
Bài 3 : Cho một dãy B gồm n số nguyên (n≤100) Viết chương trình :
Nhập vào dãy B
Viết hàm kiểm tra xem các phần tử trong dãy B có theo thứ tự giảm dần không
Nhập vào một số giá trị x Xóa các phần tử trong dãy B có giá trị bằng x và in ra màn hình dãy B sau
khi xóa
GIAI
Trang 3#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int i,n;
int check;
int B[100];
int x;
//nhap n thoa man dieu kien
do
{
printf( "Nhap vao so phan tu(<=100) : " );
scanf( "%i" ,&n);
}
while((n<=0)||(n>100));
//nhap vao day B
printf( "Nhap day B\n" );
for(i=0; i<n; i++)
{
printf( "B[%d] = " ,i);
scanf( "%i" ,&B[i]);
}
//Kiem tra day giam dan
check=1;
i=1;
while(check && i<n)
{
if(B[i]>B[i-1]) check=0; //check = false
else i++;
}
if(check==0) printf( "Day B khong phai giam dan!\n" );
else printf( "Day B la giam dan!\n" );
//Nhap x va xoa cac phan tu =x
printf( "Nhap gia tri x: " );
scanf( "%d" ,&x);
i=0;
while(i<n) //tai sao phai dung while ?
{
if(B[i]==x){
B[i]=B[n-1];
n=n-1;
}
else i++;
}
printf( "Day sau khi xoa : \n" );
for(i=0; i<n; i++) printf( "%i " ,B[i]);
printf( "\n" );
return 0;
}
Trang 4Chú ý: sau khi xóa các phần tử có giá trị bằng x thì thứ tự của dãy không còn giống như ban đầu Bạn hãy
sửa đổi cách xóa này để thứ tự của dãy vần giữ nguyên
Gợi ý: khi xóa ta phải dịch các phần tử bên phải đè lên phần tử bị xóa