Bài 2. Sử dụng ngôn ngữ tự nhiên; vẽ lưu đồ thuật toán giải phương trình bậc nhất: ax +b =0Dùng ngôn ngữ tự nhiên Bước 1: Nhập vào 2 hệ số a và b. Bước 2: Xét điều kiện a = 0 ? + Nếu đúng là a = 0, thì đi đến bước 3. + Nếu không, nghĩa là a ≠ 0, thì đi đến bước 4. Bước 3: Xét điều kiện b = 0 ? + Nếu b = 0, thì báo phương trình có vô số nghiệm. Ði đến bước 5. + Nếu b ≠ 0, thông báo phương trình vô nghiệm. Ði đến bước 5. Bước 4: Thông báo phương trình có một nghiệm duy nhất là x = ba. Bước 5: Ngừng thuật toán.
Trang 1Chương 1
TỔNG QUAN VỀ NGÔN NGỮ C Bài 1 Sử dụng ngôn ngữ tự nhiên; vẽ lưu đồ thuật toán tính tổng bình phương của hai số bất
- Bước 2: Xét điều kiện a = 0 ?
+ Nếu đúng là a = 0, thì đi đến bước 3
+ Nếu không, nghĩa là a ≠ 0, thì đi đến bước 4
- Bước 3: Xét điều kiện b = 0 ?
+ Nếu b = 0, thì báo phương trình có vô số nghiệm Ði đến bước 5
+ Nếu b ≠ 0, thông báo phương trình vô nghiệm Ði đến bước 5
- Bước 4: Thông báo phương trình có một nghiệm duy nhất là x = - b/a
- Bước 5: Ngừng thuật toán
Trang 2Bài 3 Sử dụng ngôn ngữ tự nhiên; vẽ lưu đồ thuật toán giải phương trình bậc hai:
ax2 + bx + c = 0
- Bước 1: Nhập vào 3 hệ số a, b và c
- Bước 2: Xét điều kiện a = 0 ?
+ Nếu đúng là a = 0, thì đi đến bước 3
+ Nếu không, nghĩa là a ≠ 0, thì đi đến bước 4
- Bước 3: Gọi hàm giải phương trình bậc nhất Ði đến bước 8
- Bước 4: Tính delta = b*b – 4*a*c
- Bước 5: Xét điều kiện delta < 0 ?
+ Nếu delta < 0, thì báo phương trình vô nghiệm Ði đến bước 8
+ Nếu không, nghĩa là delta ≥ 0, thì đi đến bước 6
- Bước 6: Xét điều kiện delta = 0 ?
+ Nếu delta = 0, thì báo phương trình có nghiệm kép –b/(2*a) Ði đến bước 8 + Nếu không, nghĩa là delta > 0, thì đi đến bước 7
- Bước 7: Thông báo phương trình có hai nghiệm x1 và x2 là:
(-b + sqrt(delta))/(2*a) và (-b – sqrt(delta))/(2*a)
- Bước 8: Ngừng thuật toán
Trang 3Bài 4 Sử dụng ngôn ngữ tự nhiên; vẽ lưu đồ thuật toán tính giá trị lớn nhất của ba số a, b, c.
- Bước 1: Nhập vào 3 số a, b, c
- Bước 2: Xét điều kiện a > b ?
+ Nếu đúng là a > b, thì gán max = a Đi đến bước 3
+ Nếu không, nghĩa là a ≤ b, thì gán max = b Đi đến bước 3
- Bước 3: Xét điều kiện max < c ?
+ Nếu đúng là max < c, thì gán max = c Ði đến bước 4
+ Nếu không, nghĩa là max ≥ c, thì đi đến bước 4
- Bước 4: Xuất max
- Bước 5: Ngừng thuật toán
Bài 5 Sử dụng ngôn ngữ tự nhiên; vẽ lưu đồ thuật toán tính tổng S = 1 + 2 + … + n.
- Bước 1: Nhập vào n
- Bước 2: Khởi tạo i = 1; S = 0
- Bước 3: Xét điều kiện i ≤ n ?
+ Nếu đúng i ≤ n, thì đi đến bước 4
+ Nếu không, nghĩa là i > n, thì đi đến bước 5
Trang 4 Dùng lưu đồ
BÀI TẬP YÊU CẦU
Bài 6 Vẽ lưu đồ thuật toán tính tổng S = 1 + 3 + 5 +…+ (2n-1) Gợi ý dùng ngôn ngữ tự nhiên:
- Bước 1: Nhập vào n
- Bước 2: Xét điều kiện n > 0 ?
+ Nếu đúng là n > 0, thì đi đến bước 3
+ Nếu không, nghĩa là n ≤ 0, thì quay về bước 1
- Bước 3: Khởi tạo i = 1; S = 0
- Bước 4: Xét điều kiện i ≤ n ?
+ Nếu đúng i ≤ n, thì đi đến bước 5
+ Nếu không, nghĩa là i > n, thì đi đến bước 6
- Bước 5: Tính S = S + (2*i-1)
Tăng i lên thêm 1 đơn vị
- Bước 6: Xuất tổng S
- Bước 7: Ngừng thuật toán
2
1
- Bước 2: Xét điều kiện n ≥ 0 ?
+ Nếu đúng là n ≥ 0, thì đi đến bước 3
+ Nếu không, nghĩa là n < 0, thì quay về bước 1
- Bước 3: Khởi tạo i = 1; S = 1
Trang 5- Bước 4: Xét điều kiện i ≤ n ?
+ Nếu đúng i ≤ n, thì đi đến bước 5
+ Nếu không, nghĩa là i > n, thì đi đến bước 6
- Bước 5: Tính S = S + 1/(2*i)
Tăng i lên thêm 1 đơn vị
- Bước 6: Xuất tổng S
- Bước 7: Ngừng thuật toán
6
5 4
3 2
- Bước 2: Xét điều kiện n ≥ 0 ?
+ Nếu đúng là n ≥ 0, thì đi đến bước 3
+ Nếu không, nghĩa là n < 0, thì quay về bước 1
- Bước 3: Khởi tạo i = 0; S = 0
- Bước 4: Xét điều kiện i ≤ n ?
+ Nếu đúng i ≤ n, thì đi đến bước 5
+ Nếu không, nghĩa là i > n, thì đi đến bước 6
- Bước 5: Tính S = S + (2*i+1)/(2*n+2)
Tăng i lên thêm 1 đơn vị
- Bước 6: Xuất tổng S
- Bước 7: Ngừng thuật toán
Bài 9 Vẽ lưu đồ thuật toán tính T = 1 * 2* 3 * * n
Gợi ý dùng ngôn ngữ tự nhiên:
- Bước 1: Nhập vào n
- Bước 2: Khởi tạo i = 1; T = 1
- Bước 3: Xét điều kiện i ≤ n ?
+ Nếu đúng i ≤ n, thì đi đến bước 4
+ Nếu không, nghĩa là i > n, thì đi đến bước 5
- Bước 4: Tính T = T * i
Tăng i lên thêm 1 đơn vị
- Bước 5: Xuất T
- Bước 6: Ngừng thuật toán
Bài 10 Vẽ lưu đồ thuật toán tính S = 1 + 2! + + n!
(n-1)! * n nếu n>0
Trang 6- Bước 1: Nhập vào n
- Bước 2: Xét điều kiện n ≥ 0 ?
+ Nếu đúng là n ≥ 0, thì đi đến bước 3
+ Nếu không, nghĩa là n < 0, thì quay về bước 1
- Bước 3: Xét điều kiện n = 0 ?
+ Nếu đúng là n = 0, thì đi đến bước 6+ Nếu không, nghĩa là n ≠ 0, thì đi đến bước 4.Khởi tạo i = 1; S = 0; T=1
- Bước 4: Xét điều kiện i ≤ n ?
+ Nếu đúng i ≤ n, thì đi đến bước 5
+ Nếu không, nghĩa là i > n, thì đi đến bước 7
- Bước 5: Tính T = T * i
Tính S = S + TTăng i lên thêm 1 đơn vị
- Bước 6: Xuất tổng S = 1 Đi đến bước 8
- Bước 7: Xuất tổng S
- Bước 8: Ngừng thuật toán
Bài 11 Vẽ lưu đồ thuật toán tính S = 12 - 2 2 + 32 - + (-1)n-1 n2
Sử dụng ngôn ngữ tự nhiên
- Bước 1: Nhập vào n
- Bước 2: Khởi tạo i = 1; S = 0
- Bước 3: Xét điều kiện i ≤ n ?
+ Nếu đúng i ≤ n, thì đi đến bước 4
+ Nếu không, nghĩa là i > n, thì đi đến bước 8
- Bước 4: Xét điều kiện i chia hết 2 ?
+ Nếu đúng, i chia hết 2 thì đi đến bước 5+ Nếu sai, i không chia hết 2 thì đi đến bước 6
- Bước 5: Tính S = S - i * i Đi đến bước 7
- Bước 6: Tính S = S + i*i Đi đến bước 7
- Bước 7: Tăng i lên thêm 1 đơn vị
- Bước 8: Xuất tổng S
- Bước 9: Ngừng thuật toán
Trang 7Chương 2 NGÔN NGỮ LẬP TRÌNH C //cấu trúc chương trình và các hàm chuẩn
Bài 1 Hãy cho biết ý nghĩa từng dòng lệnh, mục đích của chương trình C sau:
1./* Chuong trinh C dau tien */
Chương trình in ra câu thông báo: Xin chao cac ban!
Bài 2 Hãy cho biết chương trình C sau có lỗi hay không (nếu có hãy sửa lại), mục đích của
đoạn chương trình là gì?
1 main()
2 {
3 float chieu_cao, chieu_rong, chu_vi;
4 printf(“nhap chieu cao hinh chu nhat: “);
Dòng 7: Sai định dạng xuất ra, phải là %f
Dòng 8: Sai dấu lệnh gán, phải là =
Trang 8printf("%d %d %d",a,a++,++a);
printf("\n%d %d %d",a, a,a );
printf("\n%d %d %d",a++,a++,a); getch(); }
Kết quả 5 4 4 3 3 5 4 3 3 Giải thích:
// lệnh rẽ nhánh Bài 4 Viết chương trình nhập vào 3 số a , b, c và in ra giá trị lớn nhất trong 3 số Lấy ví dụ với a=1, b=2, c=3 Lời giải #include<stdio.h> #include<conio.h> main() { int a,b,c,max; printf(" Nhap a,b,c :");scanf("%d%d%d",&a,&b,&c); max=a; if (b>max) max=b; // max=(max<b)?max:b; if (c>max) max=c; // max=(max<c)?max:c; printf("\n gia tri lon nhat la %d :",max); getch(); } Ví dụ với: a=1, b=2, c=3 - B1: gán max=a (tức là max =1) - B2: so sánh xem b có lớn hơn max hay không.(ở đây là 2>1) điều này đúng cho nên gán max=b - B3: so sánh c với max ở đây là 3> 2 đúng! vì ở trên đã đã gán max =2 suy ra max =3 Cuối cùng xuất max ra màn hình In ra giá trị lớn nhất trong 3 số: a=1, b=3, c=2
Yêu cầu: Viết chương trình nhập vào từ bàn phím bốn số a, b, c, d Tìm giá trị nhỏ nhất và giá trị lớn nhất trong bốn số đó, in kết quả ra màn hình?
Trang 9
Bài 5 Viết chương trình giải phương trình bậc hai: ax2 + bx + c = 0 Lưu ý: - Xét trường hợp a=0 - Xét trường hợp b=0
Bài 6 Nhập một ký tự bất kỳ từ bàn phím sau đó xuất ra:
- Nếu là số thì xuất ra đó là một chữ số
- Nếu là chữ cái thì xuất ra đó là một chữ cái
- Các trường hợp khác xuất ra không phải là số, chữ cái
Lời giải tham khảo
#include<stdio.h>
#include<conio.h>
main()
{
char c;
printf("Nhap ky tu vao:"); scanf("%c",&c);
if ((c>='A' && c<='Z') ||(c>='a' && c<='z'))
//c>=65 && c<=90 hoac c>=97 && c<=122 printf("Ky tu vua nhap la mot chu cai - chu: %c",c);
else if (c>='0' && c<='9') //hoac c>=48 && c<=57
printf("Ban dang nhap chu so - so: %c",c);
else
printf("Ban dang nhap ky tu dac biet - ky tu: %c",c);
}
Bài 7 Viết chương trình nhập một tháng và cho biết tháng đó có bao nhiêu ngày.
Gợi ý
- Khi nhập vào tháng t và năm n thì xảy ra các trường hợp sau:
+ Nếu t = 4, 6, 9, 11 thì tháng t có 30 ngày đối với tất cả các năm n
+ Nếu t = 1, 3, 5, 7, 8, 10, 12 thì tháng t có 31 ngày đối với tất cả các năm n
Trang 10+ Nếu t = 2 thì tháng t có thể 28 ngày hoặc 29 ngày (đối với năm nhuận) Phải xác định năm n nhập vào có phải là năm nhuận hay không ? Cách tính năm nhuận:
Năm chia hết cho 4 và không chia hết cho 100
Hoặc năm chia hết cho 100 và chia hết cho 400
Cách tính này áp dụng cho những năm sau công nguyên (n>=1)
Lời giải
#include <stdio.h>
main()
{
int t,n,k;
printf("\n Nhap vao thang t va nam n: ");
scanf("%d%d",&t,&n);
if((t<1)||(t>12)||(n<1))
printf("Khong co Thang hoac nam nay\n");
else
{
if(t==2) { if(((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0)))
printf("Thang 2 nam %d co 29 ngay (nam nhuan)\n",n);
else printf ("Thang 2 nam %d co 28 ngay\n",n);
} if((t==4)||(t==6)||(t==9)||(t==11))
printf(" => Thang %d nam %d co 30 ngay\n",t,n);
if((t==1)||(t==3)||(t==5)||(t==7)||(t==8)||(t==10)||(t==12))
printf("Thang %d nam %d co 31 ngay\n",t,n);
}
printf("\nBan muon tiep tuc? 1 de tiep tuc, 0 de dung: ");
scanf("%d", &k);
if(k) return main();
}
Bài 8 Viết chương trình tính tiền được lĩnh của một nhân viên khi biết số ngày công, lương
tháng và quy định như sau:
- Nếu ngày công là 26: hưởng đúng lương tháng
- Nếu ngày công lớn hơn 26: mỗi ngày thêm có đơn giá 50.000 đồng
- Nếu ngày công bé hơn 26: mỗi ngày nghỉ bị trừ 30.000 đồng
Gợi ý
Sử dụng hàm if, khai báo 2 biến ngay_cong (số nguyên), tien_luong
Trang 11
Bài 8.1 Lập trình đọc từ bàn phím một số nguyên n (1 n 10) rồi đưa ra từ tiếng Anh
của số đó Ví dụ: nếu gõ vào 7 thì đưa ra 7 seven
Gợi ý trả lời
- Nhập n thỏa điều kiện (1 n 10): sử dụng nhãn để lặp lại việc nhập khi điều kiện
còn sai
- Sử dụng cấu trúc switch…case
#include<stdio.h>
#include<conio.h>
main()
{
int a;
ll: printf("Nhap a =");
scanf("%d", &a);
if (a>=10)
goto ll; //sử dụng nhãn và lệnh nhảy goto
if (a<=0)
goto ll;
switch (a)
{
case 1: printf("One"); break; case 2: printf("Two"); break; case 3: printf("Three"); break; case 4: printf("Four"); break; case 5: printf("Five"); break; case 6: printf("Six"); break; case 7: printf("Seven"); break; case 8: printf("Eight"); break; case 9: printf("Nine"); break; case 10: printf("Ten"); break; default: printf("Ban phai nhap so tu 1 den 10"); }
getch(); } Bài 8.2 Nhập vào tháng của một năm Cho biết tháng thuộc quý mấy trong năm Gợi ý trả lời - Sử dụng nhãn để lặp điều kiện nhập tháng thỏa mãn điều kiện (0<tháng<=12) - 1 năm có 4 quý: + Quý 1 từ tháng 1 đến tháng 3 + Quý 2 từ tháng 4 đến tháng 6 + Quý 3 từ tháng 7 đến tháng 9 + Quý 4 từ tháng 10 đến tháng 12 - Sử dụng cấu trúc switch…case
Trang 12
Bài 9 Viết chương trình nhập vào 2 số nguyên rồi đưa ra tổng, hiệu, tích, thương của hai
số đó? (Viết dưới dạng menu)
Gợi ý
- Đối với phép tính Thương của 2 số nguyên thì phải ép kiểu dữ liệu Ví dụ tính Thương 2
số a, b: Thuong = (float)a/b với ý nghĩa là lấy giá trị có kiểu số thực của phép chia trên Nếu chỉviết Thuong = a/b thì giá trị tính được sẽ là phần nguyên của phép chia đó
printf("Nhap a ="); scanf("%d", &a);
printf("Nhap b ="); scanf("%d", &b);
printf("\nLua chon phep tinh:\n");
printf("1 Tinh Tong\n");
printf("2 Tinh Hieu\n");
printf("3 Tinh Tich\n");
printf("4 Tinh Thuong\n");
case 1: printf("Tong 2 so: %d",Tong); break;
case 2: printf("Hieu 2 so: %d",Hieu); break;
case 3: printf("Tich 2 so: %d",Tich); break;
case 4: printf("Thuong 2 so: %.2f",Thuong); break; case 5: exit(0); // ham exit trong thu vienstdlib.h
Trang 13//lệnh lặp
Bài 10 Viết chương trình tính tổng S = 1 + 2 + … + n
Lời giải
#include<stdio.h>
#include<conio.h>
main() {
int i,tong,n,kq;
kq=0;
printf("Nhap n= ");
scanf("%d", &n);
for (i=1; i<=n; i++) kq+=i;
printf("Tong tu 1 den %d = %d", n,kq);
getch();
}
Bài 11 Nhập vào số n và kiểm tra xem n có phải là số nguyên tố hay không
Gợi ý
Số nguyên tố là số tự nhiên lớn hơn 1, chỉ có ước là 1 và chính nó
Lời giải
#include<stdio.h>
#include<math.h>
int main()
{
int n, i;
int SNT =0;
printf("\nNhap vao N: ");
scanf("%d",&n);
if (n > 1)
{
for (i = 2; i <= n/2; i++) if(n % i == 0) {
SNT = 1; break; }
}
if (SNT == 0) printf("%d la so nguyen to!",n); else printf("%d khong la so nguyen to.",n); } Bài 12 Viết chương trình tính tổng S = 1 + 3 + 5 +…+ (2n-1)
Trang 14
Bài 13 Viết chương trình in ra màn hình bảng cửu chương
Gợi ý
Sử dụng 2 vòng lặp for lồng nhau
Bài 14 Nhập vào số n và in ra các số nguyên tố nhỏ hơn n. Gợi ý Cách 1 #include <stdio.h> int main() { int n,i,j; printf("Nhap n= "); scanf("%d",&n); printf("\nCac so ngto nho hon %d la: ",n); for(i=2;i<n;i++) { for(j=2;i%j!=0;j++); if(j==i)printf("%d ",i); } printf("\n"); } Cách 2: sử dụng biến đếm
Bài 15 Viết chương trình nhập vào n sau đó tính tổng các số có giá trị lẻ, các số có giá trị
chẵn từ 1 đến n
Gợi ý
- Bước 1: Nhập vào số n
- Bước 2: Xét điều kiện n ≥ 1 ?
+ Nếu đúng là n ≥ 1, thì đi đến bước 3
+ Nếu không, nghĩa là n < 1, thì quay về bước 1
- Bước 3: Khởi tạo i = 1; Sl = 0, Sc=0
- Bước 4: Xét điều kiện i ≤ n ?
+ Nếu đúng i ≤ n, thì đi đến bước 5
+ Nếu không, nghĩa là i > n, thì đi đến bước 6
- Bước 5: Xét điều kiện i chia hết cho 2 ?
+ Nếu đúng, i/2==0, thì Sc+=i + Nếu sai, i/2≠0, thì Sl+=i Tăng i lên thêm 1 đơn vị
- Bước 6: Xuất tổng Sl, Sc
- Bước 7: Ngừng thuật toán
Trang 15Bài 16 Viết chương trình kiểm tra xem 1 số nhập vào từ bàn phím có đối xứng hay không.
Trang 16return n*giaithua(n-1);
}
int main()
{
int a;
printf("\nNhap vao so n can tinh giai thua: ");
scanf("%d",&n);
printf("\nGoi ham de quy: %d! = %u",n,giaithua(n));
getch();
}
Bài 18 Viết hàm tìm UCLN của hai số a và b Áp dụng: nhập vào tử và mẫu số của một
phân số, kiểm tra xem phân số đó đã tối giản hay chưa
Gợi ý
// kiểm tra xem phân số đã tối giản chưa
int KiemTra(int a, int b) // a/b
{
for(int i=2; i<=a && i<=b; i++) if(a%i==0 && b%i==0) return 0; // khong toi gian return 1; // toi gian }
main() {
int x,y; printf("Nhap x= "); scanf("%d",&x); printf("Nhap y= "); scanf("%d",&y); if(KiemTra(x,y)==1) printf("Phan so toi gian"); else printf("Phan so chua toi gian"); getch(); }
Bài 19 Viết chương trình in dãy Fibonacci bằng phương pháp dùng một hàm Fibonacci F
có tính đệ quy
Gợi ý:
long Fibo(int n)
{
if(n==0||n==1)
return 1;
else
return Fibo(n-1)+Fibo(n-2);
}
int main()
{
int i,n;
do{
Trang 18- Kiểm tra một số có là nguyên tố hay không.
- Kiểm tra một số chính phương
Lưu trữ các hàm trên vào file: ***.h và viết chương trình sử dụng các hàm trong thư việnnày?
Gợi ý
Để tạo thư viện, các hàm trong thư viện, thực hiện các bước sau:
Bước 1: Viết ra các hàm muốn đưa vào thư viện, cần khai báo prototype (nguyên mẫu) Bước 2: Lưu file vừa tạo với phần mở rộng dạng *.h
Bước 3: Copy file *.h vừa tạo vào thư mục include trong Dev-Cpp (thường là theo đường dẫn: 'C:\Program Files (Dev-Cpp\MinGW32\include')
#include <stdio.h>
int Max3so(int a,int b,int c);
int Min3so(int a,int b,int c);
Trang 19int NguyenTo(int a);
int ChinhPhuong(int a);
int Max3so(int a,int b,int c)
printf("\n Nhap vao lua chon: \n");
printf("\n1: Tim Max trong 3 so");
printf("\n2: Tim Min trong 3 so");
printf("\n3: Kiem tra so nguyen to");
printf("\n0: Thoat");
}
main()
Trang 20printf("Nhap a[%d]: ", i);
scanf("%d", &a[i]);
}
Trang 21//hàm xuấPt maLng
void XuatMang(int a[], int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
//đếPm có bao nhiếu sốP chẵVn trong maLng
int Demsochan(int a[], int n)
{
int dem = 0,i;
for (i = 0; i < n; i++)
if (a[i]%2==0)
dem=dem+1;
return dem;
}
int main()
{
int A[MAX],k;
NhapMang(A,&k);
printf("Noi dung cua mang la: "); XuatMang(A,k);
printf("Tong so phan tu co gia tri chan: %d",
Demsochan(A,k));
getch();
}
Yêu cầu viết hàm đếm các phần tử có giá trị lẻ trong mảng
b Gợi ý hàm đếm các số chia hết cho 3 và bé hơn 16. int Demdieukien(int a[], int n) { int dem = 0; for (int i = 0; i < n; i++) if (a[i]%3==0 && a[i]<16) dem=dem+1; return dem; } c.
d Gợi ý hàm đếm số lượng các số nguyên tố có trong mảng
//Định nghĩa hàm kiểm tra nguyên tố
Trang 22Bài 21 Viết chương trình nhập vào 1 dãy gồm k số nguyên, tìm:
a Giá trị lớn nhất trong k số đã cho
b Giá trị nhỏ nhất trong k số đã cho
//ham nhap mang
void NhapMang(int a[], int *n)
printf("Nhap a[%d]: ", i);
scanf("%d", &a[i]);
}}
//ham xuat mang
void XuatMang(int a[], int n)
//định nghĩa hàm tìm giá trị lớn nhất trong mảng
int LonNhat(int a[], int n)
{
Trang 23printf("Noi dung cua mang la: "); XuatMang(A,k);
printf("Gia tri lon nhat trong mang: %d", LonNhat(A,k)); getch();
}
b Tương tự viết hàm tìm giá trị nhỏ nhất trong mảng
Bài 22 Viết chương trình nhập vào mảng 1 chiều các số thực, tìm:
a Vị trí mà giá trị tại đó là giá trị nhỏ nhất trong mảng
b Vị trí mà giá trị tại đó là giá trị lớn nhất trong mảng
//ham nhap mang
void NhapMang(float a[], int *n)
//ham xuat mang
void XuatMang(float a[], int n)
Trang 24printf("Noi dung cua mang la: "); XuatMang(A,k);
printf("Vi tri co gia tri Min: %d", ViTriNhoNhat(A,k));
getch();
}
b Tương tự cho tìm vị trí mà giá trị tại đó là giá trị nhỏ nhất trong mảng.
Bài 23 Viết chương trình nhập vào mảng 1 chiều các số thực, kiểm tra:
a Trong mảng có tồn tại giá trị dương hay không
b Trong mảng có tồn tại giá trị âm hay không
Gợi ý:
a Định nghĩa hàm kiểm tra trong mảng có tồn tại giá trị dương hay không
int TonTaiDuong(float a[], int n)
Bài 24 Nhập vào 1 dãy gồm n số nguyên (0<n<100), sắp xếp dãy số theo thứ tự tăng dần và
in ra màn hình dãy trước khi sắp xếp và sau khi sắp xếp
Trang 2524.2 Yêu cầu viết chương trình trên sử dụng hàm:
Trang 26printf("Nhap a[%d]: ", i);
scanf("%d", &a[i]);
}}
if (a[i] > a[j]){
tam = a[i];
a[i] = a[j];
a[j] = tam;
}}
b Nhập vào giá trị x Viết hàm xoá phần tử có giá trị gần x nhất
c Viết hàm chèn phần tử có giá trị x vào vị trí đầu tiên của mảng
Trang 27if(A[i]<=x && x-A[i]<kc)kc=x-A[i];
if(A[i]>=x && A[i]-x<kc)
kc=A[i]-x;
}for( i=1;i<=n;i++)
if( A[i]-x==kc || x-A[i]==kc){
printf("Mang sau khi chen\n");
for (int i=1; i<=n;i++)
printf("A[%d]=%d\t ",i,A[i]);
}
Bài 26 Viết chương trình nhập vào một mảng 1 chiều gồm n phần tử
a Tính tổng các giá trị lẻ trong mảng
b Tính tổng các giá trị dương trong mảng
c Tính tổng các giá trị nguyên tố trong mảng
Gợi ý:
a Định nghĩa hàm tính tổng các giá trị lẻ trong mảng
int TongLe(int a[], int n)
Trang 28return s;
}
b Định nghĩa hàm tính các giá trị dương trong mảng
int TongDuong(int a[], int n)
c Định nghĩa hàm tính tổng các giá trị nguyên tố trong mảng
//Định nghĩa hàm kiểm tra nguyên tố
Bài 27 Nhập một dãy số X, sau đó tách dãy số vừa nhập thành hai dãy, dãy A gồm toàn số
chẵn, dãy B gồm toàn số lẻ, sắp xếp dãy A tăng dần, dãy B giảm dần In kết quả trên haidòng khác nhau
//mảng 2 chiều
Bài 28 Viết chương trình nhập vào và hiển thị ra màn hình một ma trận A các giá trị
nguyên kích thước nxn, với n được nhập từ bàn phím
Trang 29int a[max][max], c[max][max];
printf("Nhap cap cua ma tran vuong A(nxn): ");
if(a[i][j]==Max)
{
printf("a[%d][%d]\t",i,j); break;
}}
Trang 30for(j=0;j<n;j++)
printf("%d\t",c[i][j]);
printf("\n");
}}
Bài 31 Viết chương trình nhập vào và hiển thị ra màn hình giá trị vừa nhập của một ma trận
int a[max][max], c[max][max];
printf("Nhap so dong: ");scanf("%d",&n);
printf("Nhap so cot: ");scanf("%d",&m);
NhapMang(a,&n,&m);
Trang 31Bài 33 Cho biết các dòng có tổng lớn nhất trong ma trận Amxn
//Hàm tính dòng có tổng lớn nhất
int TongHang(int a[][100], int n, int m)
{
int tong=0, tongmax=0;
for(int i=0; i<n; i++)
Bài 34 Nhập vào một số x, kiểm tra số lần xuất hiện của x trong ma trận Amxn Nếu xkhông xuất hiện, hãy in ra số nguyên trong ma trận có giá trị gần giá trị của x nhất
Bài 35 Trong ma trận Amxn Hãy:
a Viết hàm tìm vị trí phần tử lớn nhất trong ma trận
b Viết hàm tìm vị trí phần tử nhỏ nhất trong ma trận
c Viết hàm tìm vị trí phần tử chẵn cuối cùng trong ma trận