我是一个编程新手,自己编写了一个C语言程序,但是带入数字进行运算时发现结果是错误的,求解答?

#include <stdio.h>
int main() {
    int integer1, integer2;
    char ch = 'A', zh = 'K';
    double num1, num2, num3;
    printf("Please enter the first integer: ");
    scanf("%d", &integer1);
    printf("Please enter the second integer: ");
    scanf("%d", &integer2);
    printf("num1: ");
    scanf("%f", &num1);
    printf("num2: ");
    scanf("%f", &num2);
    printf("num3:");
    scanf("%f", &num3);
    double W = num1 + num2 + num3;
    double Avervge = ('A' + 'K')/W;
    double Q = (integer1 + integer2 + W)/2.;
    printf("Avervge is %d.\n", Avervge);
    printf("Q is %f.\n", Q);
    return 0;
    }
阅读 4k
2 个回答

你上一个问题我已经看到了。首先我想说的是,这跟幼稚没有关系,谁都是从新手过来的。

但是:

先不说代码的排版,但从问题来讲,你说结果是错的,也就是不合你的预期,那你总得把你的预期告诉回答问题的人呐,否则回答问题的人怎么知道你想要什么样的结果

C 语言中在数据的问题上, 很严重的就是类型自动转换的问题. 把 double 类型的值赋给 float 类型的变量, 那么最终得到的 float 类型的数据就很有问题. 对于这种问题,编译期一般会警告的, 对于警告最好消除掉.

这是改好的代码, 主要问题在: scanf那里的格式串为lf,而不是f, 因为num1double类型.

#include<stdio.h>
int main() {
    int integer1, integer2;
    char ch = 'A', zh = 'K';
    double num1, num2, num3;
    printf("Please enter the first integer: ");
    scanf("%d", &integer1);
    printf("Please enter the second integer: ");
    scanf("%d", &integer2);
    printf("num1: ");
    scanf("%lf", &num1);
    printf("num2: ");
    scanf("%lf", &num2);
    printf("num3: ");
    scanf("%lf", &num3);
    double W = num1 + num2 + num3;
    double Avervge = ('A' + 'K') / W;
    double Q = (integer1 + integer2 + W) / 2.;
    printf("Avervge is %f.\n", Avervge);
    printf("Q is %f.\n", Q);
    return 0;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进