以下程序的功能是从键盘输入10个整型数据,放入数组a 中,求其最大值、最小值及其所在元素的下标位置并输出。找出其中错误并改正之。 #include <stdio.h> main() { int a[10], n, max, min, maxPos, minPos; for (n=0, n<10, n++) { scanf("%d", a[n]); } max = min = a; maxPos = minPos = 0; for (n=1; n<10; n++) { if (a[n] > max) { max = a[n]; maxPos = n; } else if (a[n] < min) { min = a[n]; minPos = n; } } printf("max=%d, pos=%d\n",max, maxPos); printf("min=%d, pos=%d\n",min, minPos); }
时间: 2024-02-02 15:03:44 浏览: 146
以下是改正后的程序:
```c
#include <stdio.h>
int main() {
int a[10], n, max, min, maxPos, minPos;
for (n = 0; n < 10; n++) {
scanf("%d", &a[n]); // 修正:需要取地址符&
}
max = min = a[0]; // 修正:需要初始化max和min为a[0]
maxPos = minPos = 0;
for (n = 1; n < 10; n++) {
if (a[n] > max) {
max = a[n];
maxPos = n;
} else if (a[n] < min) {
min = a[n];
minPos = n;
}
}
printf("max=%d, pos=%d\n", max, maxPos);
printf("min=%d, pos=%d\n", min, minPos);
return 0;
}
```
主要的错误在于:
1. 在第5行,scanf函数需要使用取地址符&,否则无法将输入的值存入数组元素中。
2. 在第6行,需要初始化max和min为数组的第一个元素a[0]。
3. 在第7行,需要初始化maxPos和minPos为0。
相关问题
C语言5.从键盘输入3个整型元素,保存到数组,输出它们的和。 6.从键盘输入3个整型元素,保存到数组,求出其最大值并输出。 7.从键盘输入3个整型元素,保存到数组,求出其最小值并输出。 8.从键盘输入3个整型元素,保存到数组,将最小值移动到第1个元素(下标0),再输出数组。
5. 实现代码:
```c
#include <stdio.h>
int main()
{
int arr[3];
int sum = 0;
printf("请输入3个整数:\n");
for (int i = 0; i < 3; i++) {
scanf("%d", &arr[i]);
sum += arr[i];
}
printf("它们的和为:%d\n", sum);
return 0;
}
```
6. 实现代码:
```c
#include <stdio.h>
int main()
{
int arr[3];
int max = 0;
printf("请输入3个整数:\n");
for (int i = 0; i < 3; i++) {
scanf("%d", &arr[i]);
if (arr[i] > max) {
max = arr[i];
}
}
printf("它们的最大值为:%d\n", max);
return 0;
}
```
7. 实现代码:
```c
#include <stdio.h>
int main()
{
int arr[3];
int min;
printf("请输入3个整数:\n");
for (int i = 0; i < 3; i++) {
scanf("%d", &arr[i]);
if (i == 0) {
min = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
printf("它们的最小值为:%d\n", min);
return 0;
}
```
8. 实现代码:
```c
#include <stdio.h>
int main()
{
int arr[3];
int min, temp;
printf("请输入3个整数:\n");
for (int i = 0; i < 3; i++) {
scanf("%d", &arr[i]);
if (i == 0) {
min = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
if (min != arr[0]) {
for (int i = 0; i < 3; i++) {
if (arr[i] == min) {
temp = arr[0];
arr[0] = min;
arr[i] = temp;
break;
}
}
}
printf("移动后的数组为:");
for (int i = 0; i < 3; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
编程从键盘输入10个整数并保存到数组,输出10个整数中的最大值及其下标、最小值及其下标c语言完整代码
下面是一个简单的 C 语言程序,可以实现从键盘输入 10 个整数并保存到数组,输出 10 个整数中的最大值及其下标、最小值及其下标:
```c
#include <stdio.h>
int main()
{
int arr[10];
int max = arr[0], min = arr[0], maxIndex = 0, minIndex = 0;
printf("请输入 10 个整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
if (arr[i] > max) {
max = arr[i];
maxIndex = i;
}
if (arr[i] < min) {
min = arr[i];
minIndex = i;
}
}
printf("最大值为 %d,下标为 %d\n", max, maxIndex);
printf("最小值为 %d,下标为 %d\n", min, minIndex);
return 0;
}
```
在程序中,我们定义了一个长度为 10 的整型数组 `arr`,并使用 `for` 循环从键盘输入 10 个整数,并保存到数组中。同时,我们使用 `if` 条件语句来判断每个输入的数值是否是最大值或最小值,并记录其下标。最后,我们通过 `printf` 函数输出最大值及其下标、最小值及其下标。
阅读全文