这是我的另一个问题。我不明白那些代码。所提供的代码的输出是:
N
O
R
c
u
y
z我的问题是:
a[i] > a[i + 1],他们是人物,不是数字。为什么我们要比较两个字符呢?这没有意义。或者我应该期望它们产生布尔值?printf ("%c\n", a[i] + 2);-> a[i] + 2 --似乎是一个接一个的数组元素顺序发生了变化。怎么做和为什么?我知道输出应该是7行单个字符。#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;
}发布于 2020-07-01 12:03:19
基本上,当您存储字符时,它存储每个字符的ASCII值。因此,本质上,当您比较ai和ai+1时,它只是比较字符的ASCII值(这是一个小于128个的数值)。当您执行ai + 2时,也会发生同样的情况。它只是将2添加到ASCII值中,并使用该ASCII值打印该字符。由于您的程序似乎是排序的字符数组,第一个字符将是'L‘(大写L)。它将+2加到这上面,因此这就变成了'N‘。
发布于 2020-07-01 12:01:05
a[i] + 2不影响订单。它会影响角色。再次,看看ASCII表。发布于 2020-07-01 12:45:20
每个字符都有一个数值。您可以在这里阅读它:https://en.wikipedia.org/wiki/ASCII或查看将每个字符链接到其数值的表,您可以使用以下链接:http://www.asciitable.com/。
祝你今天愉快!
https://stackoverflow.com/questions/62676193
复制相似问题