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

Đề tài: Lập trình C | Liệt kê số có toàn chữ số lẻ

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    126

    Mặc định Lập trình C | Liệt kê số có toàn chữ số lẻ

    Mình đang code bài liệt kê tất cả các giá trị có toàn chữ số lẻ của mảng 1 chiều các số nguyên
    vd mang a các giá trị như sau:
    13
    1
    2
    357
    789
    kq là: 13 1 357
    đây là code của mình các bạn góp ý dùm mình 1 tí xem sai chổ nào nha
    Code:
    #include <stdio.h>
    int KiemTraToanLe(int k)
    {
    	int d;
    	while(k!=0)
    	{
    		d=k%10;
    		if(d%2==0)
    			return 0;
    		k=k/10;
    	}
    	return 1;
    
    }
    void LietKe(int a[],int n)
    {
    	for(int i=0;i<n;i++)
    		if(KiemTraToanLe(a[i])==1)
    			printf("%d  ",a[i]);
    }
    void main()
    {
    	int n;
    	int a[100];
    	printf("Nhap n: ");
    	scanf("%d",&n);
    	for(int i=0;i<n;i++)
    	{
    		printf("Nhap a[%d]: ",i);
    		scanf("%d",&a);
    	}
    	LietKe(a,n);
    }

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Có sai chỗ nào đâu cậu . Chán quá tặng cậu code C++ nè, mai mốt học tới thì đọc T_T :
    C++ Code:
    1. #include <iostream>
    2. #include <algorithm>
    3. #include <list>
    4.  
    5. bool IsAllOdd(int _snum){
    6.   int _factor;
    7.   while(_snum != 0){
    8.     _factor = _snum % 10;
    9.     if(!(_factor %2))
    10.       return false;
    11.     _snum = _snum / 10;
    12.   }
    13.   return true;
    14. }
    15.  
    16. int main(){
    17.   std::list<int> numbers;
    18.   numbers.push_back(123);
    19.   numbers.push_back(153);
    20.   numbers.push_back(122);
    21.   numbers.push_back(493);
    22.  
    23.   std::list<int>::iterator iss;
    24.   iss = find_if(numbers.begin(), numbers.end(), IsAllOdd);
    25.   if(iss != numbers.end())
    26.     std::cout << *iss << " ";
    27.   else
    28.     std::cout << "No found !";
    29.   return 0;
    30. }

  3. #3
    Ngày gia nhập
    10 2007
    Bài viết
    24

    Bạn ơi bạn mắc lỗi cực kỳ cơ bản đó nhé.Bạn rok-rook cũng chủ quan như bạn luôn.Hình như Mod này siêu wá rồi nên test chương trình bằng mắt luôn.Đùa thôi...sửa lại nè bạn in đậm nhé..
    Code:
    void main()
    {
    	int n;
    	int a[100];
    	printf("Nhap n: ");
    	scanf("%d",&n);
    	for(int i=0;i<n;i++)
    	{
    		printf("Nhap a[%d]: ",i);
    		scanf("%d",&a);
    	}
    	LietKe(a,n);
    }
    bạn scanf cái jì vậy?cả mảng a luôn àh.Hjhj.Tư tưởng của bạn đúng rồi nhưng mình có thêm một chút góp ý như sau:
    >>trong hàm KiemTraToanLe bạn ko nên đặt return 0 ở trong vòng lặp để ngắt ra (cần thì dùng lệnh breakthay vào đó ta nên sử dụng một biến logic(0,1) để ghi giá trị logic của nó ví dụ int isOK; xong rồi cuối cùng ta return (isOK)..Điều này đúng cú pháp thôi nhưng nếu bạn đặt return 0 như vậy bảo đảm chạy trên VC++ sẽ có warning ngay:"ý nghĩa là hàm ko kiểm soát đc giá trị mà nó return hay so gì gì đó)..tóm lại trong một hàm chỉ nên return một lần thôi(trừ khi xài hàm đệ quy).
    >>Bạn nên tạo thêm một hàm nhập và xuất mảng để tiện Input/Output luôn.giả sử lúc này tui muốn nhập thêm một mảng nữa để kiểm tra thì sao.lại vào main coding tiếp hả;Nếu mà module hóa Ctrình thì làm cho tận cùng luôn cho CTrình nó linh hoạt.
    Đã được chỉnh sửa lần cuối bởi khoadangnguyen : 09-03-2008 lúc 09:10 AM.

  4. #4
    Ngày gia nhập
    03 2008
    Bài viết
    126

    uhm mình nhầm chổ này rồi
    làm mải mà vẩn nhầm
    cảm ơn cậu nhé

  5. #5
    Ngày gia nhập
    03 2008
    Bài viết
    16

    Ban lam sai nhieu loi qua . minh sua lai bai ban lam mot it la dung thoi:



    Code:
    #include<stdio.h>
    #include<conio.h>
    int KiemTraToanLe(int k)
    {     int d;
    	while(k!=0)
    	{     d=k%10;
    		if(d%2==0)
    			return(0);
    		k=k/10;
    	}
    	return(1);
    
    }
    void LietKe(int a[100],int n)
    {    int i;
    	for(i=0;i<n;i++)
    		if(KiemTraToanLe(a[i])==1)
    			printf("%d  ",a[i]);
    }
    void main()
    {
    	int n,i;
    	int a[100];    clrscr();
    	printf("Nhap n: ");
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	{
    		printf("Nhap a[%d]: ",i);
    		scanf("%d",&a[i]);
    	}
    	LietKe(a,n);
    	getch();
    }




    ban hay so sanh voi bai minh lam xem sai o nhung cho nao nha

  6. #6
    Ngày gia nhập
    03 2007
    Bài viết
    179

    Mặc định Lập trình C | Liệt kê số có toàn chữ số lẻ

    mình góp ý là nên kiểm tra n khi nhập

Các đề tài tương tự

  1. Bài tập C viết mảng chương trình xuất số chính phương tại vị trí lẽ
    Gửi bởi javalue trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 05-06-2013, 03:27 PM
  2. Lập trình đa tiểu trình với VC++ như thế nào ?
    Gửi bởi ngocthach trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 10-11-2012, 03:31 PM
  3. cách chạy 1 chương trình trong 1 chương trình
    Gửi bởi BuithiHa trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 14-10-2012, 01:19 PM
  4. Trả lời: 11
    Bài viết cuối: 26-03-2012, 10:36 PM
  5. Hook TerminateProcess nhưng khi kill các tiến trình khác ngoài tiến trình mình định sẵn thì bị crash?
    Gửi bởi jxkhoapro2505 trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 0
    Bài viết cuối: 28-10-2010, 06:43 PM

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