Câu 1:Tính n giai thừa, với n nhập từ bàn phím.. Câu 7: Viết chương trình nhập vào mảng một chiều n phần tử số nguyên,kiểm tra xem có số nguyên tố hay không, nếu có thì xuất ra các số ng
Trang 1
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ VIỄN THÔNG
BÁO CÁO MÔN NGÔN NGỮ LẬP TRÌNH GVHD: Nguyễn Siêu Đẳng
SVTH: Nguyễn Minh Vỵ -11341040 Võ Văn Trung -11341054
LỚP : 113410
Trang 2
- Các bài tập dưới đây chúng em xin bỏ phần thư viện trên khi đưa ra word
Câu 1:Tính n giai thừa, với n nhập từ bàn phím.
Code:
#include <stdio.h> //thu vien can dung
#include <conio.h>//thu vien cho ham getch()
//chuong trinh chinh chinh
Trang 3tam=tinhgiaithua(n); //loi goi ham
printf("ket qua giai thua cua so da nhap la: %d",tam);
Trang 4//xu ly chuong trinh
while(a!=b) // so sanh 2 so a,b co khac nhau khong
printf("uoc so chung lon nhat cua 2 so la: %d",uscln);
printf("\nboi so chung nho nhat cua 2 so la: %d",bscnn);
// ham tim uscln va bscnn
void usclnbscnn(int a,int b,int &usc,int &bcnn) //dinh nghia ham bang cach truyen tham bien{
int c;
c=a*b;
while(a!=b)
{
Trang 5printf("uoc so chung lon nhat cua 2 so la: %d",uscln);
printf("\nboi so chung nho nhat cua 2 so la: %d",bscnn);
Trang 6printf("\nthuong cua 2 so la: %d",a/b);
printf("\ntich cua 2 so la: %d",a*b);
printf("\ntong cua 2 so la: %d",a+b);
printf("\nhieu cua 2 so la: %d",a-b);
//ham kiem tra so nguyen to
int ktsnt(int sonhapvao)
Trang 7else return 0; //tra ve de biet khong phai so nguyen to
kq=ktsnt(n);//goi ham tra ve gia tri luu vao kq de kiem tra
if(kq==0) printf("\nday khong phai la snt");
else printf("\nla so nguyen to");
getch();
}
Thực hiện:
Trang 8Câu 7: Viết chương trình nhập vào mảng một chiều n phần tử số nguyên,kiểm tra xem có số nguyên tố hay không, nếu có thì xuất ra các số nguyên tố,nếu không thì in ra câu thông báo Yêu cầu viết hàm hàm kiểm tra số nguyên tố.
Code:
#include <stdio.h>
#include <conio.h>
//ham kiem tra so nguyen to
int ktsnt(int sonhapvao)
if(tt==2) return 1;//gia tri tra ve de biet la so nguyento
else return 0;//tra ve de biet khong phai so nguyen to
// nhap n voi n khong am va phai nho hon 100
do { printf("xin moi nhap so phan tu mang: ");
scanf("%d",&n);
}while((n<0)||(n>100));
//chuuong trinh nhap mang
for(i=0;i<n;i++)
Trang 10Câu 8: Viết chương trình cho mảng 1 chiều n phần tử số nguyên,xuất ra màn hình giá trị lớn nhất
// nhap n voi n khong am va phai nho hon 100
do { printf("xin moi nhap so phan tu mang: ");
Trang 11Câu 9: Viết chương trình tìm giá trị nhỏ nhất trong mảng một chiều 5 phần tử ,không được nhập số âm, yêu cầu viết hàm tìm min.
Code:
#include <stdio.h>
#include <conio.h>
//ham tim min
void somin(int a[],int sophantu)
{
int i,min=a[0];
for(i=1;i<sophantu;i++){
if(min>a[i]) min=a[i];
}printf("so %d la so nho nhat trong mang",min);
Trang 12Thực hiện:
Câu 10: Chương trình nhập vào ngày, tháng năm, kiểm tra tính hợp lệ của ngày vừa
nhập,nếu hợp lệ thì in ra ngày trước và ngày sau của ngày tháng ta nhập vào.
Code:
# include<stdio.h>
# include<math.h> // thư viện toán
void main()
{int ngay, thang, nam, hople, hople2, ngay1,ngay2,thang1,thang2,nam1,nam2;
printf("moi ban nhap ngay ");
case 1 : case 3 : case 5: case 7: case 8 : case 10 :case 12 : hople=31 ; break ;
case 4 : case 6 : case 9: case 11: hople=30 ; break ;
case 2: if ((nam%4==0) && (nam%400==0 || nam%100!=0)) hople=29; else hople=28; break; default : printf ("\n ban nhap sai thang roi"); break;}
if (ngay>hople) printf("\n ngay khong hop le"); else printf("\n ngay hop le");
if ((ngay <=hople)&& (thang<=12))
{
Trang 13printf("\nthang ban vua nhap co %d ngay",hople);
case 1 : case 3 : case 5: case 7: case 8 : case 10 :case 12 : hople2=31 ; break ;
case 4 : case 6 : case 9: case 11: hople2=30 ; break ;
Trang 14Câu 11: Viết chương trình nhập số tiền nguyên n đồng, đổi ra xem có bao nhiêu tờ 10 đồng,5 đồng , 2 đồng và 1 đồng.
Trang 15int i,n,tam=0;
int a[100];// khai bao 1 chuoi la 100 vi tri de chua cac gia tri
// nhap n voi n khong am va phai nho hon 100
do { printf("xin moi nhap so phan tu mang: ");
// nhap n voi n khong am va phai nho hon 100
do { printf("xin moi nhap so phan tu mang: ");
scanf("%d",&n);
}while((n<0)||(n>100));
Trang 16//chuuong trinh nhap mang
//ham kiem tra so nguyen to
int ktsnt(int sonhapvao)
{
int i,tt=0;
Trang 17if(tt==2) return 1;//gia tri tra ve de biet la so nguyento
else return 0;//tra ve de biet khong phai so nguyen to
//nhap mang
for(i=0;i<n;i++){ printf("nhap phan tu thu %d: ",i);
scanf("%d",&a[i]);
}//xu ly chuong trinhfor(i=0;i<n;i++){ if(ktsnt(a[i])==1)//goi ham ktsnt va thuc hien phep cong tong=tong+a[i];
}printf("tong cac so nguyen to la: %d ",tong);
getch();
}
Thực hiện:
Câu 15: Viết chương trình nhập vào mảng 1 chiều n phần tử,xuất ra mảng vừa nhập tìm và in
ra số chẳn lớn nhất, lẽ lớn nhất, và nếu không có số lẽ,hoặc chẳn thì in ra thông báo.
Code:
Trang 18printf("\nSo le lon nha la: %d",a[i]);
//Tim va in ra so chan lon nhat neu kho co in ra thong bao
Trang 19Câu 16: Viết hàm tính tổng 2 số nguyên
Trang 21Câu 19: Viết hàm tìm số lớn nhất trong 2 số
Trang 22void maxmin(int a[],int n)
printf("so lon nhat la: %d",max);
printf("\nso nho nhat la: %d",min);
// nhap n voi n khong am va phai nho hon 100
do { printf("xin moi nhap so phan tu mang: ");
Trang 23// nhap n voi n khong am va phai nho hon 100
do { printf("xin moi nhap so phan tu mang: ");
printf("mang tang dan theo thu tu:");
Trang 24Câu 22: Viết chương trình nhập vào mảng 1 chiều n phần tử kiểu số nguyên, sắp xếp theo thứ
// nhap n voi n khong am va phai nho hon 100
do { printf("xin moi nhap so phan tu mang: ");
printf("mang giam dan theo thu tu:");
for(i=0;i<n;i++)
printf("\n%d",a[i]);
getch();
Trang 25//ham nhap mang
void nhapmang(int a[],int n)
// nhap n voi n khong am va phai nho hon 100
do { printf("xin moi nhap so phan tu mang: ");
scanf("%d",&n);
}while((n<0)||(n>100));
nhapmang(a,n);//loi goi ham nhap mang
printf("mang vua nhap la:");// xuat ra man hinh mang vua nhap
for(i=0;i<n;i++)
printf("\n%d",a[i]);
getch();
}
Trang 26//ham xuat mang
void xuatmang(int a[],int n)
// nhap n voi n khong am va phai nho hon 100
do { printf("xin moi nhap so phan tu mang: ");
Trang 27Câu 25: Viết chương trình nhập vào 4 số từ bàn phím, xuất ra màn hình số lớn nhất, thao tác được nhập lại.
float a,b,c,d,max1,max2,max;//khai bao so thuc
while(1) //bieu thuc luon dung,thuc hien lai tao tac
Trang 28Câu 26: Viết chương trình nhập vào mảng 1 chiều n phần tử kiểu số nguyên, xuất ra màn hình số lẽ riêng, số chẵn riêng.
// nhap n voi n khong am va phai nho hon 100
do { printf("xin moi nhap so phan tu mang: ");
//// xap sep chan,le ra 2 mang /////////////
printf("\ncac so chan la");
Trang 29// nhap n voi n khong am va phai nho hon 100
do { printf("xin moi nhap so phan tu mang: ");
/////// tach lay so chan////////////////////////////////
printf("\ncac so chan la");
Trang 30// nhap n voi n khong am va phai nho hon 100
do { printf("xin moi nhap so phan tu mang: ");
Trang 32Câu 29: Viết chương trình nhập vào mảng 1 chiều n phần tử kiểu số nguyên, xuất ra màn hình các số theo thứ tự tăng dần, số lớn nhất,số nhỏ nhất, mảng chẳn, mảng lẽ riêng Code:
//in ra tang dan
printf("\ncac so tang dan");
for(i=0;i<n;i++)
printf("\n%d",a[i]);
printf("\nso lon nhat la: %d",a[n-1]);
printf("\nso nho la : %d",a[0]);
////xap sep chan,le ra 2 mang
printf("\ncac so chan la");
Trang 33//xay dung ham tinh tong///
int tongmang(int a[],int n)
{
Trang 34#include <stdlib.h> //thu vien can thiet cho ham cap va giai phong bo nho
//chuong trinh chinh/////////
for(i=0;i<n;i++) {
printf("nhap vao phan tu thu %d: ",i);
Trang 35scanf("%d",(a+i));// a+i la doi so,la dia chi }
max=a[0]; //gan max bang a[0] de so sanh for(i=1;i<n;i++)
if(max<a[i])
max=a[i];
printf(" %d la so lon nhat trong mang",max);
}free(a); //giai phong bo nho cap phat con trogetch();
#include <stdlib.h> //thu vien can thiet cho ham cap va giai phong bo nho
//chuong trinh chinh/////////
for(i=0;i<n;i++) {
printf("nhap vao phan tu thu %d: ",i);
scanf("%d",(a+i));// (a+i) la doi so,la dia chi }
for(i=0;i<n-1;i++) for(j=i+1;j<n;j++)
Trang 36if(*(a+i)>*(a+j)) // *(a+i) la noi dung phan tu thu i {
tam=*(a+i);
*(a+i)=*(a+j);
*(a+j)=tam;
} printf("mang tang dan theo thu tu");
for(i=0;i<n;i++)
printf("\n%d",*(a+i));
}free(a); //giai phong bo nho cap phat con trogetch();
Trang 37if(*(a+i)<*(a+j)) // *(a+i) la noi dung phan tu thu i
printf("\nso nho nhat la: %d",*(a+5));
printf("\nso lon nhat la: %d",*(a)); // *(a) là phần tử thứ a[0]
printf("noi dung cua a[0] la: %d",*n);// phan tu thu 0
printf("\nnoi dung cua a[1] la: %d",*(n+1)); //phan tu thu 1
printf("\nnoi dung cua a[2] la: %d",*(n+2)); //phan tu thu 2
getch();
}
Trang 38//////////ham nhap mang///////
void nhapmang(int *a,int n)
//////////ham sap xep ////////
void sapxeptang(int *a,int n)
Trang 39if(x== NULL) //tra ve gia tri null,neu khong thanh cong
printf(" cap phat khong thanh cong");
else { //thuc hien chuong trinh ////
nhapmang(x,n); ///goi ham sapxeptang(x,n);///goi ham }
free(x);//giai phong bo nho getch();
{ printf(" xin moi nhap mot ten\n");
char s[100]; // khai bao mot bien chuoi 100 vi tri
gets(s); //nhap ten
puts(s); //xuat chuoi
getch();
}
Thực hiện:
Trang 40Câu 37: Viết chương trình nhập vào một chuỗi kí tự từ bàn phím, cho biết có bao nhiêu chữ
“a”,nếu không có thì in ra câu thông báo.
if(tam==0) printf("chuoi ban nhap khong co ky tu a");
else printf(" co tong cong %d ky tu a",dem);
Trang 42Câu 40: Viết chương trình nhập vào danh sách 5 người, in ra danh sách vừa nhập.
Code:
#include <stdio.h>
#include <conio.h>
#include <string.h> //thu vien chuoi
//*tao mot cau truc*//
Trang 43{struct sv lop1; //khai bao bien lop1 thuoc kieu cau truc sv
printf("nhap ho ten sinh vien\n"); /* de truy xuat toi cac phan tu ta su dung 'ten bien.ten truong'*/gets(lop1.hoten);
printf("nhap mssv\n");
gets(lop1.mssv);
printf("nhap diem thi mon NGON NGU LAP TRINH\n");
printf("nhap diem qua trinh sinh vien\n");
scanf("%f",&lop1.diemqt);
printf("nhap diem thi cua sinh vien\n");
scanf("%f",&lop1.diemthi);
lop1.diemtongket=lop1.diemqt*0.3+lop1.diemthi*0.7;
printf("diem tong ket sv la: %f",lop1.diemtongket);
if(lop1.diemtongket<5) printf("\nsinh vien phai hoc lai");
else printf("\nsinh vien dau");
printf("\nso ban nhap la: %f",so);
getch();
}
Trang 44Thực hiện:
Câu 43: Viết chương trình sử dụng cấu trúc Switch để xếp loại học sinh như sau:
Từ 0 đến 3 là kém, 4 là yếu, từ 5 đến 6 là trung bình, từ 7 đến 8 là khá, từ 9 đến 10 là giỏi Code:
#include <stdio.h>
#include <conio.h>
void main()
{
int diem; //diem nhap boi nguoi dung
printf(" nhap vao diem: ");
Trang 45int a[100], b[100],n,i,j;
printf("nhap so phan tu: ");
Trang 46int a[100] ,chan[100],le[100], j=0, i,n,t,k=0 ;
// nhap so duong khong nhap am
// nhap vao mang
for (i=0; i<n;i++)
Trang 48Câu 48: Viết chương trinh tìm các số có 3 chữ số với điều kiện :tích của 3 chữ số ấy bằng tổng 3 chữ số ấy.
printf("cac so co 3 chu so thoa a*b*c=a+b+c la:");
for(i=1;i<1000;i++) ///toi 999 la co 3 chu so
//ham kiem tra so nguyen to
int ktsnt(int sonhapvao)
Trang 49if(tt==2) return 1; //gia tri tra ve de biet la so nguyento
else return 0; //tra ve de biet khong phai so nguyen to
kq=ktsnt(n);//goi ham tra ve gia tri luu vao kq de kiem tra
if(kq==0) printf("\nday khong phai la snt");
else printf("\nla so nguyen to");
int n, tram, chuc, donvi;
printf("\nNhap vao mot so tu 100 - 999 : ");
printf("\nSo hang tram = %d", tram);
printf("\nSo hang chuc = %d", chuc);
printf("\nSo hang don vi = %d", donvi);
getch();
}
Trang 50printf("\n1 Hinh tam giac");
printf("\n2 Hinh tron");
Trang 51printf("\n3 Hinh vuong");
printf("\n4 Hinh chu nhat");
printf("\n\nNhap vao ba canh tam giac : ");
scanf("%d%d%d", &a, &b, &c);
printf("\nChu vi tam giac = %d", a+b+c);
printf("\nChu vi hinh tron = %f", 2 * M_PI * r);
printf("\nDien tich hinh tron = %f", M_PI * r * r);
printf("\nChu vi hinh vuong = %d", 4 * a);
printf("\nDien tich hinh vuong = %d", a * a);
Trang 52printf("\n\nNhap vao cac canh hinh chu nhat : ");
scanf("%d%d", &a, &b);
printf("\nChu vi hinh chu nhat = %d", 2 * (a+b));
printf("\nDien tich hinh chu nhat = %d", b * a);
Trang 54Câu 54: Viết chương trình nhập vào phần thực và phần ảo của 2 số phức A và B, xuất ra màn hình tổng, hiệu, tích , thương,của chúng Và argument,modul của số A.
Code:
#include <math.h>
#include <conio.h>
#include <stdio.h>
typedef struct tagcomplex {
float thuc, ao;
} complex;
complex tong(complex a, complex b)
{
complex c;
c.thuc = a.thuc + b.thuc;
c.ao = a.ao + b.ao;
c.thuc = a.thuc - b.thuc;
c.ao = a.ao - b.ao;
c.thuc = a.thuc*b.thuc - a.ao*b.ao;
c.ao = a.thuc*b.ao + a.ao*b.thuc;
tongbp = b.thuc*b.thuc + b.ao*b.ao;
c.thuc = (a.thuc*a.ao + b.thuc*b.ao)/tongbp;
c.ao = (a.ao*b.thuc - a.thuc*b.ao)/tongbp;
Trang 55printf("\nNhap he so thuc va phuc cua A : ");
scanf("%f%f", &a.thuc, &a.ao);
printf("\nNhap he so thuc va phuc cua B : ");
scanf("%f%f", &b.thuc, &b.ao);
printf("\nArgument cua a = %f", argument(a));
printf("\nModul cua a = %f", modul(a));
getch();
}
Thực hiện:
Trang 56Câu 55: Viết chương trình tím thứ ,khi nhập vào ngày,tháng năm Sử dụng cấu trúc để quản
long int number;
number = 1461 * funct1(y,m) / 4 + 153 * funct2(m) / 5 + d;
Trang 57printf ("Nhap vao mot ngay (dd mm yyyy), vd 12 03 1999 \n");
scanf ("%d %d %d", &date_1.day, &date_1.month, &date_1.year);
number_of_days1 = day_count (date_1.month, date_1.day, date_1.year);
Trang 58Câu 56: Viết chương trình cho phép nhập 2 mức giờ , bao gồm giờ,phút ,giây, cho mỗi mức giờ, sau đó tính tổng 2 mức giờ ấy lại.
int gio1, phut1, giay1, gio2, phut2, giay2, gio3 = 0, phut3 = 0, giay3;
printf("\nNhap vao gia tri chi gio thu nhat (hh:mm:gg): ");
scanf("%d:%d:%d", &gio1, &phut1, &giay1);
printf("\nNhap vao gia tri chi gio thu hai (hh:mm:gg): ");
scanf("%d:%d:%d", &gio2, &phut2, &giay2);
giay3 = giay1 + giay2;
Trang 59Câu 57: Viết chương trình tính số pi với sai số là 0,0001.
printf("\nSo PI tinh toan duoc la : %lf", PI);
printf("\nSo M_PI trong C = %lf", M_PI);
//ham giai thua
unsigned long giaithua(int n)