gpt4 book ai didi

c - C 中调用函数的不合理错误 - 程序对数组进行排序

转载 作者:行者123 更新时间:2023-11-30 14:28:41 27 4
gpt4 key购买 nike

我编写了一个程序,从用户处接收一系列数字(<=20),而最后一个“0”表示系列结束(不包含在系列存储中)。2 个数组 (x,y) 大小 20(0-19 + 1 表示“0”)必须为零,m 表示 Y 数组中的器官数量。

用户必须输入升序的数字(可以是4ex.1,2,2,3,7,8,...,0)并以“0”结尾,当然,如果没有,则会出现相应的错误消息出现,程序将关闭。

我们可以确定用户会保留 <=20 个输入数字。

Y 数组将是(如果 X 数组一切正常的话)X 的排序数组,但没有重复项。“m”将是 Y 中的器官数量,当然不包括“0”。

函数 SIFT 必须只组织 Y 数组以便从 main() 打印。

示例:

如果用户将存储在 X: 1,1,2,3,5,5,5,6

屏幕上将显示:m = 5 Y = 1,2,3,5,6

我的试用:

#include <stdio.h>
#include <string.h>

void SIFT(int x_arr[ ], int y_arr[]);

int main ()
{
int x[20] = {0} , y[20] = {0};
int m=0,temp=0,curr=0,i=0,j=0;

printf("Please enter your numbers now:\n\n");

/*enter numbers one by one. if x[i+1] value < x[i] value, err msg.
when user want to end the series he must enter '0' which means end of string (it wont included in x[]) */
while ( ( temp = getchar() ) != '0' )
{
if (temp >= curr)
{
x[i] = temp;
curr = temp;
i++;
}
else
{
printf("The numbers are not at the right order !\n\nProgram will now terminate...\n\n");
}
}

SIFT(x,y);

for (i=0 ; y[i]=='0' ; i++) /*strlen(y) without ('0')'s includes*/
m++;

/*Prints m , y's organs*/
printf("\n\nm = %d",m);
printf("Y = ");
while (y[j]!='0')
{
printf ("%d ,",y[j]);
j++;
}

void SIFT(int x_arr[ ], int y_arr[])
{
int i=0,j=0;

while (x_arr[i] != '0')
{
if (x_arr[i] == x_arr[i+1]) /*if current val. equals next val. -> jump dbl at x_arr*/
{
y_arr[j] = x_arr[i];
i+=2;
j++;
}
else
{
y_arr[j]=x_arr[i];
i++;
j++;
}
}

}

return 0;
}

我从 gcc 收到的错误是:

gcc -g -ansi -pedantic -Wall 2.c -o 2   
2.c: In function ‘main’:
2.c:43: warning: ISO C forbids nested functions
2.c:43: warning: ISO C90 forbids mixed declarations and code
/tmp/ccyZNfkF.o: In function `main':
/home/student/Desktop/2/2.c:29: undefined reference to `SIFT'
collect2: ld returned 1 exit status
make: *** [2] Error 1

还有一个问题:

我想将此代码转换为 MIPS 汇编代码,是否有一种简短而快速的方法?

谢谢大家!!

最佳答案

在声明 SIFT 之前,您没有关闭 main 函数,因此 SIFT 在 main 内部声明,这是被禁止的。

通过在 SIFT() 的定义之前从 main 返回来修复它:

...
return 0;
}

void SIFT(int x_arr[ ], int y_arr[])
{
int i=0,j=0;
...

关于c - C 中调用函数的不合理错误 - 程序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5662874/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com