首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C语言练习

C语言练习
EN

Stack Overflow用户
提问于 2020-07-01 11:50:37
回答 4查看 98关注 0票数 0

这是我的另一个问题。我不明白那些代码。所提供的代码的输出是:

代码语言:javascript
运行
复制
N
O
R
c
u
y
z

我的问题是:

  1. a[i] > a[i + 1],他们是人物,不是数字。为什么我们要比较两个字符呢?这没有意义。或者我应该期望它们产生布尔值?
  2. printf ("%c\n", a[i] + 2);-> a[i] + 2 --似乎是一个接一个的数组元素顺序发生了变化。怎么做和为什么?我知道输出应该是7行单个字符。
代码语言:javascript
运行
复制
#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;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-07-01 12:03:19

基本上,当您存储字符时,它存储每个字符的ASCII值。因此,本质上,当您比较ai和ai+1时,它只是比较字符的ASCII值(这是一个小于128个的数值)。当您执行ai + 2时,也会发生同样的情况。它只是将2添加到ASCII值中,并使用该ASCII值打印该字符。由于您的程序似乎是排序的字符数组,第一个字符将是'L‘(大写L)。它将+2加到这上面,因此这就变成了'N‘。

票数 2
EN

Stack Overflow用户

发布于 2020-07-01 12:01:05

  1. 字符是用ASCII码表示的,所以它们是数字。看看ASCII表。
  2. a[i] + 2不影响订单。它会影响角色。再次,看看ASCII表。
票数 1
EN

Stack Overflow用户

发布于 2020-07-01 12:45:20

每个字符都有一个数值。您可以在这里阅读它:https://en.wikipedia.org/wiki/ASCII或查看将每个字符链接到其数值的表,您可以使用以下链接:http://www.asciitable.com/

祝你今天愉快!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62676193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档