鱼C论坛

 找回密码
 立即注册
查看: 1399|回复: 5

大神帮忙一下 这个程序怎么运行不了呢

[复制链接]
发表于 2015-12-11 22:48:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<string.h>
#define N 10
int main()
{
        void input(int[], char name[][8]);
        void sort(int[], char name[][8]);
        void search(int, int[],char name[][8]);
        int num[N], number, flag = 1, c;
        char name[N][8];
        input(num, name);
        sort(num, name);
        while (flag == 1)
        {
                printf("\n input number to look for:");
                scanf_s("%d", &number);
                search(number, num, name);
                printf("continue or not(Y/N)?");
                getchar();
                c = getchar();
                if (c == 'N' || c == 'n')
                        flag = 0;
        }
        system("pause");
        return 0;
}
void input(int num[], char name[N][8])
{
        int i;
        for (i = 0; i < N; i++)
        {
                printf("input NO.:");
                scanf_s("%d", &num[i]);
                printf("input name:");
                getchar();
                gets_s(name[i],9);
        }
}
void sort(int num[], char name[N][8])
{
        int i, j, min, temp1;
        char temp2[8];
        for (i = 0; i < N - 1; i++)
        {
                min = i;
                for (j = i; j < N;j++)
                if (num[min]>num[j])
                        min = j;
                temp1 = num[i];
                        strcpy_s(temp2, name[i],7);
                        num[i] = num[min];
                        strcpy_s(name[i], name[min],7);
                        num[min] = temp1;
                        strcpy_s(name[min], temp2,7);

        }
        printf("\n result :\n");
        for (i = 0; i < N; i++)
                printf("\n %5d%10s", num[i], name[i]);
}
void search(int n, int num[], char name[N][8])
{
        int top, bott, mid, loca, sign;
        top = 0;
        bott = N - 1;
        loca = 0;
        sign = 1;
        if ((n<num[0]) || (n>num[N - 1]))
                loca = -1;
        while ((sign == 1) && (top <= bott))
        {
                mid = (bott + top) / 2;
                if (n == num[mid])
                {
                        loca = mid;
                        printf("NO.%d,his name is %s.\n", n, name[loca]);
                        sign = -1;
                }
                else if (n < num[mid])
                        bott = mid - 1;
                else
                        top = mid + 1;
        }
        if (sign == 1 || loca == -1)
                printf("%d not been found.\n", n);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-12-11 22:50:01 | 显示全部楼层
哪位 大神行行好 帮帮忙 谢谢啦 我用的是vs2013  一直运行不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-12 09:22:10 | 显示全部楼层
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 10
int main()
{
        void input(int[], char name[][8]);
        void sort(int[], char name[][8]);
        void search(int, int[], char name[][8]);
        int num[N], number, flag = 1, c;
        char name[N][8];
        input(num, name);
        sort(num, name);
        while (flag == 1)
        {
                printf("\n input number to look for:");
                scanf_s("%d", &number);
                search(number, num, name);
                printf("continue or not(Y/N)?");
                getchar();
                c = getchar();
                if (c == 'N' || c == 'n')
                        flag = 0;
        }
        system("pause");
        return 0;
}
void input(int num[], char name[N][8])
{
        int i;
        for (i = 0; i < N; i++)
        {
                printf("input NO.:");
                scanf_s("%d", &num[i]);
                printf("input name:");
                getchar();
                gets_s(name[i], 9);
        }
}
void sort(int num[], char name[N][8])
{
        int i, j, min, temp1;
        char temp2[8];
        for (i = 0; i < N - 1; i++)
        {
                min = i;
                for (j = i; j < N; j++)
                        if (num[min]>num[j])
                                min = j;
                temp1 = num[i];
                strcpy_s(temp2, name[i]);
                
                num[i] = num[min];
                strcpy_s(name[i], name[min] );
                num[min] = temp1;
                strcpy_s(name[min], temp2 );

        }
        printf("\n result :\n");
        for (i = 0; i < N; i++)
                printf("\n %5d%10s", num[i], name[i]);
}
void search(int n, int num[], char name[N][8])
{
        int top, bott, mid, loca, sign;
        top = 0;
        bott = N - 1;
        loca = 0;
        sign = 1;
        if ((n<num[0]) || (n>num[N - 1]))
                loca = -1;
        while ((sign == 1) && (top <= bott))
        {
                mid = (bott + top) / 2;
                if (n == num[mid])
                {
                        loca = mid;
                        printf("NO.%d,his name is %s.\n", n, name[loca]);
                        sign = -1;
                }
                else if (n < num[mid])
                        bott = mid - 1;
                else
                        top = mid + 1;
        }
        if (sign == 1 || loca == -1)
                printf("%d not been found.\n", n);
}

不知道你要实现什么   没有报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-12 13:01:19 | 显示全部楼层
小人 发表于 2015-12-12 09:22
不知道你要实现什么   没有报错了

你用的是什么编译器啊 strcpy不用 strcpy_s 吗  我的怎么 总是通不过啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-12 13:11:03 | 显示全部楼层
小人 发表于 2015-12-12 09:22
不知道你要实现什么   没有报错了

谢谢你啊 我自己搞定啦  这个函数调用的问题strcpy_s(name[min],7, temp2);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-12 15:02:14 | 显示全部楼层
zerone. 发表于 2015-12-12 13:11
谢谢你啊 我自己搞定啦  这个函数调用的问题strcpy_s(name[min],7, temp2);

vs2013
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 15:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表