Voici mon autre question.
Je ne comprends pas ces morceaux de code.
La sortie du code fourni est la suivante: Mes questions sont les suivantes: p>
a [i]> a [i + 1] code>
Ce sont des personnages, pas des chiffres. Pourquoi devrions-nous comparer deux personnages?
Cela n'a pas de sens. ou devrais-je m'attendre à ce qu'ils produisent une valeur booléenne? LI>
printf ("% c \ n", [i] + 2); code> ->
a [i] + 2 code>
Il semble que quelque chose se passe avec des ordres d'éléments de tableau un par un. Comment et pourquoi?
Je comprends que la sortie devrait être de 7 lignes de caractères uniques. Li>
OL>
#include <stdio.h>
int main (void)
{
char a[] = { 'w', 's', 'x', 'a', 'P', 'L', 'M' };
int i, tmp, flag;
do
{
flag = 0;
for (i = 0; i < 7; i++)
{
if (a[i] > a[i + 1])
{
tmp = a[i];
a[i] = a[i + 1];
a[i + 1] = tmp;
flag = 1;
}
}
}
while (flag == 1);
for (i = 0; i < 7; i++)
printf ("%c\n", a[i] + 2);
printf ("\n");
return 0;
}
4 Réponses :
A [i] + 2 code> n'affecte pas la commande. Cela affecte le personnage. Encore une fois, regardez la table ASCII. LI>
ol>
Fondamentalement, lorsque vous stockez des caractères, il stocke leur ASCII pour chaque personnage. Si essentiellement, lorsque vous comparez un [i] et A [i + 1], cela compare simplement les valeurs ASCII pour les caractères (qui est une valeur numérique inférieure à 128). La même chose arrive lorsque vous faites un [i] + 2. Cela ajoute simplement 2 à la valeur ASCII et imprime ce caractère avec cette valeur ASCII. Puisque votre programme semble trier la gamme de caractères, le premier personnage sera «L» (capitale L). Il ajoute le +2 à cela et donc cela devient 'n'. P>
Chaque caractère a une valeur numérique. Vous pouvez lire à ce sujet ici: https://fr.wikipedia.org/wiki/ascii Ou de voir la table qui relie chaque caractère à sa valeur numérique, vous pouvez utiliser le lien suivant: http: // www. ascitable.com/ . p>
Passez une bonne journée !!! p>
Le type Char code> est un type d'entier. Les caractères ont un codage numérique associé, et c'est ce qui est comparé. En ASCII, ce codage est
'A' == 65
'B' == 66
'C' == 67
Le code lit la fin de la mémoire tampon code> code> lorsque
i code> est 6 dans la première boucle.
@Turuudo où avez-vous trouvé ce mauvais code? Ne faites pas glisser les ordures ici
Plutôt que de déterminer ce code, vous feriez mieux de lire une introduction à la programmation C.
"Pourquoi devrions-nous comparer deux personnages? Cela n'a pas de sens" I> - pourquoi pas? Avez-vous jamais cherché un mot dans un dictionnaire ou un nom dans un répertoire?
Pourriez-vous le décrire en détail, s'il vous plaît?
@Turuudo, les caractères sont codés dans des valeurs 8 bits, par ex.
a code> est 65,
b code> est 66 (pour ASCII), etc., ils peuvent être comparés comme s'ils étaient
int code>, réellement en C Ils sont
int code>.
@Vladfrommoscow C'est mon article d'examen passé que je ne pouvais pas comprendre.
@Turuudo Au début, le code tente de trier la matrice de caractères à l'aide de la méthode de tri de bulles, puis de générer ses éléments avec le décalage 2 par rapport aux caractères donnés.
@ Storyteller-Normlandermonica. Parfois, je me réfère directement aux personnes plutôt que des livres ou des dictionnaires.
@Anastaciu merci
@Turuudo, de votre choix, notez également que
a [i] = A [i + 1]; code> sortira des limites du tableau.
@Turuudo au fait, êtes-vous d'Inde?
@Vladfrommoscow non, vous êtes de la Russie