This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

Hiển thị các bài đăng có nhãn LTCB. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn LTCB. Hiển thị tất cả bài đăng

Thứ Năm, 24 tháng 3, 2016

Cách giải một số bài tập C về kiểu chuỗi ký tự

CÁCH GIẢI MỘT SỐ BÀI TẬP VỀ KIỂU CHUỖI 
1.Đếm có bao nhiêu khoảng trắng trong chuỗi. 
2.Nhập vào một chuỗi, hãy loại bỏ những khoảng trắng thừa trong chuỗi. 
3.Nhập vào hai chuỗi s1 và s2, nối chuỗi s2 vào s1. Xuất chuỗi s1 ra màn hình 
4.Đổi tất cả các kí tự có trong chuỗi thành chữ thường (không dùng hàm strlwr). 
5.Đổi tất cả các kí tự trong chuỗi sang chữ in hoa (không dùng hàm struppr). 
6.Viết chương trình đổi những kí tự đầu tiên của mỗi từ thành chữ in hoa. 
7.Viết chương trình đổi chữ xen kẻ 1 chữ hoa và 1 chữ thường. 
Ví dụ: nhập ABCDEfgh đổi thành AbCdEfGh 
8.Viết chương trình đảo ngược các kí tự trong chuỗi. 
Ví dụ: nhập ABCDE, xuất ra màn hình là:EDCBA 
9.Viết chương trình tìm kiếm 1 kí tự xem có trong chuỗi không, nếu có xuất ra vị trí của từ chứ kí tự đó. (Vd: xâu a là “ho chi minh”: nhập ‘m’=>kết quả là 3) 
10.Viết 1 chương trình đếm một kư tự xuất hiện bao nhiêu lần trong chuỗi.(vd:xâu a nhập là “ho chi minh”, nhập ‘i’ =>kq: 2) 
11.Nhập vào chuỗi s1 và s2, cho biết vị trí xuất hiện của chuỗi s2 trong s1. 
12.Viết chương trình tìm kiếm tên trong chuỗi họ tên. Nếu có thì xuất ra là tên này đă nhập 
đúng, ngược lại thông báo là đă nhập sai. 
13.Viết chương đảo vị trí của từ đầu và từ cuối. 
Ví dụ: nhập “bo an co” xuat ra “co an bo” 
14.Viết hàm cắt chuỗi họ tên thành chuỗi họ lót và chuỗi tên. 
Ví dụ: chuỗi họ tên là:”Nguyễn Văn A” cắt ra 2 chuỗi là chuỗi họ lót:”NguyễnVăn”,chuỗi tên là:”A” 
15.Nhập một chuỗi bất kỳ, sau đó hỏi người dùng cần tách bắt đầu từ đâu trong chuỗi trở về sau. 
Ví dụ: Nhập chuỗi S1:”Trường Đại Học Tôn Đức Thắng”. Người nhập muốn tách bắt đầu từ chữ “Tôn” thì sẽ xuất ra chuỗi “Tôn Đức Thắng” ra màn hình 
16.Viết hàm kiểm tra xem chuỗi có đối xứng hay không?. 
17.Viết hàm tra xem trong chuỗi có kí tự số hay không nếu có tách ra thành một mảng số riêng. 
18.Nhập một chuỗi bất kì, yêu cầu nhập 1 kí tự muốn xóa. Thực hiện xóa tất cả những kí tự đó trong chuỗi. 
19.Đổi các từ ở đầu câu sang chữ hoa và những từ không phải đầu câu sang chữ thường. 
Ví dụ: nGuYen vAN a đổi thành: Nguyen Van A 
20.Viết chương trình đảo ngược thứ tự các từ có trong chuỗi 
Ví dụ: Nhập: lap trinh bang ngon ngu c 
21.Xuất ra màn hình là: c ngu ngon bang trinh lap 
22.Cho chuỗi str, nhập vào vị trí vt và số kí tự cần xóa n, hăy xóa n kí tự tính từ vị trí vt trong chuỗi str. 
23Nhập vào chuỗi str, chuỗi cần chèn strInsert và vị trí cần chèn vt. Hăy chèn chuỗi strInser vào chuỗi str tại vị trí vt. 
23.Cho một xâu, nhập vào một từ ,viết chương trình, xoá từ đó trong xâu đã cho. 
24.Viết chương trình tìm kiếm xem ký tự nào xuất nhiện nhiều nhất trong chuỗi. 
25.Nhập 1 chuỗi bất kì, liệt kê xem mỗi ký tự xuất hiện mấy lần. 
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
    1
    int demkhoangtrang(char *s)
    {
    int d=0;
    while(strstr(s," ")!=NULL)
    {
    d++;
    s=strstr(s," ")+1;
    }
    return d;
    }
    //lam theo ham de quy
    // s=strstr(s," ");
    //if(s==NULL)
    //return 0;
    //else return 1+demkhoangtrang(s+1);
    2
    void xoakhoangtrang(char *s)
    {
    char *c=strstr(s," ");
     
    while(c!=NULL)
    {
    int t=strlen(s)-strlen©;
    for(int i=t;i<strlen(s);i++)
    s[i]=s[i+1];
    c=strstr(s," ");
    }
    if(s[0]==' ')
    s=s+1; //xoa khang trang dau chuoi
    int n=strlen(s);
    if(s[n-1]==' ')
    s[n-1]='\0';//xoa khoang trang cuoi chuoi
     
    cout<<s; //for(int i=0;i
    //cout<
     
    }
    3
    void noichuoi(char *a,char *b)
    {
    strcat(a,b);
    puts(a);
     
    }
    4
    void chuthuong(char *a)
    {
    for(int i=0;i<strlen(a);i++)
    if(a[i]>=65 && a[i]<=90)
    a[i]=a[i]+32;
    puts(a);
    }
    5
    void chuhoa(char *a)
    {
    for(int i=0;i<strlen(a);i++)
    a[i]=toupper(a[i]); //if(a[i]>=97 && a[i]<=122)
    puts(a); //a[i]=a[i]-32;
     
    }
    6
    void chuhoadau(char *s)
    {
    s[0]=toupper(s[0]);
    while(strstr(s," ")!=NULL)
    {
    s=strstr(s," ")+1;
    s[0]=toupper(s[0]);
    }
     
    }
     
    7
    void chuxenke(char *a)
    {
    int n=strlen(a);
    for(int i=0;i<n;i++)
    {
    if(i%2==0)
    if((int)a[i]>=97 && (int)a[i]<=122)
    a[i]=char((int)a[i]-32);
    if(i%2==1)
    if((int)a[i]>=65 && (int)a[i]<=90)
    a[i]=char((int)a[i]+32);
    }
     
    puts(a);
    }
    8
    void daochuoi(char *s)
    {
    puts(strrev(s));
     
    }
    9
    int vitri(char *a,char *b)
    {
    int kq,d=0;
    if(strstr(a,b)!=NULL)
    {
    kq=strlen(a)-strlen(strstr(a,b));
    for(int i=kq;i>=0;i--)
    if(a[i]==' ')
    d++;
    return d+1;
    }
    else return -1;
    }
    10
    int diemtu(char *a,char *b)
    {
    int d=0;
    while(strstr(a,b)!=NULL)
    {
    d++;
    a=strstr(a,b)+1;
     
    }
     
    return d;
    }
    11
    int vitri(char *a,char *b)
    {
    int d=-1;
    if(strstr(a,b)!=NULL)
    d=strlen(a)-strlen(strstr(a,b));
    return d;
    }
    12
    void timten(char *a,char *b)
    {
    int n=strlen(a);
    char *s;
    for(int i=n-1;i>=0;i--)
    if(a[i]==' ')
    {
    s=a+i+1;
    break;
    }
    if(strcmpi(s,b)==0)// strcmp==stricmp
    cout<<s;
    else
    cout<<"ban nhap sai ten\n";
    }
    13
    void daochuoi(char *s)
    {
     
    char t[50],r[50];
    int i,l;
    for(i=strlen(s)-1;i>=0;i--)
    if(s[i]==' ')
    break;
    strcpy(r,s+i+1);//tim dctu cuoi
    s[i+1]='\0';//xau s sau khi bo tu cuoi,co khoang trang o cuoi xau
    l=strlen(s)-strlen(strstr(s," ")); //tim vi tri khoang trang dau tien trong chuoi
    strcpy(t,s+l+1);//l la xau chau cac tu chinh giua
    s[l]='\0'; //hien tai la xau chua tu dautien
    strcat(strcat(strcat(r," "),t),s);//noi cac xau lai voi nhau*/
     
    puts®;
    }
    14
    void cathoten(char *s)
    {
    char *t;
    int i;
    for(i=strlen(s)-1;i>=0;i--)
    if(s[i]==' '&&s[i+1]!=' ')
    break;
    t=s+i+1;
    s[i]='\0';
    cout<<"ho lot: ";
    puts(s);
    cout<<"ho ten: ";
    puts(t);
     
    }
    15
    void timtu(char *a,char *b)
    {
     
    char *t=strstr(a,b);//vi tri xuat hien b dau tien trong chuoi a
    puts(t);
    }
    16
    bool ktdoixung(char *s)
    {
    char c[255];
    strcpy(c,s);
    if(strcmpi(s,strrev©)==0)
    return true;
    else return false;
     
    }
    17
    void tachso(char *s)
    {
    int a[100],j=0;
    for(int i=0;i<strlen(s);i++)
    if(s[i]>='0' && s[i]<='9')
    { a[j]=s[i];//ki tu kieu char chuyen thanh kieu int(vd:1=>49)
    j++;
    for(int t=i;t<strlen(s);t++)
    s[t]=s[t+1];
    i--;
    }
    puts(s);
    for(int i=0;i<j;i++)
    cout<<char(a[i])<<" ";
    }
    18
    void xoakitu(char *a,char b)
    {
    int n=strlen(a);
    for(int i=0;i<n;i++)
     
    if(a[i]==b)
    {
    for(int j=i;j<n;j++)
    a[j]=a[j+1];
    i--;
    n--;
     
    }
     
    cout<<a;
    }
    19
    void chuhoa(char *s)
    {
    s[0]=toupper(s[0]);
    for(int i=1;i<strlen(s);i++) //chua tim dc cach nao toi uu hon
    if(s[i]==' ')
    {
    s[i+1]=toupper(s[i+1]);
    i++;
    }
    else
    {
    if(s[i]>='A' && s[i]<='Z')
    s[i]=s[i]+32;
     
    }
    puts(s);
    }
    20
    void daothutu(char *s)
    {
    char c[255];
    c[0]='\0';//ham strcat noi chuoi tai vi tri NULL
     
    for(int i=strlen(s)-1;i>=0;i--)
     
    if(s[i]==' ')
    {
    strcat(strcat(c,s+i+1)," ");
    s[i]='\0';
     
    }
    strcat(c,s);
    puts©;
     
    }
    21
    void xoa(char *s,int vt,int n)
    {
    strcpy(s+vt,s+vt+n);
    puts(s);
    }
    22
    void chen(char *s,char *d,int vt)
    {
    char c[255];
    strcpy(c,s+vt);
    strcpy(s+vt,d);
    strcat(s,c);
    puts(s);
    }
    23
    void xoatu(char *s,char *c)
    {
    while(strstr(s,c)!=NULL)
    {
    int t=strlen(s)-strlen(strstr(s,c)),d=strlen©;
    if((s[t-1]==' '&& s[t+d]==' ')||(s[t-1]==' '&& t+d==strlen(s)))//truong hop tu giua va tu cuoi
    strcpy(s+t-1,s+t+d);// s+t-1 la khoang trang
    if(s[t+d]==' '&& t==0)//truong hop xoa tu dau tien
    strcpy(s,s+t+d+1);
    }
    puts(s);
    }
    24
    void kituxuathiennhieunhat(char *s)
    {
    int a[100],n=0;
    for(int i=0;i<(int)strlen(s);i++)
    {
    int d=1;
    for(int j=i+1;j<(int)strlen(s);j++)
    if(s[i]==s[j])
    { d++;
    for(int k=j;k<(int)strlen(s);k++)
    s[k]=s[k+1];
    j--;
     
    }
    a[n++]=d;
     
    }
    int max=a[0];
     
    for(int i=1;i<(int)strlen(s);i++)
    if(a[i]>max)
    max=a[i];
    for(int i=1;i<(int)strlen(s);i++)
    if(a[i]==max)
    cout<<"ki tu "<<s[i]<<" xuat hien nhieu nhat la "<<a[i]<<" lan\n";
     
    }
     
    25
    void demkitu(char *s)
    {
    int a[100],n=0;
    for(int i=0;i<(int)strlen(s);i++)
    {
    int d=1;
    for(int j=i+1;j<(int)strlen(s);j++)
    if(s[i]==s[j])
    { d++;
    for(int k=j;k<(int)strlen(s);k++)
    s[k]=s[k+1];
    j--;
     
    }
    a[n++]=d;
     
    }
    for(int i=0;i<(int)strlen(s);i++)
    cout<<"ki tu "<<s[i]<<" xuat hien "<<a[i]<<" lan\n";
     
    }

BT CHUỖI_LỜI GIẢI

CÂU 1

#include
#include
#include   //thư viện chuỗi

int main()
{
    char xau[30];
    printf("Nhap vao 1 chuoi: ");
    gets(xau);
    for(int i=strlen(xau)-1;i>=0;i--)  //strlen trả về độ dài của chuỗi
    {
        printf("%c",xau[i]);
    }
    getch();
}



CÂU2


#include
#include
#include

int main()
{
   char xau[50];
   printf("Nhap vao mot chuoi: ");
   gets(xau);
   int a=strlen(xau)-1;
   for(int i=strlen(xau)-1;i>=0;i--)
   {
      if(xau[i]==32 || i==0)
      {
         if(i==0)
         {
            printf(" ");
         }
         for(int j=i;j<=a;j++)
         {
            printf("%c",xau[j]);
         }
         a=i-1;
      }
   }
   getch();
}

CÂU 3

#include
#include
#include

int main()
{
    char xau[30];
    printf("Nhap vao mot chuoi: ");
    gets(xau);
    for(int i=0;i    {
        if(xau[i]!=32)
        {
            printf("%c",xau[i]);
        }
        else
        {
         for(int j=strlen(xau)-1;j>=i;j--)
         {
            if(xau[j]==32)
            {
               for(int k=j;k<=strlen(xau)-1;k++)
               printf("%c",xau[k]);
               break;
            }
         }
         break;
      }
    }
    getch();
}



CÂU 4

#include
#include
#include

int main()
{
    char xau[30];
    printf("Nhap vao mot chuoi: ");
    gets(xau);
    for(int i=0;i<=strlen(xau)-1;i++)
    {
      if(xau[i]!=32)
      {
          printf("%c",xau[i]);
      }
        else
      {
            printf("\n");
      }
    }
    getch();
}


CÂU 5
#include
#include
#include

char doc_so[50];
char *docso(int n)
{
   char doc[10][5]={"","Mot","Hai","Ba","Bon","Nam","Sau","Bay","Tam","Chin"};
   doc_so[0]=0;
   int donvi=n%10;
   n=n/10;
   int chuc=n%10;
   int tram=n/10;
   if(tram>0)
   {
      strcat(doc_so,doc[tram]);
      strcat(doc_so," Tram ");
   }
   if(chuc>0)
   {
      if(chuc==1)
      strcat(doc_so," Muoi ");
      else
      {
         strcat(doc_so,doc[chuc]);
         strcat(doc_so," Muoi ");
      }
   }
   if(donvi>0)
   strcat(doc_so,doc[donvi]);
   return doc_so;
}
int main()
{
   int n;
    printf("Nhap vao mot day so: ");
    scanf("%d",&n);
    if(n==0)
    {
      printf("Khong");
   }
   else
   {
      int tram=n%1000;
      n=n/1000;
      int ngan=n%1000;
      n=n/1000;
      int trieu=n%1000;
      int ty=n/1000;
      if(ty>0)
      {
         printf("%s Ty",docso(ty));
      }
      if(trieu>0)
      {
         printf(" %s Trieu ",docso(trieu));
      }
      if(ngan>0)
      {
         printf(" %s Ngan ",docso(ngan));
      }
      if(tram>0)
      {
         printf(" %s ",docso(tram));
      }
   }
   getch();
}




CÂU 6
 #include
#include
#include

int main()
{
    char xau[50];
    char kitukiemtra;
    int dem;
    printf("Nhap vao mot chuoi: ");
    gets(xau);
    printf("Nhap vao ki tu muon kiem tra: ");
    scanf("%c",&kitukiemtra);
    for(int i=0;i    {
        if(xau[i]==kitukiemtra)
        dem++;
    }
    if(dem==0)
    printf("Ki tu %c khong co trong chuoi",kitukiemtra);
    else
    printf("Ki tu %c xuat hien %d lan trong chuoi",kitukiemtra,dem);
    getch();
}



BT VỀ CHUỖI_ĐỀ


1) Nhập vào 1 chuỗi và xuất chuỗi đó ra theo chiều ngược lại:

VD Nhập vào tran van thoa xuất ra aoht nav nart

2) Nhập vào 1 chuỗi và xuất chuỗi đó ra theo chiều ngược lại:

VD Nhập vào tran van thoa xuất ra thoa van tran

3) Nhập vào họ và tên tách ra họ, tên;

VD Nhập vào tran van thoa xuất ra tran thoa

4) Nhập vào họ và tên xuất ra họ, tên đệm, tên mỗi từ 1 dòng;

VD Nhập vào tran van thoa xuất ra
tran
van
thoa


5) Nhập vào 1 dãy số và đọc dãy số đó.

VD: 123 đọc là một trăm hai mươi ba

6) Nhập vào 1 chuỗi sau đó nhập váo 1 từ và kiểm tra xem từ đó có xuất hiện trong chuỗi trên hay không, nếu có thì xuất hiện bao nhiêu lần.

VD Nhập vào tran van thoa. Nhập kí tự t --> có 2 lần

Thứ Tư, 17 tháng 2, 2016

50 BT C

Bài 1
Cho số nguyên dương N . Hãy cho biết N có bao nhiêu chữ số và chữ số lớn nhất của N.
Ví dụ , N = 5677889 có 7 chữ số , chữ số lớn nhất là 9
Bài 2
Tính gần đúng giá trị của Ln(x), 0<=x<=2 , với sai số e = 0.0001 , theo công thức :
Ln(x) = -(x-1) + [(x-1)2]/2 - [(x-1)3]/3 + … … + (-1)n*[(x-1)n]/n + …
(chú thíc công thức tổng quát : trừ một mũ n nhân với (x-1) mũ n tất cả chia cho n ).
Bài 3
Bài 4
Tìm và in lên màn hình tất cả các số nguyên dưong có 4 chữ số (trong phạm vi từ 1000 đến 9999) sao cho tổng các bình phương của các chữ số của nó bằng 25 .
Ví dụ , số N = 3004 có 3 chữ số là : 3 , 0 , 0 và 4 , và 32 + 02 + 02 + 42 = 25
hoandv_it
16-01-2007, 17:22
Bài 5
Nhập số N nguyên dương , tính :
a) . A = sqrt(1+ sqrt(2+ sqrt(3 + ….+ sqrt(n-1+sqrt(n))
b) . B = sqrt(2+ sqrt(2+ sqrt(2 + ….+ sqrt(2+sqrt(2))
Chú ý : có n dấu căn bậc hai !
Bài 6
Cho biết ngày , tháng , năm sinh của một người ; Hãy tính xem đó là ngày thứ mấy trong tuần . Chẳng hạn , sinh 7 tháng 11 năm 2005 là ngày thứ 2 ; sinh ngày 9 tháng 1 năm 2005 là ngày chủ nhật .
Bài 7
Cho số nguyên dương N , 10 < N < 1000 .
Tính tổng S của N số nguyên tố đầu tiên . Chẳng hạn , với N bằng 3 ta có tổng của 3 số nguyên tố đàu tiên là : S= 2 + 3 + 5 = 10 .
Bài 8
Cho dãy X= {x1 , x2 ,x3 … .. xn }được lưu trong file input.dat với tham số đầu tiên là số phần tử , các hàng tiếp theo là các phần tử , trong đó 1 < = n < = 1000 và xn thuộc R . Tìm số dương nhỏ nhất trong x .
hoandv_it
16-01-2007, 17:23
Bài 9
Cho dãy X= {x1 , x2 ,x3 … .. xn } trong đó 1 < = n < = 1000 và xn thuộc R . Sắp xếp X sao cho các số không âm đứng trước và được sắp xếp theo thứ tự không tăng ; các số âm đứng sau và được sắp xếp theo thứ tự không giảm .
Vd : Nếu X = { 5, -2 , 4 , -5 , 2 -1 , 9 , 0 -8 },
Cần sắp xếp thành : 9 5 3 2 -8 -5 -2 -1 , 0 .
Bài 10
Cho các số nguyên dương x1, x2 , .. xn ; trong đó 1< = n < = 100 và 1< = xi < = 200
Tìm BSCNN của chúng .
Vd : dãy 4 ,5 ,4 , 6, 1, 5, 8 có BSCNN là 120 .
Bài 11
Cho ma trận Am,n , 1< = m,n <= 100 và các phần tử A(i,j) thuộc R , (-10) mũ -38 <= A(i,j) <= 10 mũ 38 . , với mọi 1<= i <= m , 1<= j <= n . Hãy sắp xếp các phần tử của ma trận sao cho trên cùng một hàng , các phần tử không tăng theo chỉ số cột & trên cùng một cột các phần tử ko tăng theo chỉ số hàng .
Vd : Nếu ma trận là :
6 - 4 2
- 5 4 -2
3 - 2 1
Cần được sắp thành :
- 5 - 4 - 2
- 2 1 2
3 4 6
Bài 12
Cho ma trận Am,n , 1< = m,n <= 100 và các phần tử A(i,j) thuộc R , (-10) mũ -38 <= A(i,j) <= 10 mũ 38 . , với mọi 1<= i <= m , 1<= j <= n . Tìm phần tử nhỏ nhất trong ma trận có gí trị lớn hơn không .
hoandv_it
16-01-2007, 17:23
Bài 13
Xâu ký tự S là họ và tên của người Việt Nam đựơc viết bằng tiếng Việt , gồm các chữ cái không có dấu và ký tự trắng . Hãy xửa xâu ký tự này sao cho đầu và cuối không có ký tự trắng , giữa họ - đệm và tên có đúng một ký tự trắng ; các chữ cái đầu của họ - đệm – tên phải viết hoa , các chữ cái còn lại viết thường , sau đó tiến hành đổi tên lên đầu để sắp xếp .
Chẳng hạn , xâu nhập vào là “ trAn tHi pHuonG lIEn ” cần phải sửa thành là :”Lien Tran Thi Phuong”.
Bài 14
Cho xâu ký tự S . Hãy sửa xâu S sao cho đầu và cuối xâu không có ký tự trắng ; giữa hai từ có đúng một ký tự trắng ; trước các dấu chấm (.) dấu hai chấm (:) dấu phẩy (,) dấu chấm phẩy (;) chấm than (!) dấu hỏi (?) không có ký tự trắng , sau các dấu này phải có ký tự trắng , chữ cái đứng đầu câu phải viết hoa các từ còn lại viết thường . Chẳng hạn nếu S là câu “ cau nay , vietSai . chinh ta ” thì cần sửa là “Cau nay, viet sai. Chinh ta”.
Bài 15
Cho văn bản S được lưu trong file input1.dat có số phần tử trên một dòng không quá 200 ký tự . Đếm số lần xuất hiện của các ký tự có trong S . Đưa ra màn hình ký tự và số lượng của chúng theo sự giảm dần của số lượng các ký tự . Mỗi lần đưa ra 20 ký tự . Dùng các phím có mũi tên để xem về phía trước hoặc phía sau .
Bài 16
Cho hai xâu ký tự X & Y . Cho biết xâu X xuất hiện bao nhiêu lần trong Y và các vị trí xuất hiện của X trong Y . Chẳng hạn , nếu X=”PAS” và Y = “PASCAL.PAS” thì phải đưa X xuất hiện 2 lần tron Y , tại các vị trí 1 & 8
hoandv_it
16-01-2007, 17:23
Bài 17
Đổi số nguyên dương N từ cơ số 10 ra cơ số 2 . Vd , N=15 đổi thành 1111 , cơ số 16 vd : N=59 đổi thành 3B .
Bài 18
Nhập vào một mảng A1, A2 ,A3 .. .. An với n <100 .="" 0="" 100="" a="" br="" c="" ch="" cho="" g="" h="" in="" l="" m="" n="" ng="" nh="" nhau="" ph="" ra="" s="" sao="" t="" th="" tr="" y=""> Vd , từ mảng 9, 1 , 7 , 4 , 1 , 9 , 6 , 6 , 0 , 3 , 9 , 6 , cần đưa ra : 0 , 1 , 3 , 4 , 6 , 7 , 9.
Bài 19
Cho dãy số nguyên : d1,d2,..dn với n<200 .="" br="" d="" dl.dat="" ghi="" o="" p="" s="" t="" tin="" v="" y=""> Tìm số chẵn nhỏ nhất trong dãy và số lẻ lớn nhất trong dãy . Viết kết quả đó ra màn hình.
Bài 20
Cho hàm số f(x) = 1-Cosx3 (1 trừ cos xmũ3 ), xác định trên đoạn [-2 , 3] . Tính tích phân xác định của hàm f(x) trên đoạn [-2 , 3] theo công thức hình thang sau :
I = [ (y0+yn)/2 + y1 + y2 + … + y thứ n-1] * h
Trong đó , h = (b-a)/n và yk = F(xthứ k).
Bài 21
Cho số thực A < = 15 , tìm số n nhỏ nhất thoả mãn :
1 + ½ + 1/3 + 1/4 + .. .. + 1/n >A
Bài 22
Xâu ký tự S được gán sẵn trong chương trình . Cho S trượt trên màn hình ở dòng y0,trong một cửa sổ rộng r , từ cột x0 , với x0+r <80 .="" br=""> Bài 23
Cho hai số nguyên dương a,d cớ tới hàng trăm chữ số .
Viết chương trình tính a+b , a-b , a+b , a*b , a/b , a mod b , a div b .
hoandv_it
16-01-2007, 17:24
Bài 24
Đổi các số 0 , 0.5 , 1.0 , 1.5 ,,,, 30.5 thành chữ .
Chẳng hạn , số không đổi thành không chẵn , 1.5 đổi thành một rưỡi , 20.5 thành hai mươi rưỡi .
Bài 25
Cho text file FT có thể có tới 2000 dòng , mỗi dòng có không qúa 127 ký tự . Hãy đọc file này và hiển thị ra màn hình và sử dụng các phím chức năng mũi tên trái phải trên dưới >> để xem nội dung .
Bài 26
Cho 3 điểm A(xa,ya) , B(xb,yb) , C (xc.yc) và điểm M (xm,ym) . Nếu ABC là đỉnh của một tam giác , hãy cho biết vị trí tương đối của M so với tam giác ABC là ở trong , ngoài hay trên cạnh tam giác .
Bài 27
Viết chương trình tạo mẫu menu hai tầng : có menu ngang và với mỗi mục lại có menu dọc xuống .
Bài 28
Vẽ đồ thị hàm số y = f(x) xác định trên đoạn [a,b] , biết rằng a<0 .="" 3="" b="" br="" c="" ch="" chia="" f="" function="" h="" i="" khai="" kho="" m="" n="" ng="" nh="" o="" t="" to="" tr="" trong="" v="" vd="" x=""> Bài 29
Cho 3 điểm A(xa,ya) , B(xb,yb) , C (xc.yc) . Nếu ABC là đỉnh của một tam giác , hãy tính diện tích tam giác ABC và cho biết ABC có phải là tam giác vuông- cân- đều hay ko ?
Bài 30
Cho hai số nguyên dương a & b . Tính UCLN , BCNN cảu a & b .
hoandv_it
16-01-2007, 17:24
Bài 31
Cho hàn f(x) xác định , liên tục trên [a,b] và có f(a)*f(b) <0 .="" a="" b="" br="" c="" f="" h="" khai="" kho="" m="" n="" ng="" nghi="" nh="" o="" pt="" t="" tr="" x=""> Vd : f(x)=x*x*x + x*x + x +1 . và [-1 , 0] .
Bài 32
Một số nguyên gọi là đối xứng nếu viết các chữ số của nó theo thứ tự ngược lại ta sẽ nhận được chính số ban đầu . Ví dụ 212 là số đối xứng , còn 213 ko phải là số đối xứng .
Viết chương trình nhập từ bàn phím một số trong phạm vi từ -32000 đến 32000 và kiểm tra xem số nguyên này có đối xứng hay ko ?
Bài 33
Một xâu ký tự được gọi là đối xứng nếu viết các ký tự của nó theo thứ tự ngược lại ta sẽ nhận dc chính xâu ban đầu . Chẳng hạn , xâu “ABCDDCBA” là đối xứng , còn AbbA là ko đối xứng .
Viết chương trình nhập từ bàn phím một xâu ký tự và kiểm tra xem xâu này có đối xứng hay không ?
Bài 34
Viết chương trình nhập từ bàn phím một xâu kí tự S . Nhập tiếp từ bàn phím một từ X và kiểm tra xem từ X có nằm trong S hay ko ? Nếu có đưa ra vị trí đầu tiên xuất hiện , ngược lại thì đưa ra thông báo xem từ X có trong S hay không ?
>> Có thể thêm yêu cầu có bao nhiêu X trong S ??
Bài 35
Viết chương trình nhập vào liên tiếp các số nguyên cho đến khi số nhập vào là số 0 .
Viết ra màn hình tổng các số âm và tổng các số dương .
Bài 36
Viết chương trình nhập vào một xâu ký tự chỉ có các chữ cái và dấu cách . Nếu nhập sai thì yêu cầu phải nhập lại (yêu cầu kiểm tra từng ký tự khi nhập , nếu sai thông báo ngay bắt nhập lại ký tự đó đến khi kết thúc là ấn phím Enter ). Có nghĩa là nếu trong xâu nhập vào có ký tự ko phải là chữ cái hoặc dấu cách thì bắt buộc phải nhập lại . Hãy sửa xâu ký tự này sao cho tất cả các chữ cái là thường hoặc tất cả đều in hoa rồi in ra màn hình .
Vd : xâu nhập >> Cu Ho muon tuoi
>> Kết quả in ra là : cu ho muon tuoi or CU HO MUON TUOI
Bài 37
Viết chương trình nhập vào một số nguyên dương . Hãy kiểm tra xem số này có phải là số chính phương hay không (tức là có phải là bình phương của một số nguyên khác hay không ), tìm số chính phương lớn nhất bé hơn số nhập hiện tại nếu số nhập vào ko phải là số chính phương .
Bài 38
Viết chương trình nhập vào liên tiếp các ký tự từ bàn phím cho đến khi nhập phải chữ Q .
Đếm chữ cái “A” , “a” , và chữ cái “B” , “b” đã nhập vào >> Đếm riêng .
hoandv_it
16-01-2007, 17:24
Bài 39
Viết chương trình tính giá trị của tam thức bậc hai : f(x) = a*x*x + b*x +c . Giá trị các hệ số a,b và c được gán sẵn trong chương trình . Giá trị x nhập từ bàn phím . Viết ra màn hình giá trị của f(x) . Chương trình dừng khi giá trị của x nhập vào là số lớn hơn 100 .
Bài 40
Viết chương trình trong đó có gán sẵn toạ độ tâm O và bán kính r của một hình tròn . Nhập từ bàn phím toạ độ của điểm M bất kỳ (trên mặt phẳng) . Cho biết vị trí tương đối của M so với đưòng tròn >> trong ngoài hay trên đường tròn .
Bài 41
Cho ma trận A(mxn) mà mỗi phần tử của nó có giá trị 0 or 1 .
Viết chương trình tính tổng lớn nhất các số 1 liên tiếp trên một cột .
Bài 42
Viết chương trình tính giá trị của đa thức
P(x)=a0 + a1*X + a2*X*X +…+ a(n-1)*X^(n-1) + a(n) * X^n .
Trong đó giá trị của n và các hệ số a0,a1,.. nhập từ bàn phím .(1 Bài 43
Viết chương trình nhập một xâu ký tự và xác định từ có độ dài lớn nhất trong xâu .
Bài 44
Cho dãy X={‘Cụ’ , ‘Hồ’ , ‘Muôn’ , ‘Tuổi’}.
Hãy tạo cấu trúc động để lưu trữ X theo kiểu LIFO .(nhập sau ra trước)
Bài 45
Cho dãy X={‘Cụ’ , ‘Hồ’ , ‘Muôn’ , ‘Tuổi’}.
Hãy tạo cấu trúc động để lưu trữ X theo kiểu FIFO (nhập vào phát ra luôn) .
Bài 46
Hãy viết chương trình conlắc đơn dao động tuần hoàn .
Bài 47
Cho một file văn bản gồm các chữ cái hãy đọc file và thay thế các dãy ký tự liên tục bằng cặp ký tự bắt đầu bằng ký tự có mã ASCII lớn hơn +128 và tiếp đến là ký tự trong dãy lặp .Ví dụ : dãy AAAAA thay bằng chr(5+128)A.
Bài 48
Cho một file đã được mã hoá theo mô hình bài trên bao gồm các ký tự có mã ASCII bé hơn 128 nếu ký tự có mã ASCII lớn hơn 128 thì trừ nó đi 128 kết quả là số lần lặp của ký tự kế tiếp .
Hãy giải mã file này thành file nguyên thuỷ .
Bài 49
Nhập vào một chuỗi biểu thức toán học gồm các số các toán tử : ‘+’, ‘-‘ , và dấu ‘-’ và các dấu ‘(’, ‘)’ .tính giá trị biểu thức .
Vd : 7-(1+3) có giá trị là 3 .
Bài 51
Nhập vào một chuỗi biểu thức toán học bao gồm các dấu ‘*’, ‘/’,và dấu ‘-‘và các dấu ‘(’, ‘)’ . tính giá trị biểu thức . vd 12/(2*3) có giá trị là 6 .
Bài 51
Nhập vào một chuỗi biểu thức toán học bao gồm các dấu ‘+’, ‘-’, ‘*’, ‘/’,và dấu ‘(’, ‘) tính giá trị biểu thức .

Thứ Bảy, 13 tháng 2, 2016

Bài tập 48: Viết hàm tìm các số nguyên gồm 3 chữ số sao cho tích của 3 chữ số bằng tổng 3 chữ số

#include // CHECK TH NUMBER FUNCTION 
unsigned char checkTH(int n) 
{
 // Variable unsigned char tram, chuc, donvi, du, th; // Process
 tram = n/100; 
 du = n%100;
 chuc = du/10;
 donvi = du%10;
 if((tram*chuc*donvi)==(tram+chuc+donvi)) th = 1; else th = 0;
 // Return return th; 
}
 // SHOW TH NUMBER FUNCTION 
void showTH() {
 // Variable int i;
 // Process 
for(i=100;i<=999;i++) 
{
 if(checkTH(i)) { printf("%d ", i); 
}
   }
       }
 // MAIN FUNCTION 
int main()
 {
 // Output 
showTH();
 // End 
getch(); 
return 0; 
}

Một số bài tập về hàm trong C/C++


Đề bài:
      Tính F(x)
 Cho hàm F(x), x ≥ 0 được định nghĩa như sau:
 F(x) = x, nếu x ≤ 9  F(x) = F(S(x)), nếu x > 9 
 Trong đó S(x): tổng các chữ số của x.
 Yêu cầu: Hãy viết chương trình tính F(n!), với 1 <= n <= 500
Phân tích bài toán:
      Bài này khá đơn giản, chúng ta không cần phải suy nghĩ nhiều để tìm ra lời giải:

  1. Xây dựng hàm tìm tổng cách chữ số của một số nguyên
  2. Xây dựng hàm tìm giai thừa của một số
  3. Kết hợp kiểm soát dữ liệu đầu vào
Lời giải: 
Mã nguồn C:
//Tính F(x)
// Cho hàm F(x), x ≥ 0 được định nghĩa như sau:
// F(x) = x, nếu x ≤ 9
// F(x) = F(S(x)), nếu x > 9
// Trong đó S(x): tổng các chữ số của x.
// Yêu cầu: Hãy viết chương trình tính F(n!), với 1 <= n <= 500.
 #include  
 #include  
  char sumChar(int n);
  unsigned long giaiThua(char n);
  void main()
 {
   int n;
   char c, sum;
   do {
   do {
   printf("Nhap n (1 <= n <= 500): ");
   scanf("%d", &n);
   }
   while(n<1 n="">500);
   if(n<=9) sum= n;
   else sum= sumChar(n);
   printf("Ket qua la: F(S(%d))= %lu\n", n, giaiThua(sum));
   printf("Nhap q hoac Q de thoat\n");
   fflush(stdin);
   c=getch();
   }
   while(c != 'q' && c!= 'Q');
 }
  unsigned long giaiThua(char n)
 {  unsigned long temp=1;
   if(n==0) return false;
   for(char i=1; i<=n; i++)
   {  temp *=i;  }
   return temp;
 }
  char sumChar(int n)
 {
   char sum=0;
   while(n != 0)
   {
   sum+= n % 10;
   n= n/10;
   }
   return sum;
 }
Mã nguồn C++:
#include 
using namespace std;
char sumChar(int n);
unsigned long giaiThua(char n);

void main()
{
int n;
char c, sum;
do {
do {
cout<<"Nhap n (1 <= n <= 500): ";
cin>> n;
}
while(n<1 n="">500);
if(n<=9) sum=n;
else  sum= sumChar(n);
cout<< "Ket qua la: F(S(" << n << "))= " << giaiThua(sum) << endl;
cout<< "Nhap q hoac Q de thoat\n";
fflush(stdin);
c=getchar();
}
while(c != 'q' && c!= 'Q');
}

unsigned long giaiThua(char n)
{
unsigned long temp=1;
if(n==0) return false;
for(char i=1; i<=n; i++)
{
temp *=i;
}
return temp;
}

char sumChar(int n)
{
char sum=0;
while(n != 0)
{
sum+= n % 10;
n= n/10;
}
return sum;
}