Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Bài tập C | Đếm số các chữ số

  1. #1
    Ngày gia nhập
    04 2009
    Bài viết
    13

    Mặc định Bài tập C | Đếm số các chữ số

    Có 2 bài tớ đang bí là:
    1.
    Đếm số lượng chữ số lớn nhất trong n. VD: n=48180 --> output: 2

    2.
    Đếm số lượng chữ số đầu tiên trong n. VD: n=47441 --> output: 3

    Cám ơn các bạn rất nhiều

  2. #2
    Ngày gia nhập
    02 2009
    Nơi ở
    105 Lô P c/c ngô gia tự P.02 Q.10 TP.hcm
    Bài viết
    37

    Mặc định Code đếm số các chữ số

    C Code:
    1. #include<stdio.h>
    2. void nhap(int &n)
    3. {
    4.     do
    5.     {
    6.         printf("\n moi nhap so tu nhien N =");
    7.         scanf("%d",&n);
    8.         if(n<=0)
    9.             printf("\n nhap sai moi nhap lai");
    10.     }while(n<=0);
    11. }
    12. int demsochusocuaN(int n)
    13. {
    14.     int dem=1;
    15.     while(n!=0)
    16.     {
    17.         if(n>9)
    18.         {
    19.             n=n/10;
    20.             dem++;
    21.         }
    22.         else
    23.         {
    24.             n=0;
    25.             dem=dem;
    26.         }
    27.     }
    28.     return dem;
    29. }
    30. int chuc(int n)
    31. {
    32.     int u=1;
    33.     if(n<=9)
    34.     return 1;
    35.     else
    36.     {
    37.         for(int i=1;i<demsochusocuaN(n);i++)
    38.             u=u*10;
    39.     }
    40.     return u;
    41. }
    42. int demsodau(int n)
    43. {
    44.     int a,d=0,t=0;
    45.     int b=n/chuc(n);
    46.     while(n!=0)
    47.     {
    48.         if(n>=10)
    49.         {
    50.             a=n/chuc(n);
    51.             t=t+a;
    52.             n=n-(a*chuc(n));
    53.             if(a==b)
    54.                 d++;
    55.             if(n==b)
    56.                 d++;
    57.         }
    58.         else
    59.         {
    60.             t=t+n;
    61.             n=0;
    62.         }
    63.     }
    64.     return d;
    65. }
    66. int MAXtrongN(int n)
    67. {
    68.     int a,MAX=0,t=0;
    69.     while(n!=0)
    70.     {
    71.         if(n>=10)
    72.         {
    73.             a=n/chuc(n);
    74.             t=t+a;
    75.             n=n-(a*chuc(n));
    76.             if(MAX<a)
    77.                 MAX=a;
    78.         }
    79.         else
    80.         {
    81.             if(MAX<n)
    82.                 MAX=n;
    83.             t=t+n;
    84.             n=0;
    85.         }
    86.     }
    87.     return MAX;
    88. }
    89.  
    90. int demchusoMAX(int n)
    91. {
    92.     int a,d=0,t=0;
    93.     int MAX=MAXtrongN(n);
    94.     while(n!=0)
    95.     {
    96.         if(n>=10)
    97.         {
    98.             a=n/chuc(n);
    99.             t=t+a;
    100.             n=n-(a*chuc(n));
    101.             if(a==MAX)
    102.                 d++;
    103.             if(n==MAX)
    104.                 d++;
    105.         }
    106.         else
    107.         {
    108.             t=t+n;
    109.             n=0;
    110.         }
    111.     }
    112.     return d;
    113. }
    114. void main()
    115. {
    116.     int n;
    117.     nhap(n);
    118.     printf("\n so chu so trong N la:%d",demsochusocuaN(n));
    119.     printf("\n dem so luon chu so dau tien trong N la:%d",demsodau(n));
    120.     printf("\n dem so luon chu so MAX trong N la:%d",demchusoMAX(n));
    121.     printf("\n");
    122. }

  3. #3
    Ngày gia nhập
    04 2009
    Bài viết
    13

    Hay thật, cám ơn bạn nhé! Đúng rùi!

    (Bạn học ở đâu mà giỏi thế nhỉ ngưỡng mộ quá đi ^^)

    À quên, còn 1 problem mà tớ thắc mắc lâu rồi, tiện thể hỏi lun: Yêu cầu là nhập NGUYÊN DƯƠNG n ( KHÔNG ÂM mà cũng KHÔNG PHẢI LÀ THẬP PHÂN nhé), sai nhập lại cho đúng.

    Ko âm thì tớ bik rồi, còn cái thập phân thì.... :(
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 04-05-2009 lúc 11:39 PM. Lý do: Vui lòng không spam 2 bài liên tục liền nhau trong 1 đề tài

  4. #4
    Ngày gia nhập
    11 2008
    Nơi ở
    www.freelancer.com
    Bài viết
    75

    Trích dẫn Nguyên bản được gửi bởi bk7million Xem bài viết
    À quên, còn 1 problem mà tớ thắc mắc lâu rồi, tiện thể hỏi lun: Yêu cầu là nhập NGUYÊN DƯƠNG n ( KHÔNG ÂM mà cũng KHÔNG PHẢI LÀ THẬP PHÂN nhé), sai nhập lại cho đúng.

    Ko âm thì tớ bik rồi, còn cái thập phân thì.... :(
    Bạn tham khảo nhá.dùng vòng for bỏ 3 đk và break :
    C Code:
    1.  for(;;)
    2.     {
    3.       printf("Nhap N= ");scanf("%f",&n);    // giả sử n kiểu float
    4.       if( n<0) printf("So ban nhap ko thoa man");
    5.       else break;
    6.     }
    Hiring someone to help someone else!

  5. #5
    Ngày gia nhập
    04 2009
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi MrChicKen_NAD Xem bài viết
    Bạn tham khảo nhá.dùng vòng for bỏ 3 đk và break :
    C Code:
    1.  for(;;)
    2.     {
    3.       printf("Nhap N= ");scanf("%f",&n);    // giả sử n kiểu float
    4.       if( n<0) printf("So ban nhap ko thoa man");
    5.       else break;
    6.     }
    Không được bạn ạ, bạn nói là "GIẢ SỬ N KIỂU FLOAT" thì trc đó mình khai báo biến INT N đúng ko? mà dù khai INT hay FLOAT ĐỀU ko dc.

    Code:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    	float n;
    	for(;;)
        {
    		printf("\nNhap N= ");
    		scanf("%f",&n);    // gia? su+? n kie^?u float
    		if (n<0) 
    			printf("So ban nhap ko thoa man");
    		else 
    			break;
        }
    	getch();
    }
    Hix, bạn có lời giải khác ko bạn

  6. #6
    Ngày gia nhập
    11 2008
    Nơi ở
    www.freelancer.com
    Bài viết
    75

    Mặc định Bài tập C | Đếm số các chữ số

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. void main()
    4. {
    5.     float n;
    6.     for(;;)
    7.     {
    8.         printf("\nNhap N= ");
    9.         scanf("%f",&n);    // gia? su+? n kie^?u float
    10.         if (n<0)
    11.             printf("So ban nhap ko thoa man");
    12.         else
    13.             break;
    14.     }
    15.     getch();
    16. }
    mình chạy đc mà !!
    Bạn nhập thử 1 số âm sem
    nó sẽ bắt bạn nhập lại cho đến bao h nhập số dương thì thui
    Hiring someone to help someone else!

  7. #7
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Về vần đề nhập số dương thì MrChicKen_NAD sai vì chưa xét số không.
    Còn nhập số thập phân thì dùng cách ép kiểu xem.
    Code:
    float n;
    do
    {
          printf("nhap n=");
          scanf("%f",&n);
          if(n>0&&n==(int)n) break;/*dieu kien thoat vong lap*/
          else printf("sai roi, nhap lai");
    }while(1);/*vong lap vo tan*/
    Chú ý: phần thập phân không được nhập quá nhỏ.
    Đã được chỉnh sửa lần cuối bởi trungkien45 : 30-04-2009 lúc 05:00 PM.

  8. #8
    Ngày gia nhập
    02 2009
    Nơi ở
    105 Lô P c/c ngô gia tự P.02 Q.10 TP.hcm
    Bài viết
    37

    tôi hiêu y' bạn dzoi y' bạn là nhap thap phan thi` bao' loi chu' gì khong dc phếp nhâp số nguyên à vay muon float làm chung gian
    code ne` thu đi:
    Code:
    #include<stdio.h>
    void main()
    {
    	float n;int u;
    	while(1)
    	{
    		scanf("%f",&n);
    		u=n;
    		if(n/u!=1||n<0)
    			printf("nhap sai moi nhap lai");
    		else
    			break;
    	}
    	printf("\n%.2f",n);
    }

  9. #9
    Ngày gia nhập
    04 2009
    Bài viết
    13

    Code của 2 bạn trungkienphamvanlai đều đúng.

    Thanks so much
    Đã được chỉnh sửa lần cuối bởi bk7million : 01-05-2009 lúc 02:58 AM. Lý do: Sai chính tả

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn