当前位置: 代码迷 >> C语言 >> 求救,哪位高手能帮帮我
  详细解决方案

求救,哪位高手能帮帮我

热度:148   发布时间:2008-01-01 10:37:14.0
求救,哪位高手能帮帮我
要求运行程序后,从键盘输入十几个整数包括负数,编写四个函数,要求用switch编写,有四个函数,其功能,一个是对输入的数字进行排序,一个在排好序的位置上插入数字,,一个是帮助菜单,一个是退出菜单。

要求用c语言编写,哪位高手可以帮帮我,急需呀,万分感谢!
搜索更多相关的解决方案: 数字  函数  键盘  

----------------解决方案--------------------------------------------------------
排序  回吗?

帮助菜单 这个难吗``而且不知道你要的帮助是什么

退出菜单 这个用switch?``好奇怪啊``

是用switch编写4个函数``还是用switch来个根据情况调用4个函数?

一个在排好序的位置上插入数字  这个用数组或是指针``

LZ``你最起码应该回第一``和第3,4个``第2个不东还可以理解些
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

坚持到底
2008-01-01 05:10:40
大白免

等 级:新手上路
帖 子:28
专家分:0
注 册:2008-1-1
  得分:0 
指针和数组就行了啊
----------------解决方案--------------------------------------------------------
/* 根据要求写了一个,可以完善下 */

#include <stdio.h>
#include <ctype.h>

void show(int ar[], int count);              // 显示数组内容
void sorting(int ar[], int n);               // 排序
int insert(int ar[], int * count, int n, int insert_num) ;   // 插入数字
int help_menu(void);                         // 帮助菜单
int quit_menu(void);                         // 退出菜单

int main(void)
{
    int ar[100];
    int count = 0;   // 数组中有0个数
    int k, num;
   
    printf("请输入一些数字,数字之间用空格空开,输入一个非数字结束输入:\n");
    while(scanf("%d", &ar[count]) == 1 && count < sizeof(ar))
    {
        count++;
    }
    while(getchar() != '\n')
        continue;

    show(ar, count);
   
    do
    {
        putchar('\n');
        k = help_menu();
        switch(k)
        {
            case 'A':
                k = 0;
                do
                {
                    printf("请输入要添加的数字: ");
                    k = scanf("%d", &num);
                    while(getchar() != '\n')
                        continue;
                }while(k != 1);
               
                k = insert(ar, &count, sizeof(ar) / sizeof(int), num);
                if(k)
                    puts("添加成功!");
                else
                    puts("添加失败: 数组已满!");
                break;
            case 'S':
                sorting(ar, count);
                puts("完成排序!");
                break;
            default :
                puts("选项错误!");
        }
        putchar('\n');
        show(ar, count);
        putchar('\n');
    }while(!quit_menu());
   
    puts("Bye!");
    getchar();
    return 0;
}

void show(int ar[], int count)
{
    int i;
    for(i = 0; i < count; i++)
    {
        printf("%6d ", ar[i]);
        if(i % 9 == 8)
            putchar('\n');
    }
    if(count < 1)
        puts("数组为空!");
    putchar('\n');
}

void sorting(int ar[], int count)               // 排序
{
    int i, j, temp;
   
    for(i = 1; i < count; i++)                  // 冒泡排序
        for(j = 0; j < count - i; j++)
            if(ar[j] > ar[j + 1])
            {
                temp = ar[j];
                ar[j] = ar[j + 1];
                ar[j + 1] = temp;
            }
}

int insert(int ar[], int * count, int max, int insert_num)   // 插入数字
{
    if(*count < max && *count >= 0)
    {
        ar[*count] = insert_num;
        (*count)++;
        return 1;
    }
    else
        return 0;
}

int help_menu(void)                           // 帮助菜单
{
    int ch;
    do
    {
        printf("A) 添加     S) 排序\n");
        ch = toupper(getchar());
        if(ch != '\n')
            while(getchar() != '\n')
                continue;
    }while(ch != 'A' && ch != 'S');
    return ch;
}

int quit_menu(void)                          // 退出菜单
{
    int ch;
    printf("是否退出退出[Y/N]...");
    while((ch = toupper(getchar())) != 'Y' && ch != 'N')
    {
        if(ch != '\n')
            while(getchar() != '\n')
                continue;
        printf("是否退出退出[Y/N]...");
    }
    while(getchar() != '\n')
        continue;

    if(ch == 'Y')
        return 1;
    else
        return 0;
}

----------------解决方案--------------------------------------------------------
  相关解决方案