我有两个循环。在第一个循环中,我分割字段(分割)。在第二个循环中,我想打印新的字段值。只有0。我想知道循环有什么问题。我没有发现错误。:)我认为问题出在这方面:
purverbrauch[i] = wertmverbrauch[i]/summe;
我在Windows 7中使用Visual Studio 2013编程。
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define N 7
int main()
{
int wertmverbrauch[N], summe=0, tmp, purverbrauch[N];
int i, j, y;
printf("Programm zur Ermittlung des kumulierten wertmaeßigen Verbrauchs\n-----------------------------------------\n");
printf("Bitte geben Sie den wertm. Verbrauch ein!(%i Werte)",N);
for (i = 0; i < N; i++)
{
scanf_s("%i", &wertmverbrauch[i]);//Einlesen der Werte
}
for (j = 0; j < N - 1; j++)
{
for (y = 0; y < N - 1 - j; y++)
{
if (wertmverbrauch[y]>wertmverbrauch[y + 1])//Bubblesort sortieren
{
tmp = wertmverbrauch[y];
wertmverbrauch[y] = wertmverbrauch[y + 1];
wertmverbrauch[y + 1] = tmp;
}
}
}
printf("Sortierte Reihenfolge(nach wert absteigend)");
for (i = 0; i < N; i++)
{
printf("\n%i", wertmverbrauch[i]);//Sortierte Ganzzahlen-Werte ausgeben
}
for (i = 0; i < N; i++)
{
summe += wertmverbrauch[i];//Ermittlung der Summe in Ganzzahlen
}
printf("\nDie Werte ergeben zusammen %i\n\n", summe);
for (i = 0; i < N; i++)
{
purverbrauch[i] = wertmverbrauch[i]/summe;
}
for (i = 0; i < N; i++)
{
printf("%i\n", purverbrauch[i]);
}
system("pause");
return 0;
}
%lf输出(正确):
Programm zur Ermittlung des kumulierten wertmae▀igen Verbrauchs
-----------------------------------------
Bitte geben Sie den wertm. Verbrauch ein!(4 Werte)5
4
1
4
Sortierte Reihenfolge(nach wert absteigend)
1.000000
4.000000
4.000000
5.000000
Die Werte ergeben zusammen 14.000000
0.071429
0.285714
0.285714
0.357143
Drücken Sie eine beliebige Taste . . .
%f输出(不正确):
Programm zur Ermittlung des kumulierten wertmae▀igen Verbrauchs
-----------------------------------------
Bitte geben Sie den wertm. Verbrauch ein!(4 Werte)5
4
1
4
Sortierte Reihenfolge(nach wert absteigend)
-92559604497122535000000000000000000000000000000000000000000000.000000
-92559604473177292000000000000000000000000000000000000000000000.000000
-92559604473177292000000000000000000000000000000000000000000000.000000
-92559604281615349000000000000000000000000000000000000000000000.000000
Die Werte ergeben zusammen -3702384177250924700000000000000000000000000000000000
00000000000.000000
0.250000
0.250000
0.250000
0.250000
Drücken Sie eine beliebige Taste . . .
这里需要的是浮点数计算,而不是整数计算。
代替
int wertmverbrauch[N], summe=0, tmp, purverbrauch[N];
由
double wertmverbrauch[N], summe=0, tmp, purverbrauch[N];
并将所有出现的%i
替换为%lf
。
您只声明了整数。
在整数数学中,10/3
不是3.3333
(如您所料);它只是3
(一个整数)。
我怀疑您划分的值将导致值小于1,因此,结果是整数0。
例子:
您可能会期望:
3 / 5 = 0.60
但是真的:
3 / 5 = 0
正确的解决方案是检查您的数据,并将适当的类型更改为双
,而不是int
。然后你可以捕获小数点。
我认为问题是你的数组是int类型的,所以基本上你会得到0到1之间的结果,但是如果整数小于1,它们就是0。
int N = 4
double purverbrauch[N];
double wertmverbrauch[N] = {2,3,4,5};
int summe = 2;
for (int i = 0; i < N; i++)
{
purverbrauch[i] = wertmverbrauch[i]/summe;
}
for (int i = 0; i < N; i++)
{
printf("%f\n", purverbrauch[i]);
}
我试图在for循环中获得for循环,因此输出如下: 我希望输出显示一个正方形 我不知道它为什么不这样做。下面是我的代码:
for循环是一种重复控制结构,允许您有效地编写需要执行特定次数的循环。 语法 (Syntax) Perl编程语言中for循环的语法是 - for ( init; condition; increment ) { statement(s); } 这是for循环中的控制流 - init步骤首先执行,只执行一次。 此步骤允许您声明和初始化任何循环控制变量。 只要出现分号,就不需要在此处输入声明。
' for '循环是最紧凑的循环形式。 它包括以下三个重要部分 - loop initialization ,我们将计数器初始化为起始值。 初始化语句在循环开始之前执行。 test statement将测试给定条件是否为真。 如果条件为真,则执行循环内给出的代码,否则控件将退出循环。 iteration statement ,您可以在其中增加或减少计数器。 您可以将所有三个部分放在一行中以分号分隔
问题 你想通过一个 for 循环来迭代数组、对象或范围。 解决方案 # for(i = 1; i<= 10; i++) x for x in [1..10] # => [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] # To count by 2 # for(i=1; i<= 10; i=i+2) x for x in [1..10] by 2 # => [ 1, 3, 5,
for循环是一种重复控制结构,允许您有效地编写需要执行特定次数的循环。 语法 (Syntax) Objective-C编程语言中for循环的语法是 - for( init; condition; increment ) { statement(s); } 这是for循环中的控制流 - init步骤首先执行,只执行一次。 此步骤允许您声明和初始化任何循环控制变量。 只要出现分号,就不需要在此
For loop是一种重复控制结构,允许您有效地编写需要执行特定次数的循环。 语法 (Syntax) 在R中创建for循环语句的基本语法是 - for (value in vector) { statements } 流程图 (Flow Diagram) R for for循环特别灵活,因为它们不限于整数,甚至输入中的数字。 我们可以传递字符向量,逻辑向量,列表或表达式。 例子 (Exam