| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 493 人关注过本帖
标题:没法了!!请大家看一下什么毛病??
只看楼主 加入收藏
三岩
Rank: 1
等 级:新手上路
帖 子:20
专家分:6
注 册:2010-7-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
没法了!!请大家看一下什么毛病??
运行后,输出结果前面几个数据正确,后面就错了!!!

#include<stdio.h>
#include<string.h>
void main()
{   void enter(char a[10][5],int b[10]);
    void sort(char a[10][5],int b[10]);        
     
    char str[10][5];
    int num[10];
   
    enter(str,num);
    sort(str,num);
}   
/***************************************************/   
void enter(char a[10][5],int b[10])
{
    int i;
    printf("请输入职工号及职工姓名:\n");
    for(i=0;i<10;i++)
    {
        scanf("%d",&b[i]);
        scanf("%s",a[i]);
    }
}
        
/**************************************************/   
   
void sort(char a[10][5],int b[10])                   /*按职工号进行由小到大排序,并且职工姓名随之调整*/  
{
    char str[5];
    int min,i,j,k,temp;
for(i=0;i<9;i++)
{
    min=b[i];
    for(j=i+1;j<10;j++)
        if(min>b[j])
        {min=b[j];
         k=j;
        }
        temp=b[i];b[i]=b[k];b[k]=temp;
        strcpy(str,a[i]);strcpy(a[i],a[k]);strcpy(a[k],str);
}
for(i=0;i<10;i++)
{
    printf("%-2d  ",b[i]);
    puts(a[i]);
    printf("\n");
}
}
搜索更多相关主题的帖子: 毛病 
2010-08-05 16:23
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:2 
void enter(char a[10][5],int b[10])
{
    int i;
    printf("请输入职工号及职工姓名:\n");
    for(i=0;i<10;i++)
    {
        scanf("%d",&b[i]);
        scanf("%s",a[i]);//你怎么把二维数组当一维用了?
    }
}

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-08-05 16:54
三岩
Rank: 1
等 级:新手上路
帖 子:20
专家分:6
注 册:2010-7-19
收藏
得分:0 
scanf("%s",a[i]);这样做是绝对可以的!!a[i]也是地址啊!!!第i行的地址!!!
麻烦再看看其他错误!
2010-08-05 19:36
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:10 
void sort(char a[10][5],int b[10])                   /*按职工号进行由小到大排序,并且职工姓名随之调整*/  
{
    char str[5];
    int min,i,j,k,temp;

    for(i=0;i<9;i++)
    {
        k = i;
        for(j=i+1;j<10;j++)
            if(b[k]>b[j])
            {
                k=j;
            }
        temp=b[i];
        b[i]=b[k];
        b[k]=temp;

        strcpy(str,a[i]);
        strcpy(a[i],a[k]);
        strcpy(a[k],str);
}
    for(i=0;i<10;i++)
    {
        printf("%-2d  ",b[i]);
        puts(a[i]);
        printf("\n");
    }
}
2010-08-05 19:53
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:8 
k没有初始化,如果b[0]最小的话,后面的交换由于k是一个随机值,所以会出错。
2010-08-05 19:55
三岩
Rank: 1
等 级:新手上路
帖 子:20
专家分:6
注 册:2010-7-19
收藏
得分:0 
哦,确实是这一个原因。不过我当初输入的数据,第一个数据并非最小值,不过后面依然会出问题!!
很谢谢你!!!!
2010-08-05 20:04
快速回复:没法了!!请大家看一下什么毛病??
数据加载中...
 
   



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

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