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
}
声明另一个的int称为总
在你的for循环结束时更新总
total += lungime*latime;
总在循环之后将在年底的总建筑面积
试过了,在这里发布旧版本。它提供了不好的输出。 – 2014-11-06 15:04:37
编辑代码,请看看。 – 2014-11-06 15:24:01
'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函数的错误,但从来没有使用过
试过了,它给出了不好的价值。 – 2014-11-06 15:18:43
当你声明它时总是赋值,因为你永远不知道它存储在哪个内存空间中,如果这个内存空间是空的,并且给你的代码提供空间,在一行中声明10个变量是在中间丢失的最好方法的逻辑,也米*米=平方米;) – Charlie 2014-11-06 15:34:30
@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
}
请在答案中提交格式化的代码。 – 2014-11-06 15:39:05
谢谢,我的配方没有了。 – 2014-11-06 15:44:22
@MichaelWalz,我不知道为什么,但是当我在这个特定的答案中点击编辑时,OperaMini不会做任何事情。无论如何,现在我已经改进了我的电脑的格式。 – 2014-11-07 11:19:34
是的,它可以完成没有阵列。 – Sneftel 2014-11-06 14:58:55
请缩进您的代码。 – 2014-11-06 15:03:08
谢谢大家,最后我的配方没有了。 – 2014-11-06 15:44:05