| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 513 人关注过本帖
标题:一道C的综合体错误百出,无能为力,求高手指点...
只看楼主 加入收藏
月下人静
Rank: 1
来 自:安徽宿州市
等 级:新手上路
帖 子:20
专家分:0
注 册:2010-1-30
结帖率:50%
收藏
 问题点数:0 回复次数:4 
一道C的综合体错误百出,无能为力,求高手指点...
实验内容
编写和调试一个具有能对用一维数组建立的顺序表进行各种操作的应用程序。
实验步骤

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

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

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

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

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

6.(选做)使用链表来实现。


我的程序:

#include <stdio.h>
#include <stdlib.h>
#define N 100;

void Insert(char a[N]);
void Delete(char a[N]);
void Order (char a[N]);

int main(void)
{
    char a[N] = {0};
   
    printf("1. 2åèë\t\t(2åèëò»¸öêy¾Y)\n")    ;
    printf("2. é¾3y\t\t(é¾3yò»¸öêy¾Y)\n")    ;
    printf("3. ÅÅDò\t\t(ÅÅDò)\n")             ;
    printf("4. êä3ö\t\t(êä3ö±íÖDËùóDêy¾Y)\n");
    printf("0. íË3ö\t\t£¨íÆ3ö3ìDò£©\n")         ;
    putchar(10)                                 ;
                        
    for(; ;)
    {
        printf("Please input the command: ");
        scanf("%d", &command)                ;
        if(command == 0 || command == 1 || command == 2 || command == 3 || command == 4)
            break;
        else
            printf("Error\n");
    }
   

    switch(command)
    {
        case 0: Exit     ;    break;
        case 1: Insert(a);    break;
        case 2: Delete(a);    break;
        case 3£oOrder (a);    break;
        case 4: Output(a);    break;
    }
   
    return 0;
}

void Insert(char a[N])
{
    int pla                             ;
    printf("Input the place: ")         ;
    scanf("%d", &pla)                 ;
    printf("Input the information: ");
    scanf("%c", (a + pla))             ;
}

void Delete(char a[N])
{
    int pla                       ;
    printf("Input the place: ");
    scanf("%d", &pla)           ;
    a[pla] = 0                   ;
}

void Order(char a[N])
{
    int i, j;
    char tem;
   
    for(i = N; i > 0; i--)
    {
        for(j = 0; j < (N + 1); j++)
        {
            if(strcmp(&a[i - 1 - j], &a[i - 2 - j]) < 0)
            {
                tem          = a[i - 1 - j];
                a[i - 1 - j] = a[i - 2 - j];
                a[i - 2 - j] = tem           ;
            }
        }
    }
}

void Output(char a[N])
{
    int i;
   
    for(i = 0; i < N; i++)
    {
        printf("%c\n", a[i]);
    }
}

void Exit(void)
{
    exit(0);
}
搜索更多相关主题的帖子: 数据 应用程序 结构体 
2012-05-28 17:10
月下人静
Rank: 1
来 自:安徽宿州市
等 级:新手上路
帖 子:20
专家分:0
注 册:2010-1-30
收藏
得分:0 
乱码的地方是汉字= =。
2012-05-28 17:11
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
#define N 100;
先把这句最后面的分号去掉试试

总有那身价贱的人给作业贴回复完整的代码
2012-05-28 17:38
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:0 
并不一定是字符吧?int型的也可以呀!

Edsger Dijkstra:算法+数据结构=程序
2012-05-28 20:26
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:0 
这是我改动后的程序,你看看有没有用:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 20

void Insert(int a[])/*插入没问题*/
{
    int pla, i;
    char c;
    printf("Input the place: ");
    scanf("%d", &pla);
   
       for(i=N-1;i>pla;i--){
           a[i]=a[i-1];
       }
    printf("Input the information: ");
       scanf("%d", a+pla);
}

void Delete(int a[])/*删除也没问题*/
{
    int pla, i;
    printf("Input the place: ");
    scanf("%d", &pla);
    for(i=pla-1;i<N-1;i++){
           a[i]=a[i+1];
       }
    a[N-1]=0;
}

void Order(int a[N])/*排序也没问题*/
{
    int i, j;
    int tem;
   
    for(i =0; i <N; i++)
    {
        for(j = i+1; j < N;j++ )
        {
            if(a[i]>a[j])
            {
                tem= a[i];
                a[i] = a[j];
                a[j] = tem;
            }
           
        }
    }
}

void Output(int a[N])/*没问题*/
{
    int i;
   
   
    for(i = 0; i <N; i++)
    {
        printf("%d\n", a[i]);
    }
}

int main(void)
{
    int a[N]={1, 3, 4, 7, 49, 54, 4, 5, 6, 5, 4, 1,2,3,4,5,6,7,8,9};
    int command=0;
    printf("1. 插入\t\t(插入一个数据)\n");
    printf("2. 删除 \t\t(删除一个数据)\n");
    printf("3. 排序 \t\t (排序)\n");
    printf("4. 输出  \t\t(输出表中所数据)\n");
    printf("0. 退出\t\t(退出程序)\n");
    putchar(10);
                        
    for(; ;)
    {
        printf("Please input the command: ");
        scanf("%d", &command)                ;
        if(command == 0 || command == 1 || command == 2 || command == 3 || command == 4){
            
            switch(command)
            {
                case 0: exit(0);    break;
                case 1: Insert(a);    break;
                case 2: Delete(a);    break;
                case 3: Order (a);    break;
                case 4: Output(a);    break;
            }
   
        }
        else
            printf("Error\n");
    }
   

    return 0;
}

Edsger Dijkstra:算法+数据结构=程序
2012-05-28 20:55
快速回复:一道C的综合体错误百出,无能为力,求高手指点...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027252 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved