一个简单C语言顺序查找程序,高手帮忙看下!

来源:百度知道 编辑:UC知道 时间:2024/09/22 05:17:04
#include<stdio.h>

int *CreatArray(){
int *num;
int n = -1;
printf("\n请输入一组数字,输入-1结束输入:");
do{
n++;
scanf("%d",&num[n]);

}while(num[n] != -1);

return num;
}

int CountNum(int R[]){
int i = 0;
while(R[i] != -1)
i++;
return i;
}

int OrderSearch(int *num,int aim){
int i;
for(i = 0;i < CountNum(num);i++){
if(num[i] == aim)
return i;
else
return -1;
}

}

void Show(int *num){
int m;
for(m = 0;m < CountNum(num);m++){
printf("%d ",num[m]);
}
}

int main(){
int *num;
int aim;
num = CreatArray();
printf("请输入要查找的目标元素:");
scanf("%d",&aim);
OrderSearch(num,aim);
Show(num);
}
程序编译没问题,但是这句赋值貌似有问题num = CreatArray();

int *CreatArray(){
int *num = new int;
int n = -1;
printf("\n请输入一组数字,输入-1结束输入:");
do{
n++;
scanf("%d",&num[n]);

}while(num[n] != -1);

return num;
}
int *num 这个只是定义了一个对象,但是没有为num在内存中开辟空间,值就赋不进去。
2.还有一个地方写错了
int OrderSearch(int *num,int aim){
int i;
for(i = 0;i < CountNum(num);i++){
if(num[i] == aim)break;
}
if(i == CountNum(num) - 1)
{
return -1;
}
return i;
}
这个是改过的,你看下。