| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2838 人关注过本帖
标题:结构体怎么输出对应的值
只看楼主 加入收藏
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:8 
结构体怎么输出对应的值
程序代码:
#include<stdio.h>
#include <string.h>

struct student
{
char num[20];
char name[20];

};
void main()
{
    struct student stu[20]={
    {"201060001","Zhao"},
    {"201060002","Qian"},
    {"201060009","Jiang"},
    {"201060003","Sun"},
    {"201060005","Wang"},
    {"201060006","Zhou"},
    {"201060004","Li"},
    {"201060008","Zhen"},
    {"201060007","Wu"},
    {"201060010","Shen"}};
    char a[20][300],temp[300];
    int i,j;
    for(i=0;i<10;i++)
        for(j=i+1;j<10;j++)
        {
            if(strcmp(stu[i].num,stu[j].num)>0)
            {
                strcpy(temp,stu[i].num);
                strcpy(stu[i].num,stu[j].num);
                strcpy(stu[j].num,temp);
            }
         }
     printf("*******************************\n");
     printf("Results:\n\n");
    for(i=0;i<10;i++)
    {
        puts(stu[i].num);
        printf("\n");
    }
}
请问怎么将对应的姓名输出来啊?
搜索更多相关主题的帖子: 结构体 
2011-05-30 12:54
Pirelo
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:118
专家分:550
注 册:2011-1-28
收藏
得分:2 
不是很明白楼主的意思,你如果要输出学号对应的名字,在最后一个for循环里面再加一个puts函数不就行了吗?
程序代码:
    for(i=0;i<10;i++)
    {
        puts(stu[i].num);
        puts(stu[i].name);
        printf("\n");  
    }

2011-05-30 17:25
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:2 
额。根据学号,排序啦。
2011-05-30 17:43
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 2楼 Pirelo
直接加puts输出的不是对应的名字。
2011-05-30 18:06
Pirelo
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:118
专家分:550
注 册:2011-1-28
收藏
得分:0 
回复 4楼 宇智波曌
明白你的意思了,你是在升序排列学号的时候,把名字打乱了,没对应起来,这样改一下就可以了:
程序代码:
    for(i=0;i<10;i++)
    {
        for(j=i+1;j<10;j++)
        {
            if(strcmp(stu[i].num,stu[j].num)>0)
            {  
                //exchange num
                strcpy(temp,stu[i].num);
                strcpy(stu[i].num,stu[j].num);
                strcpy(stu[j].num,temp);
                //exchange name when num has been changed
                strcpy(temp,stu[i].name);
                strcpy(stu[i].name,stu[j].name);
                strcpy(stu[j].name,temp);

            }
         }
    }

 
2011-05-30 18:33
pangping
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2011-5-30
收藏
得分:2 
#include<iostream.h>
#include<string.h>
struct students{
   
    char num[10];
    char name[10];
};
void main()
{
    students std[10]={
    {"201060010","Shen"},
    {"201060002","Qian"},
    {"201060009","Jiang"},
    {"201060003","Sun"},
    {"201060005","Wang"},
    {"201060006","Zhou"},
    {"201060004","Li"},
    {"201060008","Zhen"},
    {"201060007","Wu"},
    {"201060001","Zhao"},
    };
    students temp;
    for(int i=0;i<10;i++)
    {
        cout<<std[i].num<<" "<<std[i].name<<endl;
    }
    for( i=0;i<10;i++)
        for(int j=i+1;j<10;j++)
        {
            if(strcmp(std[i].num,std[j].num)>0)
            {
                strcpy(temp.num,std[i].num);
                strcpy(temp.name,std[i].name);

                strcpy(std[i].name,std[j].name);
                strcpy(std[i].num,std[j].num);

                strcpy(std[j].name,temp.name);
                strcpy(std[j].num,temp.num);
            }
        }
    for( i=0;i<10;i++)
    cout<<std[i].num<<" "<<std[i].name<<endl;
}
2011-05-30 18:56
pangping
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2011-5-30
收藏
得分:0 
学号排序的时候 名字跟着也换过来
2011-05-30 18:57
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 7楼 pangping
这个问题我已解决,不过新的问题又出来了,下面这个程序怎么改成调用函数。我调用的时候没有值输出,好纠结啊!
程序代码:
[color=#0000FF]#include<stdio.h>
#include <string.h>

struct staff
{
char num[20];
char name[20];

};
void fac(struct staff *p)
{

 int i;

 char x[20];

 for(i=0;i<10;i++)
    {
   
     if(strcmp(x,p->num)==0)
     puts(p->name);
    }
}
void main()
{
    struct staff sta[10]={
    {"201060010","Shen"},
    {"201060002","Qian"},
    {"201060009","Jiang"},
    {"201060003","Sun"},
    {"201060005","Wang"},
    {"201060006","Zhou"},
    {"201060004","Li"},
    {"201060008","Zhen"},
    {"201060007","Wu"},
    {"201060001","Zhao"}
    };
    struct staff temp[20];
    struct staff *p;
     char x[20];
    int i;
    for(i=0;i<10;i++)
    {   
        printf("%s      %s\n",sta[i].num,sta[i].name);
    }
    printf("====================================================\n");
    printf("查找ID:\n");
    gets(x);
    p=&sta[i];
    fac(sta);
    puts(sta[i].name);
  printf("====================================================\n");
   
}

[/color]

[ 本帖最后由 宇智波曌 于 2011-5-31 08:52 编辑 ]
2011-05-31 08:27
Pirelo
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:118
专家分:550
注 册:2011-1-28
收藏
得分:0 
回复 8楼 宇智波曌
程序代码:
#include<stdio.h>
#include <string.h>

struct staff
{
char num[20];
char name[20];
};

void fac(struct staff *psta)
{
    int i;
    char x[20];
    printf("===========please input the num or name:===========>\n");
    gets(x);
    for(i=0;i<10;i++)
    {
       
        if(strcmp(x,psta[i].num)==0)
        {
            printf("The corresponding name of the num you inputed is: ");
            puts(psta[i].name);
        }

        else if(strcmp(x,psta[i].name)==0)
        {
            printf("The corresponding num of the name you inputed is: ");
            puts(psta[i].num);
        }
    }
}
void main()
{
    struct staff sta[10]={
    {"201060010","Shen"},
    {"201060002","Qian"},
    {"201060009","Jiang"},
    {"201060003","Sun"},
    {"201060005","Wang"},
    {"201060006","Zhou"},
    {"201060004","Li"},
    {"201060008","Zhen"},
    {"201060007","Wu"},
    {"201060001","Zhao"}
    };

    int i;
    for(i=0;i<10;i++)
    {  
        printf("%s      %s\n",sta[i].num,sta[i].name);
    }
    printf("====================================================\n");
    printf("查找ID:\n");
   
    //调用查询函数fac()
    fac(sta);
    printf("====================================================\n"); 
}


[ 本帖最后由 Pirelo 于 2011-5-31 19:22 编辑 ]
2011-05-31 19:20
快速回复:结构体怎么输出对应的值
数据加载中...
 
   



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

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