排序模块部分首位置莫名出现1! 很奇怪

C语言 码拜 7年前 (2017-04-24) 969次浏览
# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>
struct Array
{
int *pbase;
int cent;
int length;
};
void init_arr(struct Array *pArr,int len);
bool empty_arr(struct Array *pArr);
bool full_arr(struct Array *pArr);
bool append_arr(struct Array *pArr,int val);
bool delete_arr(struct Array *pArr,int,int*);
bool insert_arr(struct Array *pArr,int,int);
void show_arr(struct Array *pArr);
void sort_arr(struct Array *pArr);
void innversion(struct Array *pArr);
int main()
{
struct Array arr;
int len =6;
int del_code;
init_arr(&arr,len);
append_arr(&arr,3);
append_arr(&arr,2);
append_arr(&arr,6);
append_arr(&arr,4);
append_arr(&arr,9);
show_arr(&arr);
delete_arr(&arr,3,&del_code);//3是被删除的数的位置
printf(“被删除的数字是%d\n” ,del_code);
printf(“删除后的数组是:\n”);
show_arr(&arr);
insert_arr(&arr,3,7);//3是被插入数的位置,5是被插入数
printf(“被插入数是第3个 被插入数是2\n” );
show_arr(&arr);
innversion(&arr);
printf(“倒置后的数组是:\n”);
show_arr(&arr);
sort_arr(&arr);
printf(“排序后的数组是:\n1”);
show_arr(&arr);
return 0;
}
void init_arr(struct Array *pArr,int len)
{
pArr->pbase=(int *)malloc((sizeof(int)*len));
if(NULL==pArr->pbase)
{
printf(“动态分配内存失败!\n”);
exit(-1);//终止整个程序
}
else
{
pArr->length = len;
(*pArr).cent = 0;
}
return;
}
bool append_arr(struct Array *pArr,int val)
{
if(full_arr(pArr))
{
printf(“数组已满!\n”);
return false;
}
pArr->pbase[pArr->cent]=val;
pArr->cent++;
return true;
}
bool delete_arr(struct Array *pArr,int num,int *del_cod)
{
if(empty_arr(pArr))
{
printf(“数组为空无法删除项目!\n”);
return false;
}
*del_cod = pArr->pbase[num-1];
for(int i=num-1;i<pArr->cent-1;i++)
{
pArr->pbase[i]=pArr->pbase[i+1];
}
pArr->cent–;
return true;
}
bool insert_arr(struct Array *pArr,int pos,int num)
{
if(full_arr(pArr))
return false;
for(int i=pArr->cent-1;i>pos-1;i–)
{
pArr->pbase[i]=pArr->pbase[i-1];
}
pArr->pbase[i]=num;
pArr->cent++;
return true;
}
void innversion(struct Array *pArr)
{
int i,j,temp;
for(i=0,j=pArr->cent-1;i<j;i++,j–)
{
temp=pArr->pbase[i];
pArr->pbase[i]=pArr->pbase[j];
pArr->pbase[j]=temp;
}
}
void sort_arr(struct Array *pArr)
{
int i,j,min,temp;
for(i=0;i<pArr->cent-1;i++)
{
min=i;
for(j=i+1;j<pArr->cent;j++)
{
if(pArr->pbase[min] > pArr->pbase[j])
min=j;
}
temp=pArr->pbase[i];
pArr->pbase[i]=pArr->pbase[min];
pArr->pbase[min]=temp;
}
}
bool full_arr(struct Array *pArr)
{
if(pArr->length==pArr->cent)
return true;
else
return false;
}
bool empty_arr(struct Array *pArr)
{
if(pArr->cent==0)
return true;
else
return false;
}
void show_arr(struct Array *pArr)
{
for(int i = 0;i<pArr->cent;i++)
printf(“%d” ,pArr->pbase[i]);
if(i==pArr->cent)
printf(“\n”);
}
解决方案

80

是你本人多打了一个1:
printf(“排序后的数组是:\n1”);
后面多了个1

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明排序模块部分首位置莫名出现1! 很奇怪
喜欢 (0)
[1034331897@qq.com]
分享 (0)