一道C语言难题,求教高手解答!!!

大作业:编写和调试一个具有能对用一维数组建立的顺序表进行各种操作的应用程序。训练目的1.提高综合应用流程控制语句的能力;2.提高对复杂流程结构的程序的编写能力和调试能力;... 大作业:编写和调试一个具有能对用一维数组建立的顺序表进行各种操作的应用程序。
训练目的
1. 提高综合应用流程控制语句的能力;
2. 提高对复杂流程结构的程序的编写能力和调试能力;
3. 掌握利用数组的组织存储数据以及一些实用的算法。
4. 掌握对文件的操作。
步骤

1.写程序显示如下菜单
1. 插入 (插入一个数据)
2. 删除 (删除一个数据)
3. 排序 (排序)
4. 输出 (输出表中所数据)
0. 退出 (退出程序)

2. 用输入函数输入菜单选择的数字(0-4)对其他输入要提示错误信息流程控制结构如图1所示。

3.顺序表的数据类型自选,可以先使用基本类型,在此基础上修改使用结构体类型。

4.每个功能模块要求用函数实现。

5.在菜单中增加“写入文件”和“读取文件”选项,能将顺序表中的数据写入文件和从文件读取数据。

作业提交内容:
1 解题思路
2 算法流程图
3 源代码
4 实验结果
展开
 我来答
匿名用户
2011-06-02
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int a[300]; //定义数组
int i,j,k,n=0,d;//n为实际数组元素个数
int key,tc=0; //tc=1:退出程序
void insert()
{
printf("请输入要插入的位置1-%d:\n",n+1);
scanf("%d",&k);
if(k<1 || k>n+1) k=n+1;
printf("请输入要插入的元素");
scanf("%d",&d);
for(i=n;i>=k;i--)
a[i]=a[i-1];//插入位置后面的元素后移
a[k-1]=d;//插入元素在正确的位置
n++;//数组元素加1
}

void del()
{
printf("请输入要删除的元素:");
scanf("%d",&d);
for(i=0;i<n;i++)
{
if (d==a[i])
{
for(j=i;j<n;j++)a[j]=a[j+1];//删除位置后面的元素前移
n--;//元素个数减1
--i; //从删除位置继续
}
}
}

void sort()
{
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])//升序,如果是降序,>改为<
{
d=a[j];
a[j]=a[j+1];
a[j+1]=d;
}
}
}
}

void out()
{
for(i=0;i<n;i++)
printf("%4d",a[i]);
printf("\n");
}

void write() //保存数据到文件1.txt
{
FILE *fp;
int i;
if((fp=fopen("1.txt","wt"))==NULL)
{
printf("cannot open file\n");
return;
}
fprintf(fp,"%d\n",n);//保存数组元素个数
for(i=0;i<n;i++)
fprintf(fp,"%d\n",a[i]);//保存每个数组元素,占一行
fclose(fp);
}

void read()//从文件1.txt读出数据
{
FILE *fp;
int i;
if((fp=fopen("1.txt","rt"))==NULL)
{
printf("cannot open file\n");
return;
}
fscanf(fp,"%d\n",&n);
for(i=0;i<n;i++)
fscanf(fp,"%d\n",&a[i]);
fclose(fp);
}

void exit()
{
printf("真正需要退出(y)?\n");
while(1)
{
key =getch();
if(key=='y' || key=='Y')
{
tc=1;
break;
}
else if(key!=0) break;
}
}

void main()
{
while(1)
{
key=0;
if(tc==1) break;
printf("1.插入 2.删除 3.排序 4.输出 5.写入文件 6.读取文件 0. 退出\n");
while(1)
{
key =getch();
if(key!=0)
{
switch(key)
{
case '1':insert();
break;
case '2':del();
break;
case '3':sort();
break;
case '4':out();
break;
case '5':write();
break;
case '6':read();
break;
case '0':exit();
break;
default:
printf("输入错误!\n");
break;
}
break;
}
}

}
}
更多追问追答
追问
嗯嗯嗯!非常感谢啊!可是调试时说#include 有错啊!显示的是:d:\vc\bin\c.cpp(3) : fatal error C1083: Cannot open include file: 'conio.h': No such file or directory
追答
用TC或BC调试通过,VC没有测试。
芻启波
2011-06-02
知道答主
回答量:51
采纳率:0%
帮助的人:13.4万
展开全部
太简单了,,
追问
简单吗?貌似你很强悍哦!麻烦你具体写下嘛!好的话追加50!
追答
你不是计算机专业的吧!!!?
http://blog.sina.com.cn/s/blog_67a339e10100i9wa.html
这儿有一个小程序,可以满足你的要求。上面的功能都有!!!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
clitoriscn
2011-06-02 · TA获得超过3628个赞
知道小有建树答主
回答量:3258
采纳率:0%
帮助的人:1522万
展开全部
很简单,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式