C: Tìm các số thỏa a*a*a+b*b*b+c*c*c = n với n có chứa abc

Đề bài: Hãy tìm các số n <= 999, n có 3 ký số a, b và c sao cho a*a*a + b*b*b + c*c*c=n;



Cách 1:


#include <stdio.h>
#include <conio.h>
int main() {
int
m=10;
for
(int a=1;a<m;a++)
for
(int b=0;b<m;b++)
if
(a!=b)
for
(int c=0;c<m;c++)
if
(a!=c && b!=c){
int
n = a*a*a+b*b*b+c*c*c;
if
(n%10==c && (n/10)%10==b && (n/100)%10==a)
printf("%d\n",n);
}

getch();
}


Cách 2:

#include <stdio.h>

int
main() {
for
(int i=100;i<=999;i++)
{

int
c = i%10;
int
b = (i/10)%10;
int
a = (i/100)%10;
if
(a*a*a+b*b*b+c*c*c == i)
printf("%d\n",i);
}
}

C: Đọc ghi file chuyển số nguyên thành số nhị phân

Đề bài: Đọc 1 số nguyên thập phân N từ file input1.txt. Chuyển số N thành số nhị phân và ghi từng ký số nhị phân (từ trái sang phải) thành từng dòng từ trên xuống dưới trong file output1.txt, mỗi dòng một ký số nhị phân 0 hoặc 1.

Ví dụ:

File Input1.txt

File Output1.txt

Code giải:

#include <stdio.h>

int
main() {
FILE *fi,*fo;
int
n;
fi = fopen("input1.txt", "r");
fo = fopen("output1.txt","w+");
fscanf(fi,"%d",&n);
int
bin[100];
int
i=0;
while
(n>0){
bin[i]=(n%2);
n=n/2;
i++;
}

for
(int j=i-1;j>=0;j--)
{

int
d=(bin[j]+48);
fputc(d,fo);
fputc('\n',fo);
}

fclose(fi);
fclose(fo);
}


Một ví dụ về lập trình cấu trúc

#include <stdio.h>
struct SinhVien{
    int ms;
    char hoten[50];
};

void in(SinhVien sv){
 printf("%d - %s\n",sv.ms,sv.hoten);
}
void inDS(SinhVien *dsSV,int n){
  printf("In danh sach SV: \n");
  for(int i=0;i<n;i++){
      printf("%d/ ",i+1); in(dsSV[i]);
  }
}
void nhapSV(SinhVien &sv){
    printf("nhap ma so: ");
    scanf("%d",&sv.ms);
    fflush(stdin);
    printf("nhap ho ten: ");
    gets(sv.hoten);
}
int nhapDSSV (SinhVien *&dsSV){
    printf("Nhap bao nhieu sinh vien?");
    int n;
    scanf("%d",&n);
    dsSV = new SinhVien[n];
    for(int i=0;i<n;i++){
        printf("Sinh vien thu %d\n",i+1);
        nhapSV(dsSV[i]);
    }
    return n;
}

void HoanVi(SinhVien &a,SinhVien &b){
    SinhVien t = a;
    a = b;
    b = t;
}

void SapXep(SinhVien *&dsSV,int n){
    for(int i=0;i<n-1;i++){
        int minIndex = i;
        int minKey = dsSV[i].ms;
        for (int j=i+1;j<n;j++){
            if (minKey>dsSV[j].ms){
                    minKey = dsSV[j].ms;
                    minIndex = j;
            }
        }
        HoanVi(dsSV[i],dsSV[minIndex]);
    }
}

int main(){
   SinhVien *dsSV;
   int n = nhapDSSV(dsSV);
   inDS(dsSV,n);
   SapXep(dsSV,n);
   printf("Danh sach sau khi sap xep\n");
   inDS(dsSV,n);
   return 0;
}

Lập trình C++: Lấy địa chỉ IP của máy bằng lệnh system

Hầu như ai học lập trình căn bản C đều biết lệnh getch() để dừng màn hình. Sau này dùng Dev-CPP được thầy cô giới thiệu thêm 1 lệnh khác để dừng màn hình là system("pause"), hôm nay, tui xin được mạn phép giới thiệu thêm một khả năng của lệnh system nữa là lấy địa chỉ IP . Hãy gõ đoạn code sau vào chương trình và chạy thử xem nào.

#include<stdlib.h>

int
main()
{

system("C:\\Windows\\System32\\ipconfig");
return
0;
}

Kết quả chạy:


Bài tập Struct và Mảng

Đề bài:
1. Tạo cấu trúc để lưu thông tin Thí sinh gồm: SBD kiểu số nguyên, Họ tên kiểu chuỗi, Điểm thi môn 1 và điểm thi môn 2 là kiểu số thực.

2. Viêt hàm nhập danh sách thí sinh, kết quả trả về của hàm là số lượng thí sinh được nhập

3. Viết thủ tục in danh sách n thí sinh đầu tiên

4. Viết thủ tục sắp xếp thí sinh theo điểm tổng giảm dần. Biết điểm tổng = (Điểm 1 + Điểm 2) / 2

5. Viết hàm main demo các hàm, thủ tục đã viết ở trên.

Video nhập dữ liệu thí sinh để kiểm tra




Bài giải


#include <stdio.h>
#include <string.h>
struct ThiSinh{
int
SBD;
char
HoTen[50];
float
d1,d2;
};

int
NhapThiSinh(ThiSinh *&dsts){
int
n;
printf("Co bao nhieu thi sinh? ");
scanf("%d",&n);
dsts=new ThiSinh[n];
for
(int i=0;i<n;i++){
printf("Thi sinh thu %d:\n",i+1);
printf("- Nhap SBD: ");
scanf("%d",&dsts[i].SBD);
fflush(stdin);
printf("- Nhap Ho ten: ");
gets(dsts[i].HoTen);
printf("- Nhap Diem 1, 2 (cach nhau boi dau ,): ");
scanf("%f,%f",&dsts[i].d1,&dsts[i].d2);
}

return
n;
}

void
inDanhSach(ThiSinh *dsts,int n){
for
(int i=0;i<n;i++){
printf("%-8d",dsts[i].SBD);
printf("%-30s",dsts[i].HoTen);
printf("%-10g",dsts[i].d1);
printf("%-10g",dsts[i].d2);
float
kq=(dsts[i].d1+dsts[i].d2)/2.0;
printf("%-.2f",kq);
if
(kq>=5)
printf(" Dau");
else

printf(" Rot");
printf("\n");
}
}

void
HoanDoi(ThiSinh &a,ThiSinh &b){
ThiSinh t = a;
a=b;
b=t;
}

void
SapXep(ThiSinh *dsts,int n){
for
(int i=0;i<n-1;i++){
float
kq1=(dsts[i].d1+dsts[i].d2)/2.0;
for
(int j=0;j<n;j++){
float
kq2=(dsts[j].d1+dsts[j].d2)/2.0;
if
(kq1>kq2){
HoanDoi(dsts[i],dsts[j]);
}
}
}
}

int
main(){
ThiSinh *dsts;
int
slg = NhapThiSinh(dsts);
printf("Danh sach thi sinh:\n");
inDanhSach(dsts,slg);
printf("\n\nTOP 3 thi sinh diem cao nhat:\n");
SapXep(dsts,slg);
inDanhSach(dsts,3);

return
0;
}

Lập trình căn bản C: Thao tác mảng 2 chiều bằng ví dụ các phép toán trên ma trận

#include <conio.h>
#include <stdio.h>
#define max 100


/*Hàm nhập ma trận hệ số*/

void
NhapMaTran(float A[max][max], int m, int n, char ch) {
for
(int i = 0; i<m; i++)
for
(int j = 0; j<n; j++) {
printf("%c[%d][%d] = ",ch,i,j);
scanf("%f",&A[i][j]);
}
}

/* Hàm xuất ma trận*/

void
XuatMaTran(float A[max][max], int m, int n) {
for
(int i=0 ; i<m; i++){
printf("\n");
for
(int j=0 ; j<n; j++)
printf("%-4g",A[i][j]);
}
}


/*C = A+B*/

void
CongMaTran(float A[max][max], float B[max][max], float C[max][max], int m, int n) {
for
(int i = 0; i<m; i++)
for
(int j = 0; j<n; j++)
C[i][j] = A[i][j]+B[i][j];
}

/*A cap mxn * B cap nxp = C cap mxp*/

void
NhanMaTran(float A[max][max],float B[max][max], float C[max][max],int m,int n,int p){
for
(int i = 0; i<m; i++)
for
(int k = 0; k<p; k++) {
C[i][k]=0;
for
(int j = 0; j<n; j++)
C[i][k] = C[i][k]+A[i][j]*B[j][k];
}
}

/*Chuong trinh chinh*/

int
main() {
int
m,n,p;
float
A[max][max],B[max][max],C[max][max],D[max][max];
printf("Nhap m = ");
scanf("%d",&m);
printf("Nhap n = ");
scanf("%d",&n);
printf("Nhap p = ");
scanf("%d",&p);
printf("Nhap ma tran A cap %d x %d \n",m,n);
NhapMaTran(A,m,n,'A');
printf("Nhap ma tran B cap %d x %d \n",m,n);
NhapMaTran(B,m,n,'B');
printf("Nhap ma tran B cap %d x %d \n",n,p);
NhapMaTran(C,n,p,'C');
printf("\nMa tran A\n");
XuatMaTran(A,m,n);
getch();
printf("\nMa tran B\n");
XuatMaTran(B,m,n);
getch();
printf("\nMa tran C\n");
XuatMaTran(C,n,p);
getch();
printf("\nMa tran D = A+B\n");
CongMaTran(A,B,D,m,n);
XuatMaTran(D,m,n);
getch();
printf("\nMa tran D = A*B\n");
NhanMaTran(A,C,D,m,n,p);
XuatMaTran(D,n,p);
getch();
return
0;
}

Lập trình căn bản C: Đảo ngược các ký tự trong chuỗi



Đề bài: nhận vào một chuỗi các ký tự. Hãy đảo ngược các ký tự trong chuỗi.

Bài giải:

#include <string.h>
#include <stdio.h>

int
main()
{

char
hoten[80];
printf("nhap ho ten: ");
gets(hoten);
int
len = strlen(hoten);
for
(int i=len-1;i>=0;i--){
printf("%c",hoten[i]);
}

return
(0);
}

Lập trình căn bản C: Đảo ngược các từ chuỗi


Đề bài: Nhận vào một chuỗi ký tự. Hãy đảo ngược thứ tự các từ trong chuỗi đã nhập

Bài giải:

#include <string.h>
#include <stdio.h>

int
main()
{

char
hoten[80];
printf("nhap ho ten: ");
gets(hoten);
char
*token;
token = strtok(hoten, " ");
int
c=0;
char
mang[5][15];
while
( token != NULL )
{

strcpy(mang[c],token);
c++;
token = strtok(NULL, " ");
}

for
(int i=c-1;i>=0;i--){
printf("%s ",mang[i]);
}

return
(0);
}

Lập trình căn bản C: Tách họ, chữ lót, tên từ chuỗi họ tên


Đề bài: Có một chuỗi ký tự với ý nghĩa là họ tên một ai đó. Theo quy ước, từ đầu tiên trong chuỗi là họ, từ cuối cùng là tên, các từ ở giữa họ và tên là chữ lót. Hãy viết chương trình nhận vào một chuỗi họ tên và tách chuỗi thành các phần họ, chữ lót và tên

Đoạn code mẫu để tách các từ dựa vào token

#include <string.h>
#include <stdio.h>

int
main()
{

const
char str[80] = "This is - www.tutorialspoint.com - website";
const
char s[2] = "-";
char
*token;

/* get the first token */

token = strtok(str, s);

/* walk through other tokens */

while
( token != NULL )
{

printf( " %s\n", token );

token = strtok(NULL, s);
}


return
(0);
}


Bài giải:

#include <string.h>
#include <stdio.h>

int
main()
{

char
hoten[80];
printf("nhap ho ten: ");
gets(hoten);
char
*token;
token = strtok(hoten, " ");
int
c=0;
char
mang[5][15];
while
( token != NULL )
{

printf( " %s\n", token );
strcpy(mang[c],token);
c++;
token = strtok(NULL, " ");
}

printf("Ho : %s\n",mang[0]);
printf("Chu lot: ");
for
(int i=1;i<c-1;i++){
printf("%s ",mang[i]);
}

printf("\nTen: %s",mang[c-1]);
return
(0);
}

Lập trình căn bản C: Tổng chẵn, tổng lẻ


Đề bài: nhập vào số nguyên n. Nếu số n là

  • Số chẵn thì tổng S = 2 + 4 + 6 + ... + n
  • Số lẻ thì tổng      S = 1 + 3 + 5 + ....+ n

Bài giải:

#include <stdio.h>

int
main(void){
int
n;
printf("nhap n: ");
scanf("%d",&n);
int
s = 0;
for
(int i=n%2;i<=n;i=i+2)
s+=i;
printf("Tong S = %d",s);
}