为什么会修改data[2]的值,搞半天没弄明白,到底什么原因啊,求解答,谢谢。
1条回答 默认 最新
- a5156520 2022-10-05 19:42关注
除了把你上面提供的代码的函数声明处添加了相应参数后,以及在main函数里把L变量的类型改为LIST后,代码可以正常运行了。
两处修改都因为编译时报错,第一个是因为定义函数处的原型要和声明函数处原型一致,第二个是因为几处函数都需要一个LIST指针,而不是LIST指针的指针,修改后可以正常运行。修改如下:#include<stdio.h> struct MYLIST{ int length; int data[100]; }; typedef struct MYLIST LIST; void Isert(LIST * L ,int n); void MyPrint(LIST *L); void MySort(LIST*L); void Add(LIST*L,int x); int main(void){ LIST L ; int n; int x; printf("为数组赋多少元素:"); scanf("%d",&n); Isert(&L,n); printf("顺序表数据原顺序为:"); MyPrint(&L); printf("\n升序排序后的顺序为:"); MySort(&L); MyPrint(&L); printf("\n输入您要添加的数据:"); scanf("%d",&x); Add(&L,x); MySort(&L); MyPrint(&L); } void Isert(LIST * L,int n){ L->length = n; for(int i=1;i<=n;i++){ printf("第%d个元素为:",i); scanf("%d",&L->data[i-1]); } } void MyPrint(LIST * L){ // printf("L-length=%d\n",L->length); for(int i=0;i<L->length;i++){ printf("%d\t",L->data[i]); // printf("L->data[%d]=%d\t",i,L->data[i]); } printf("\n"); } void MySort(LIST *L){ //printf("L-length=%d\n",L->length); for(int i=0;i<L->length;i++){ // printf("L->data[%d]=%d\t",i,L->data[i]); for(int j=i+1;j<L->length;j++){ if(L->data[i]>=L->data[j]){ int temp = L->data[i]; L->data[i] = L->data[j]; L->data[j] = temp; } } } } void Add(LIST * L, int x){ L->data[L->length] = x; L->length++; }
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
- ¥100 求Web版SPC控制图程序包调式
- ¥20 指导如何跑通以下两个Github代码
- ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
- ¥15 C++为什么这个代码没报错运行不出来啊
- ¥15 一道ban了很多东西的pyjail题
- ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
- ¥15 C++识别堆叠物体异常
- ¥15 微软硬件驱动认证账号申请
- ¥15 GPT写作提示指令词