2017-01-22 5 views
0

Я показываю Случайные и Уникальные Персонажи в массиве, которые я сделал с использованием кода, представленного в конце.Отображение значения ASCII для RAND Char

  • Я генерирую 26 случайных букв с значениями ASCII от 65 до 90 и сохраняя в массиве.
  • Затем я создаю случайную букву и перекрестно проверяю каждый элемент, уже присутствующий в массиве, для проверки уникальности.

Я знаю, что это очень неэффективно, однако это не проблема в моем случае.

Моя проблема: Как отобразить значение ASCII для каждого случайного символа? Я привык к отображению значения ASCII с помощью:

printf("ASCII value of %c = %d\n", c, c);

Однако, так как мои письма хранятся в array[y] я не смог сделать это успешно.

Мой код:

{ 
    int array[26]; 
    int x, y; 
    int count; 
    int i = 0; 
    char c; 
    srand(time(NULL)); 

    for (count = 0; count < 26; count++) 
    { 
     array[count] = rand() % 26 + 65; 
    } 

    while (i < 26) { 
     c = rand() % 26 + 65; 

     for (x = 0; x < i; x++) 
     { 
      if (array[x] == c) { 
       break; 
      } 
     } 
     if (x == i) { 
      array[i++] = c; 
     } 
    } 
    for (y = 0; y < 26; y++) { 
     printf(" %c = %d\n", array[y], c); 
    } 

    scanf_s("%d"); 
    return 0; 
} 
  1. Output связана
  2. хаотичность/Единственность рабочей
  3. ASCII значения только последнего письма генерироваться
+2

'printf ("% c =% d \ n ", array [y], array [y]);' – DyZ

ответ

2

Просто используйте array[y]:

printf(" %c = %d\n", array[y], array[y]); 
2

Две вещи:

Во-первых, чтобы решить проблему, нужно написать printf(" %c = %d\n", array[y], array[y]) вместо printf(" %c = %d\n", array[y], c).

Во-вторых, если вы храните буквы, я предлагаю объявить элементы array в качестве символов, например, использовать char array[26] вместо int array[26]. BTW: если вы заявляете его как char array[27] и где-то установленным array[26] = '\0', вы можете распечатать array напрямую, например. с printf("my letters: %s",array)