C,如何将值存储在for循环中,是否可以在没有数组的情况下完成?

问题描述:

分配问:C,如何将值存储在for循环中,是否可以在没有数组的情况下完成?

程序必须计算房子 的表面,用户必须输入他的房间数量,然后程序必须要求每个房间的lenght和witdh。之后,程序必须显示房子的表面。没有提供公式,但房间的表面是长宽*宽。

我的应用程序的问题是,在for循环中,每个房间的所有长度和宽度的总和的值不会被记住。所以输出是错误的。 它可以在没有阵列的情况下完成吗?因为我还没有上过这个课,还有很多其他任务需要完成。 非常感谢。

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

main() 
{ 
int camere,lungime,latime,scamere,i,scamera,scameratotal,scasa,total; 


printf("Acest program calculeaza suprafata casei\n"); //this program lists the surface of the house 
printf("Cate camere are casa?\n"); // how many rooms do you have? 
scanf("%d",&camere); 

for(i=0;i<camere;i++) 
{ 

printf("Introduceti lungimea si latimea camerei %d\n",i); //enter the lenght and width of room %d 

scanf("%d %d",&lungime,&latime); 


scamera=lungime*latime; //surface of room %d is lenght*width 

printf("Suprafata camerei %d este %d\n",i,scamera); //states the surface of room %d (1 , 2 or 3 etc.) 


total = total + (lungime*latime); // total that i want the program to remember 
scasa=total*camere;     //surface of the house is total*number of rooms 


} 

printf("\nSuprafata casei este de %d metri",scasa); //the surface of the house , bad output , it's not total(sum of surfaces of each room)*number of rooms 
} 
+0

是的,它可以完成没有阵列。 – Sneftel 2014-11-06 14:58:55

+0

请缩进您的代码。 – 2014-11-06 15:03:08

+0

谢谢大家,最后我的配方没有了。 – 2014-11-06 15:44:05

声明另一个的int称为总

在你的for循环结束时更新总

total += lungime*latime; 

总在循环之后将在年底的总建筑面积

+0

试过了,在这里发布旧版本。它提供了不好的输出。 – 2014-11-06 15:04:37

+0

编辑代码,请看看。 – 2014-11-06 15:24:01

+0

'scasa = total * camere;''不需要。 printf在最后应该打印''total'' – Vorsprung 2014-11-06 16:57:38

int total = 0; 

for(i=0;i<camere;i++) 
{ 
//ask length 
//ask width 
total = total + (length * width); 
} 

display total 

编辑:

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

main() 
{ 
    int length = 0; 
    int width = 0; 
    int rooms = 0; 
    int total = 0; 

    printf("Acest program calculeaza suprafata casei\n"); 
    printf("Cate camere are casa?\n"); 
    scanf("%d", &rooms); 

    for(int i=0;i<rooms;i++) 
    { 
     printf("Introduceti lungimea si latimea camerei %d\n",i); 
     scanf("%d %d",&length,&width); 
     total = total + (length * width); 
    } 

    printf("Suprafata casei este de %d square meter", total); 
} 

如果这行不通,也许有在使用scanf函数的错误,但从来没有使用过

+0

试过了,它给出了不好的价值。 – 2014-11-06 15:18:43

+0

当你声明它时总是赋值,因为你永远不知道它存储在哪个内存空间中,如果这个内存空间是空的,并且给你的代码提供空间,在一行中声明10个变量是在中间丢失的最好方法的逻辑,也米*米=平方米;) – Charlie 2014-11-06 15:34:30

+0

@Charlie请在答案中提交格式化的代码。 – 2014-11-06 15:38:42

您的代码显示出你刚刚第一printf之前做初始化的变量计算未定义的行为。这里是你的代码与所有的变化解释:

#include <stdio.h> 
#include <stdlib.h> //unwanted header 

int main() //use int main 
{ 
    int camere,lungime,latime,scamere,i,scamera,scameratotal=0,scasa; //some unused variables here! 

    //scamera=lungime*latime; 
    //scameratotal+=scamera; Undefined behaviour here! 

    printf("Acest program calculeaza suprafata casei\n"); 
    printf("Cate camere are casa?\n"); 
    scanf("%d",&camere); 

    for(i=0;i<camere;i++) 
    { 

     printf("Introduceti lungimea si latimea camerei %d\n",i+1); //room numbers start from 1 not 0 
     scanf("%d %d",&lungime,&latime); 
     scamera=lungime*latime; 
     scameratotal+=scamera; // add each scamera 
     printf("Suprafata camerei %d este %d\n",i+1,scamera); //i+1 here too 
    } 

    //scamera=lungime*latime; 
    //scasa=scamera*camere; unwanted lines here! 

    printf("Suprafata casei este de %d metri",scameratotal); //i think you need to display total surface area 
    return 0; //main returns int 
} 
+0

请在答案中提交格式化的代码。 – 2014-11-06 15:39:05

+0

谢谢,我的配方没有了。 – 2014-11-06 15:44:22

+0

@MichaelWalz,我不知道为什么,但是当我在这个特定的答案中点击编辑时,OperaMini不会做任何事情。无论如何,现在我已经改进了我的电脑的格式。 – 2014-11-07 11:19:34