【问题标题】:C Programming Arrays [closed]C编程数组[关闭]
【发布时间】:2021-08-28 20:52:54
【问题描述】:

代码的期望输出是:6.30 1.25 2 14.40 1 printf语句有一些错误,但我找不到。

代码是:

#include<stdio.h>
#define SZ 5

int main(void)
{
    int arg1[SZ] = { 3, 4, 7, 2, 9 };
    double arg2[SZ] = { 2.1, 3.2, 5.3, 7.2, 8.1 };
    char operand[SZ] = { 'm', 'd', 'r', 'm', 'r' };
    int i;
    for ( i = 0; i < SZ; i++)
    {
        switch (operand[i])
        {
        case 'm':
            printf("%d  ", arg1[i] * arg2[i]);
            break;
        case 'd':
            printf("%d  ", arg2[i] / arg1[i]);
            break;
        case 'r':
            printf("%.2lf  ", arg1[i] % arg2[i]);
            break;
        default:
            break;
        }           
    }
    printf("\n");
    return 0;
}

提前致谢。

【问题讨论】:

  • 你没有解释一个问题(printf中有一些错误)。有哪些错误?您遇到的具体问题是什么?您已经显示了预期的输出,但没有显示您得到的输出。您的问题标题也没有添加任何信息。
  • @KenWhite 我已经写过期望的输出是 6.30 1.25 2 14.40 1。但是输出不符合预期。
  • 好的,那么输出是什么?没有稻草,我们不能做砖。
  • 我要求您提供您得到的输出,以便我们知道不符合预期的输出是什么,你还没有提供它。这是您的帖子中缺少的相关细节。
  • 你真的应该了解format specifiers

标签: arrays c switch-statement output printf


【解决方案1】:
  • 您应该使用%f,而不是%d,来打印double
  • 交换除数和被除数。
  • % 运算符不能与 C 中的浮点数一起使用。

此代码产生预期的输出:

#include<stdio.h>
#define SZ 5

int main(void)
{
    int arg1[SZ] = { 3, 4, 7, 2, 9 };
    double arg2[SZ] = { 2.1, 3.2, 5.3, 7.2, 8.1 };
    char operand[SZ] = { 'm', 'd', 'r', 'm', 'r' };
    int i;
    for ( i = 0; i < SZ; i++)
    {
        switch (operand[i])
        {
        case 'm':
            printf("%.2f  ", arg1[i] * arg2[i]);
            break;
        case 'd':
            printf("%.2f  ", arg1[i] / arg2[i]);
            break;
        case 'r':
            printf("%d  ", (int)arg1[i] % (int)arg2[i]);
            break;
        default:
            break;
        }           
    }
    printf("\n");
    return 0;
}

【讨论】:

    猜你喜欢
    • 2015-02-14
    • 1970-01-01
    • 2016-03-16
    • 2023-03-04
    • 2022-06-15
    • 1970-01-01
    • 2011-06-30
    • 2011-02-25
    • 2010-09-18
    相关资源
    最近更新 更多