-1

我编写了这个 C++ 代码,它编译时没有错误,但是在我有错误之后。我怎样才能使这项工作?

int main() {
int a=0;
for(a=0;a<=9;a+=1)
{
cout<<a<<"\n";
char ssss[] = "hello";
ssss[1]=a;
cout<<ssss<<"\n";
}
return 0;
}

当前输出为:

在此处输入图像描述

4

2 回答 2

3

如果它不符合规范,则只有一个错误。而且,由于您没有提供关于它应该如何操作的规范,我们不得不猜测。

当您通过 将字符设置ssss[1]为整数值09,这不是'0'通过的字符'9',而是(至少在 ASCII 中),它是一些控制字符,例如9水平制表符。

这可能会使您的输出看起来很奇怪。

您可以清楚地看到这一点,对于 0,您得到的只是h(因为 0 是字符串终止符)。

对于 1 到 4 和 6,您会看到十六进制代码输出。5是ENQ角色,所以我不确定那在做什么。7 是 ASCII 响铃字符,因此您应该希望听到哔声,8 是退格,这就是为什么llo覆盖初始的h,而 9 是水平制表符,导致进一步的输出从下一个制表位开始。

如果要通过 使用字符 请将循环更改为:'0''9'for

for (a = '0'; a <= '9'; a++)

按照以下程序:

#include <iostream>

int main (void) {
    char str[] = "hello";
    for (int code = '0'; code <= '9'; code++) {
        str[1] = code;
        std::cout << code << ": " << str << '\n';
    }
    return 0;
}

输出:

48: h0llo
49: h1llo
50: h2llo
51: h3llo
52: h4llo
53: h5llo
54: h6llo
55: h7llo
56: h8llo
57: h9llo
于 2013-03-06T04:45:05.933 回答
1

这将执行并给出这样的输出

0 h 
1 hllo 
2 hllo 
3 hllo 
4 hllo 
5 hllo 
6 hllo 
7 hllo 
8 hllo 
9 h   llo

这是因为当 a = 0 时,它会在末尾分配一个空字符,因此输出仅为 h。并在 9 处放置一个\t(制表符),因为 9 的 ASCII 等同于制表符。

于 2013-03-06T04:49:25.343 回答