繁体   English   中英

程序[C数组]的问题

[英]Problems with a program [C arrays]

我和我的朋友正在尝试一起构建程序,但是似乎没有用。 我们俩都没有使用C的丰富经验,因此我们无法发现问题所在。任何建议或帮助将不胜感激! 抱歉有点尴尬的歌词吗?

[编辑]问题是当我们输入值时,会得到像4586368这样的荒谬数字。

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>

void main()
{
    int room[20] = {};
    int i;
    int rooms = 0;
    char option = 0;
    int lights = 0; 
    int hrsUsed = 0; 
    int Telly = 0;
    int TVWatt =0;
    int sumTV;
    int TVuse = 0;
    int Computer = 0;
    int compWatt = 0;
    int compUsed = 0;
    int compTotal;
    int kwH_lights;
    int fridge = 0;
    int washLoad = 0;
    int dryerLoad = 0, dishLoad = 0, cookLoad = 0;
    int showeruse = 0;
    int total_kWh;

    printf("Enter number of rooms");
    scanf_s("%d", &rooms);


        for(i=0;i<rooms;i++)
    {
        printf("input average wattage of lights");
        scanf_s("%d", &lights);
        lights=lights/1000;
        printf("input number of hours use/day (average)");
        scanf_s("%d", &hrsUsed);

        kwH_lights=((lights*hrsUsed)*365);

        printf("input number of TVs");
        scanf_s("%d", &Telly);
        printf("input average wattage");
        scanf_s("%d", &TVWatt);
        printf("input average use a day");
        scanf_s("%d", &TVuse);
        sumTV=((Telly*(TVWatt/1000))*TVuse)*365;
    }
        printf("Input number of fridge/freezer");
        scanf_s("%d",&fridge);
        fridge=(fridge*2)*365;
        printf("input number of Computers and/or video game consoles in the house");
        scanf_s("%d", &Computer);

        for(i=0;i<Computer;i++) {
            printf("input  wattage");
            scanf_s("%d", &compWatt);
            printf("input average hrs used/day");
            scanf_s("%d", &compUsed);
            compTotal=((compWatt/1000)*compUsed)*365; 
                    }


        printf("Input average number of washing machine loads /day");
        scanf_s("%d",&washLoad);
        washLoad=washLoad*365;
        printf("Input average number of clothes dryer loads/day");
        scanf_s("%d",&dryerLoad);
        dryerLoad=(dryerLoad*3)*365;
        printf("Input average number of dishwasher loads/day");
        scanf_s("%d",&dishLoad);
        dishLoad=(dishLoad*1.5)*365;
        printf("Input average cooking load/day");
        scanf_s("%d",&cookLoad);
        cookLoad=(cookLoad*7)*365;
        printf("Input average hrs/day of shower usage");
        scanf_s("%d",&showeruse);
        showeruse=(showeruse*7)*365;

        total_kWh=((kwH_lights)+(sumTV)+(fridge)+(compTotal)+(dryerLoad)+(dishLoad)+(cookLoad)+(showeruse));
        printf("Total= %d", &total_kWh);

}

我的第一步是更正第二个for循环{} ...修复此问题并再次询问。

[编辑]使用int值除以其他int(compwatt / 1000)来计算您的计算...您确定使用int的想法正确吗?

要么:

cookLoad=(cookLoad*7)*365;

为什么乘以7 AND 365? 平均/天不应该仅乘以365吗?

您应该更改此:

printf("Total= %d", &total_kWh);

对此:

printf("Total= %d", total_kWh);

所有其他整数变量也是如此。

您的代码中有很多错误:

  • 您打印了内存地址而不是结果值(如果您的变量是纯int请不要在printf使用&
  • 计算机for循环没有大括号(因此仅循环了printf语句)
  • 结果未汇总(在所有循环中,您刚刚覆盖了最后一个循环的输入)
  • rooms[]数组从未使用过-其他一些变量(可能的错误来源,如果您想使用它们而忘记了)
  • 与1.5相乘的结果将保留一个double dishLoad值-您应将其dishLoadintdishLoad

大胆的错误可能是一个,为什么您的值是错误的...另请注意:“洗衣机负载/衣物烘干机负载/洗碗机负载的平均数量”最好按周或按月查询...或应保持浮动关键点:因为我认识的每个人每天都不多次使用洗衣机和干衣机。 因此,现在您不能每周输入一次(这将是0.14的因数,但由于所有值都存储为int ,因此无法输入)。

这是固定所有内容的代码,我可以找到:

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

int main(int argc, char** argv){
  int i = 0;
  int rooms = 0;
  int lights = 0; 
  int hrsUsed = 0; 
  int Telly = 0;
  int TVWatt =0;
  int sumTV = 0;
  int TVuse = 0;
  int Computer = 0;
  int compWatt = 0;
  int compUsed = 0;
  int compTotal= 0;
  int kwH_lights = 0;
  int fridge = 0;
  int washLoad = 0;
  int dryerLoad = 0, dishLoad = 0, cookLoad = 0;
  int showeruse = 0;
  int total_kWh = 0;

  printf("Enter number of rooms: ");
  scanf_s("%d", &rooms);

  for(i=0;i<rooms;i++){
    printf("A few questions about room %d\n", i+1);
    printf("input average wattage of lights: ");
    scanf_s("%d", &lights);
    lights+=lights/1000;
    printf("input number of hours use/day (average): ");
    scanf_s("%d", &hrsUsed);
    kwH_lights+=((lights*hrsUsed)*365);
    printf("input number of TVs: ");
    scanf_s("%d", &Telly);
    printf("input average wattage: ");
    scanf_s("%d", &TVWatt);
    printf("input average use a day: ");
    scanf_s("%d", &TVuse);
    sumTV+=((Telly*(TVWatt/1000))*TVuse)*365;
  }
  printf("Input number of fridge/freezer: ");
  scanf_s("%d",&fridge);
  fridge=(fridge*2)*365;
  printf("input number of Computers and/or video game consoles in the house: ");
  scanf_s("%d", &Computer);

  for(i=0;i<Computer;i++){
    printf("A few questions about computer %d\n", i+1);
    printf("input  wattage: ");
    scanf_s("%d", &compWatt);
    printf("input average hrs used/day: ");
    scanf_s("%d", &compUsed);
    compTotal += ((compWatt/1000)*compUsed)*365;
  }

  printf("Input average number of washing machine loads/day: ");
  scanf_s("%d",&washLoad);
  washLoad=washLoad*365;
  printf("Input average number of clothes dryer loads/day: ");
  scanf_s("%d",&dryerLoad);
  dryerLoad=(dryerLoad*3)*365;
  printf("Input average number of dishwasher loads/day: ");
  scanf_s("%d",&dishLoad);
  dishLoad=(int)((dishLoad*1.5)*365);
  printf("Input average cooking load/day: ");
  scanf_s("%d",&cookLoad);
  cookLoad=(cookLoad*7)*365;
  printf("Input average hrs/day of shower usage: ");
  scanf_s("%d",&showeruse);
  showeruse=(showeruse*7)*365;

  total_kWh=((kwH_lights)+(sumTV)+(fridge)+(compTotal)+(dryerLoad)+(dishLoad)+(cookLoad)+(showeruse));
  printf("Total= %d\n", total_kWh);
  system("Pause");
  return 0;
}

希望对您有所帮助-如果您有任何疑问,请随时提出。

为了提高代码的可读性,您可以采用以下复合赋值运算符,

   Operator Name             Syntax    Meaning
-------------------------------------------------
Addition assignment         a += b    a = a + b 
Subtraction assignment      a -= b    a = a - b
Multiplication assignment   a *= b    a = a * b
Division assignment         a /= b    a = a / b

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM