|
发表于 2023-10-8 15:39:47
|
显示全部楼层
本楼为最佳答案
你的程序中存在一些问题。首先,在循环中,你使用了 <= 来判断循环的结束条件,这会导致数组越界。应该使用 < 来判断循环的结束条件。
其次,在读取用户输入时,你使用了 %c 来读取字符,但是这会读取到换行符。你可以在读取字符之前使用一个空格来跳过换行符。另外,你可以使用 %lf 来读取 double 类型的浮点数。
最后,在计算情侣的最佳身高时,你将结果保存在了数组中,但是数组的大小只有10,而用户数可能大于10。你可以使用动态数组来解决这个问题。
下面是修改后的代码:
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- int n;
- char male;
- double h, e;
- scanf("%d", &n);
- double *a = (double *)malloc(n * sizeof(double));
- for (int i = 0; i < n; i++)
- {
- scanf(" %c %lf", &male, &h);
- if (male == 'F')
- {
- e = h * 1.09;
- }
- else if (male == 'M')
- {
- e = h / 1.09;
- }
- a[ i] = e;
- }
- for (int i = 0; i < n; i++)
- {
- printf("%.2lf\n", a[ i]);
- }
- free(a);
- return 0;
- }
复制代码
这样修改后的代码应该可以正确运行了。 |
|