【问题标题】:(C) Displaying multiple variables on the printf line, having some trouble(C) printf行显示多个变量,有点麻烦
【发布时间】:2013-09-14 21:18:58
【问题描述】:

我正在中途测试一个程序,并注意到 printf 将我存储的一些值显示为 0。特别是当我尝试使用 printf 在一个命令中显示它们时。他们单独工作正常,我已经检查过了。 这是我的代码:


#include <math.h>
#include <stdio.h>
#include <stdlib.h>

/* Initialization of variables */
double int1;
double int2;
double int3;
double int4;
double int5;

/* Initialization of calculated values */
double a_mean;
double g_mean;
double h_mean;
double st_dev;
n = 5; /* Total number of integers for summation use */

int main()
{
    printf("Enter 5 integers, pressing 'Enter' after each:\n"); /* Prompts user input */

        /* Scans in entered integer values (5) */
        scanf("%d", &int1);
        scanf("%d", &int2);
        scanf("%d", &int3);
        scanf("%d", &int4);
        scanf("%d", &int5);

                    /* Calculations */

        /* Output */
        printf("The five integers entered were:\n");
        printf("%d, %d, %d, %d, and %d", int1, int2, int3, int4, int5);    

    return 0;
    }

命令提示符输入:

输入 5 个整数,在每个整数后按“Enter”: 1 2 3 4 5


命令提示符输出:

输入的五个整数是: 1、0、2、0、3


顺便说一下,忽略中间缺少的 /* Calculations */ 部分,我只是在测试我目前的进度...... 但是看看我如何输入 1,2,3,4,5 并且只有一些值打印正确?他们在单独的 printf 行上工作。我做错了什么??

【问题讨论】:

    标签: c printf scanf


    【解决方案1】:

    虽然您将这些变量命名为int1 等,但它们的类型是double!因此,要么将它们声明为int,要么选择使用double

    改变

    scanf("%d", &int1);
    

    scanf("%lf", &int1);
    

    并给他们更好的名字。

    【讨论】:

    • 它们应该是基于证据优势的整数 :-) 这些文件级变量不是自动存储持续时间,它们是静态存储持续时间,所以它们初始化。我建议在您开始投反对票之前删除整个段落。
    • @paxdiablo 对,我没有注意到它们是全局变量...我会立即删除该注释:)
    • 啊,谢谢余浩,原来是这样。。只是从double变成了int。
    • 感谢大家的帮助!
    猜你喜欢
    • 2023-03-23
    • 2011-10-12
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2011-09-30
    • 1970-01-01
    • 2020-08-23
    相关资源
    最近更新 更多