首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C语言将+作为字符串添加?

如何使用C语言将+作为字符串添加?
EN

Stack Overflow用户
提问于 2021-12-20 03:27:21
回答 2查看 99关注 0票数 3

我试图从1-5生成数字,使用for循环并显示它们的和。我的目标是有这样一个输出:

1 + 2 + 3 + 4 + 5 = 15

但相反,我得到了输出:

+ 1 + 2 + 3 + 4 + 5 = 15

代码语言:javascript
复制
    #include <stdio.h>

    void main()
    {   
        int a, sum = 0;
        for (a = 1; a <= 5; a++) 
        { 
            printf("+\t%d\t",a);
            sum = sum + a;
        }
        printf("=\t%d", sum);       
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-20 03:37:03

每当输出由某个值分隔的列表时,就会经常遇到这种情况。问题是,您有5个值要输出,但只有4个分隔符。如果您没有做任何特殊的事情,那么您将输出5个分隔符,这正是在您的示例中发生的情况。即使您将分隔符移到值后面,也会有太多的分隔符。

我更喜欢这样做:

代码语言:javascript
复制
for (a = 1; a <= 5; ++a)
{
    if (a > 1) printf("\t+\t");
    printf("%d", a);
    sum += a;
}

我更喜欢这种方法,而不是在循环之外输出一些值,因为输出的内容通常更复杂,可能涉及额外的计算或函数调用,而且我不喜欢重复该代码。

所以,我只输出一个分隔符,如果我知道我要输出另一个东西。这意味着,为每个循环迭代输出一个分隔符,但第一个循环除外。

我还喜欢使用前缀样式,因为通常循环中第一项的条件比最后一项的条件更简单。它还与涉及一个标志的另一种方法兼容:

代码语言:javascript
复制
int first = 1;
for (a = 1; a <= 5; ++a)
{
    if (!first) printf("\t+\t");
    first = 0;
    printf("%d", a);
    sum += a;
}

还有许多其他方法可以看到这种模式的出现。而且可能有各种形式的优化,降低可读性。但这种方法很简单,很容易遵循。

票数 2
EN

Stack Overflow用户

发布于 2021-12-20 05:56:10

您可以将char类型的指针作为第一次迭代的分隔符分配给它,在打印第一个数字之后,将分隔符字符串分配给指针,以便在以后的迭代中在两个数字之间进行打印。

执行情况:

代码语言:javascript
复制
#include <stdio.h>

int main (void) {   
    int a, sum = 0;
    char * str = "";

    for (a = 1; a <= 5; a++) { 
        printf("%s%d\t", str, a);
        sum = sum + a;
        str = "+\t";
    }

    printf("=\t%d\n", sum);       
    return 0;
}

输出:

代码语言:javascript
复制
# ./a.out
1   +   2   +   3   +   4   +   5   =   15

附加信息:

  • 使用void作为main()函数的返回类型并不符合标准。int.

应该是main()函数的返回类型

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

https://stackoverflow.com/questions/70417109

复制
相关文章

相似问题

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