2016-12-10 6 views

答えて

0

ここでは、ソリューションです:

#include <limits.h> 
#include <stdio.h> 

int a[] = { 1, 121, 222, 44, 451, 5510, 414 }; 

#define lengthof(a) (sizeof(a)/sizeof((a)[0])) 

int same_digit(int num) { 
    if (num < 0) { 
     if (num == INT_MIN) 
      return 0; 
     num = -num; 
    } 
    int digit = num % 10; 
    while ((num /= 10) != 0) { 
     if ((num % 10) != digit) 
      return 0; 
    } 
    return 1; 
} 

int main(void) { 
    const char *sep = ""; 
    printf("j={"); 
    for (size_t i = 0; i < lengthof(a); i++) { 
     if (same_digit(a[i])) { 
      printf("%s%d", sep, a[i]); 
      sep = ","; 
     } 
    } 
    printf("}\n"); 
    return 0; 
} 

出力:

j={1,222,44} 
0

あなたはこのような何か試すことができます配列[]、

#define SIZE_OF_ARRAY(_array) (sizeof(_array)/sizeof(_array[0])) 

int i; 
int j; 
int digit; 
int res[20] = { 0 }; 

bool sameDigit(int num) 
{ 
    digit = num % 10; 
    while (0 != num) 
    { 
     if ((num % 10) != digit) 
     { 
      return false; 
     } 
     num = num/10; 
    } 
    return true; 
} 

int main() 
{ 
    j = 0; 
    for (i=0; i<SIZE_OF_ARRAY(a); ++i) 
    { 
     if (sameDigit(a[i])) 
     { 
      res[j] = a[i]; 
      ++j; 
     } 
    } 
    return 0; 
} 
+1

あなたは、ファイル、また 'a.lengthを()' 'のres = {0}は、Cコードではありません含めるのを忘れ;' – chqrlie

+0

まず...無意味である、私は見当がつかない何あなたが話しているファイル... 二番目にありがとう、私は長さの部分を固定 最後に、配列を初期化することは無意味ではないので、良い練習です –

+0

あなたはここでCでプログラミングしていません。 OPは一致する要素を印刷したいので、 ''が必要と思われ、 'true'と' false'を使用するので、 ' 'も使用します。グローバル変数として 'i'、' j'、 'res'と' digit'を定義するのは**非常に**悪いスタイルです。 – chqrlie

1

を与えられた:

#include <stdio.h> 
#include <limits.h> 

int same_digit(int x); 

int 
main(void) { 
    int array[]={1,121, 222,44,451,5510,414}; 
    size_t arrsize = sizeof(array)/sizeof(*array), count = 0; 

    int j[arrsize], i; 

    for (i = 0; i < arrsize; i++) { 

     if (same_digit(array[i])) { 
      j[count++] = array[i]; 
     } 
    } 

    printf("j={"); 
    for (i = 0; i < count; i++) { 
     printf("%d", j[i]); 

     if (i != count-1) { 
      printf(","); 
     } 
    } 
    printf("}\n"); 

    return 0; 
} 

int 
same_digit(int number) { 
    int digit; 

    if (number < 0) { 

     if (number == INT_MIN) { 
      return 0; 
     } 
     number *= -1; 
    } 

    digit = number % 10; 
    while (number > 0) { 

     if (number % 10 != digit) { 
      return 0; 
     } 
     number = number/10; 
    } 
    return 1; 
} 

出力:

j={1,222,44} 
+0

と彼のコンパイラに依存して、彼は彼の関数で変数を宣言することができないかもしれません.. –

+0

@ I-V:どのような種類のコンパイラは関数で変数を宣言できませんか? – chqrlie

+0

"私のリーグ外"ですが、ここを見てください。http://stackoverflow.com/questions/288441/variable-declaration-placement-in-c –

関連する問題