如何修复C2109:下标需要数组或指针类型
我这里有些作业有问题。我对编程完全是新手,所以任何东西都应该是有帮助的。我不知道如何修复C中的C2109错误。 如您所见,我有一个如何修复C2109:下标需要数组或指针类型,c,C,我这里有些作业有问题。我对编程完全是新手,所以任何东西都应该是有帮助的。我不知道如何修复C中的C2109错误。 如您所见,我有一个float数组,我必须对其进行排序,并查找编号55.5 #include <stdio.h> #include <conio.h> #include <math.h> main() { float mr1[30], pom = 0; int i, indeks = -1, j, n, start, end, mid
float
数组,我必须对其进行排序,并查找编号55.5
#include <stdio.h>
#include <conio.h>
#include <math.h>
main() {
float mr1[30], pom = 0;
int i, indeks = -1, j, n, start, end, mid;
printf("Enter length of array n<=30:\n");
scanf("%d", &n);
printf("Enter numbers of array mr1:\n");
for (i = 0; i < n; i++) {
scanf("%f", &mr1[i]);
}
for (i = 0; i <n - 1; i++) {
for (j = i + 1; j < n; j++)
if (mr1[i] > mr1[j]) {
mr1[i] = pom;
mr1[i] = mr1[j];
mr1[j] = mr1[i];
}
}
start = 0;
end = n - 1;
do {
mid = (start + end) / 2
if (mr1[mid] == 55.5) {
indeks = mid;
} else {
if (mr1[mid] < 55.5) {
start = mid + 1;
} else {
kraj = mid - 1;
}
}
} while (poc <= kraj && indeks < 0);
printf("Number 55.5 is on indeks:\n");
printf("%d", indeks);
}
#包括
#包括
#包括
main(){
浮动mr1[30],pom=0;
int i,indeks=-1,j,n,开始,结束,中间;
printf(“输入数组长度n代码中存在多个问题:
- 交换代码不正确。应为:
pom = mr1[i];
mr1[i] = mr1[j];
mr1[j] = pom;
- 您没有将所有
poc
翻译为start
和kraj
翻译为end
mid=(开始+结束)/2之后缺少;
main()
是main
函数的过时原型,您应该指定返回类型int
do
/while
循环无法正确处理空数组。您应该改用while
循环。根据经验,do
/while
循环通常是不正确的,有时是以细微的方式
以下是更正的版本:
#include <stdio.h>
int main() {
float mr1[30];
int n, i, j, index, start, end, mid;
printf("Enter length of array n<=30:\n");
if (scanf("%d", &n) != 1 || n < 0 || n > 30) {
printf("invalid length\n");
return 1;
}
printf("Enter numbers of array mr1:\n");
for (i = 0; i < n; i++) {
if (scanf("%f", &mr1[i]) != 1) {
printf("invalid input\n");
return 1;
}
}
/* sort the array with simplistic swap sort */
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (mr1[i] > mr1[j]) {
/* swap entries */
float pom = mr1[i];
mr1[i] = mr1[j];
mr1[j] = pom;
}
}
}
/* try and locate 55.5 with binary search */
index = -1;
start = 0;
end = n - 1;
while (start <= end) {
mid = (start + end) / 2;
if (mr1[mid] == 55.5) {
index = mid;
break;
} else {
if (mr1[mid] < 55.5) {
start = mid + 1;
} else {
end = mid - 1;
}
}
}
if (index >= 0) {
printf("Number 55.5 is at index %d\n", index);
} else {
printf("Number 55.5 is not present\n");
}
return 0;
}
#包括
int main(){
浮动mr1[30];
int n,i,j,索引,开始,结束,中间;
printf(“输入数组的长度n(1)您在mid=(start+end)/2
行中遗漏了分号。(2)您没有在任何地方声明变量poc
和kraj
。55.5
有点“不错”浮点数。将普通浮点数与=
进行比较很可能会失败。您应该避免这种情况。请检查scanf
中的返回值-它返回值是有原因的