粗体句子中的错误:“;下标值既不是数组也不是指针向量:("; #包括 void main() { 内角大小; int-randset; int max; int-min; int-arr[arrsize]; int i,j; 国际互换; 浮动平均值; printf(“输入数组大小:\n”); scanf(“%d”、&arrsize); printf(“输入随机集:\n”); scanf(“%d”和&randset); printf(“输入最大可能值:\n”); 扫描频率(“%d”和最大值); printf(“输入最小可能值:\n”); 扫描频率(“%d”和最小值); //分类// 对于(i=arrsize;i>0;i--) 对于(j=1;jarrsize[j])** { swap=arr[j]; arr[j]=arr[j-1]; arr[j-1]=互换; } 对于(i=0;i
你好!我把有错误的行用粗体写了出来,错误是 “下标值既不是数组也不是指针向量”粗体句子中的错误:“;下标值既不是数组也不是指针向量:("; #包括 void main() { 内角大小; int-randset; int max; int-min; int-arr[arrsize]; int i,j; 国际互换; 浮动平均值; printf(“输入数组大小:\n”); scanf(“%d”、&arrsize); printf(“输入随机集:\n”); scanf(“%d”和&randset); printf(“输入最大可能值:\n”); 扫描频率(“%d”和最大值); printf(“输入最小可能值:\n”); 扫描频率(“%d”和最小值); //分类// 对于(i=arrsize;i>0;i--) 对于(j=1;jarrsize[j])** { swap=arr[j]; arr[j]=arr[j-1]; arr[j-1]=互换; } 对于(i=0;i,c,C,你好!我把有错误的行用粗体写了出来,错误是 “下标值既不是数组也不是指针向量” 这是我的ComSci课程的一个练习:)非常感谢您的帮助!谢谢!:)您混淆了数组(arr)和它的大小(arrsize)。这个错误消息非常具有描述性-您使用下标运算符访问标量变量int arrsize只能应用于数组或指针类型 您可能想要检查j-1-th和j-th数组元素,您应该使用 if(arr[j-1]>arr[j])如果您不知道数组的大小,请使用malloc 使用int*array=malloc(arraysize*
这是我的ComSci课程的一个练习:)非常感谢您的帮助!谢谢!:)您混淆了数组(
arr
)和它的大小(arrsize
)。这个错误消息非常具有描述性-您使用下标运算符访问标量变量int arrsize
只能应用于数组或指针类型
您可能想要检查j-1
-th和j
-th数组元素,您应该使用
if(arr[j-1]>arr[j])
如果您不知道数组的大小,请使用malloc
使用int*array=malloc(arraysize*sizeof(int));
而不是int数组[arraysize];
并将其置于scanf(“%d”和&arraysize)之后;
您还需要在使用数组之前初始化它您需要使用
arr
而不是arrsize
,但这只是冰山一角:您的数组大小未定义,程序会在您运行时立即崩溃。您好!什么意思是它会很快崩溃?arrsize是一个输入…所以它仍然是c鲁莽?@dasblinkenlight绝对会的。你声明arr[arrsize]
在您输入arrsize
本身之前,因此arr
将使用一些垃圾大小创建-无论arrsize
变量的未初始化内存中发生了什么。哦,那么,呃……您建议我应该如何解决这个问题?我已经解决了所有问题,但当我尝试使用它时,它只是崩溃了。:)@dasblinkenlight您需要在阅读arrsize
后声明数组。您的答案完全正确,但对OP来说并不是很有用,因为他/她可能是初学者哈哈,是的,我是CS一年级的学生。我的大学里没有人愿意帮忙(我问过至少5个人)>\u哦,哇,当我将arrsize切换到arr时,它实际上起了作用。谢谢!如果你有一个数组变量a
和一个整数索引I
,那么a[I]
和I[a]
在功能上不是一样的,因为它归结为*(I+a)
与*(a+i)
相反,加法是可交换的?@DuncanACoulter当然。但它与问题和我的答案无关。嗯,数组大小是用户输入,
#include <stdio.h>
void main()
{
int arrsize;
int randset;
int max;
int min;
int arr[arrsize];
int i, j;
int swap;
float mean;
printf("Input array size:\n");
scanf("%d", &arrsize);
printf("Input random set:\n");
scanf("%d", &randset);
printf("Input maximum possible value:\n");
scanf("%d", &max);
printf("Input minimum possible value:\n");
scanf("%d", &min);
// SORTING //
for (i = arrsize; i > 0; i--)
for(j = 1 ; j < i ; j++)
// Subscripted value is neither array nor pointer vector //
**if(arrsize[j-1] > arrsize[j])**
{
swap = arr[j];
arr[j] = arr[j-1];
arr[j-1] = swap;
}
for (i=0; i < arrsize; i++)
printf("%d", arr[i]);
printf("\n\n");
// MEAN //
for(i = 0 ; i < arrsize ; i ++)
{
//Subscripted value is neither array nor pointer vector //
**mean += arrsize[i];**
mean/= arrsize;
printf("The mean is %.2lf\n\n", mean);
}
// MEDIAN //
if(arrsize%2 == 0)
{
printf("The median is %.2lf", (float)(arr[arrsize/2 -1] + arr[arrsize/2]);
}
else
{
printf("The median is %d", arr [arrsize/2]);
printf("\n\n\n");
}
printf("The midrange is %.2lf\n\n", (float)(arr[0] + arr[arrsize - 1] / 2);
}
void fillintarray(int myarray [], int arrsize, int min, int max, unsigned int randset)
{
int iter;
srand (randset);
for (iter =0 ; iter < arrsize ; iter++)
{
myarray[iter] = rand() % (max - min + 1) + min;
}
}