为什么有些数字显示小数点而有些则没有?
Why do some numbers present the decimals and others don't?
#include <stdio.h>
#pragma warning (disable:4996)
void cit_mat(float a[][100], int* m, int* n) {
printf("nr linii =");
scanf_s("%d", m);
printf("\n");
printf("nr coloane =");
scanf_s("%d", n);
printf("\n");
printf("Introduceti matricea: \n");
for (int i = 0; i < *m; i++) {
for (int j = 0; j < *n; j++) {
printf("x[%d][%d]=", i, j);
scanf_s("%f", &a[i][j]);
}
printf("\n");
}
}
void ordonare(float a[][100], int m, int n) {
for (int i = 0; i < m; i++) {
int ok = 1;
while (ok) {
ok = 0;
for (int k = 0; k < n - 1; k++) {
if (a[i][k] > a[i][k + 1]) {
int aux = a[i][k + 1];
a[i][k + 1] = a[i][k];
a[i][k] = aux;
ok = 1;
}
}
}
}
}
void afis_mat(float a[][100], int m, int n) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%5.6f ", a[i][j]);
}
printf("\n");
}
}
void main() {
int m, n;
float a[100][100];
cit_mat(a, &m, &n);
ordonare(a, m, n);
printf("Matricea cu liniile ordonate crescator arata astfel: \n");
afis_mat(a, m, n);
}
大家好,所以每当我在这个矩阵中输入小数(比如 1.23、1.45、5.44)时,在控制台上,通过最后显示的矩阵,只有 一些 数字有小数点,而有些可能显示为 4.0000,即使我将其设置为 4.55。是什么导致了这个问题?我想不明白。该代码出现在 Visual Studio 2019 btw.
在ordonare
中,a
是一个浮点数的集合。但是,您随后会执行 int aux = a[i][k+1];
。当您将 float
存储在 int
中时,它会被截断为其整数部分并丢弃小数点后的值。
#include <stdio.h>
#pragma warning (disable:4996)
void cit_mat(float a[][100], int* m, int* n) {
printf("nr linii =");
scanf_s("%d", m);
printf("\n");
printf("nr coloane =");
scanf_s("%d", n);
printf("\n");
printf("Introduceti matricea: \n");
for (int i = 0; i < *m; i++) {
for (int j = 0; j < *n; j++) {
printf("x[%d][%d]=", i, j);
scanf_s("%f", &a[i][j]);
}
printf("\n");
}
}
void ordonare(float a[][100], int m, int n) {
for (int i = 0; i < m; i++) {
int ok = 1;
while (ok) {
ok = 0;
for (int k = 0; k < n - 1; k++) {
if (a[i][k] > a[i][k + 1]) {
int aux = a[i][k + 1];
a[i][k + 1] = a[i][k];
a[i][k] = aux;
ok = 1;
}
}
}
}
}
void afis_mat(float a[][100], int m, int n) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%5.6f ", a[i][j]);
}
printf("\n");
}
}
void main() {
int m, n;
float a[100][100];
cit_mat(a, &m, &n);
ordonare(a, m, n);
printf("Matricea cu liniile ordonate crescator arata astfel: \n");
afis_mat(a, m, n);
}
大家好,所以每当我在这个矩阵中输入小数(比如 1.23、1.45、5.44)时,在控制台上,通过最后显示的矩阵,只有 一些 数字有小数点,而有些可能显示为 4.0000,即使我将其设置为 4.55。是什么导致了这个问题?我想不明白。该代码出现在 Visual Studio 2019 btw.
在ordonare
中,a
是一个浮点数的集合。但是,您随后会执行 int aux = a[i][k+1];
。当您将 float
存储在 int
中时,它会被截断为其整数部分并丢弃小数点后的值。