C语言小问题 帮忙看下

来源:百度知道 编辑:UC知道 时间:2024/06/22 20:32:21
#include<stdio.h>

#define MAXSIZE 100

typedef struct
{
int data[MAXSIZE];
int len;
}SqList;

void InitList(SqList *sq) // 1
{
sq->len=0;
}

void GetLength(SqList sq) // 2
{

printf("%d\n",sq.len);
}

void GetElem(SqList sq) // 3
{
int i;
printf("请输入数据的位置:");
scanf("%d",&i);
if(i<1 || i>sq.len)
printf("out of range!!");
else
printf("%d\n",sq.data[i-1]);
}

void Locate(SqList sq) // 4
{
int x;
printf("请输入数据:");
scanf("%d",&x);
int i=0;
while(sq.data[i]!=x) i++;
if(i>sq.len)
printf("NO DATA EXIST!!");
else
i+=1;
printf("%d\n",i);
}

void InsElem(SqList *sq) // 5
{
int x;<

你所提到的问题出在again()函数中,改为如下可以修正这个问题:

void again(SqList *sq)
{
int k;
char button;
do
{
shuoming();
scanf("%d",&k);
xuanxiang(k,sq);
printf("Would you like to continue?Y/N");
fflush(stdin);
scanf("%c",&button);
}while (button=='Y'||button=='y');

}

************************************************************

除此之外,这个程序还有其它问题:

1.编程不规范,C语言规定所有的变量定义必须放在函数的开始位置,即可执行语句之前,这个程序没有遵循这个规定。这将会导致在一部分ANSI C编译器上出错,无法正常运行。

2.算法有问题,在插入元素时,没有将之前的元素后移,而是将原有元素覆盖。

这两个问题请自行查找出处并修正,如需帮助,请另行提问。