| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 553 人关注过本帖, 1 人收藏
标题:大神们,麻烦帮忙看看这个程序
只看楼主 加入收藏
the_27th
Rank: 2
等 级:论坛游民
帖 子:29
专家分:29
注 册:2012-7-10
结帖率:60%
收藏(1)
 问题点数:0 回复次数:7 
大神们,麻烦帮忙看看这个程序
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
{
    char name[10];
    long id;
    int cn;
    int match;
}stu[3]={{"liang",1273,80,86},{"zhang",1277,86,79},{"pang",1269,82,86}};


void main()
{
    char ch;
    printf("A. 请输入你要查询的学生的信息的学号\n");
    printf("B. 请输入你要查询的学生的信息的名字\n");
    switch(ch=getchar())
    {
    case 'A':
    {
        int i;
        long number;
        printf("请输入学生的学号:\n");
        scanf("%d",&number);
        for(i=0;i<3;i++)
        {
            if(number==stu[i].id)
            {
                printf("该学生的信息为:\n");
                printf("%-10s%5d%7d%7d\n",stu[i].name,stu[i].id,stu[i].cn,stu[i].match);
            }       
        }
      };break;
    case 'B':
        {
            int i;
            char names[10];
            printf("请输入学生的姓名:\n");
            for(i=0;i<3;i++)
            {
                if(strcmp(gets(names),stu[i].name)==0)//运行程序时,里面要打印的内容没办法输出,不知道怎么回事
                {
                        printf("该学生的信息为:\n");
                        printf("%-10s%5d%7d%7d\n",stu[i].name,stu[i].id,stu[i].cn,stu[i].match);
                }   
            }
        };break;
    default:printf("error!\n");
    }
}


本来是要实现按姓名查找功能,但是输入姓名后,却没办法显示要输出的内容,多谢大神们了!@
2012-07-14 23:45
ly2222
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:217
专家分:618
注 册:2012-6-15
收藏
得分:0 
路过,帮顶下。
2012-07-15 10:15
doing8
Rank: 1
等 级:新手上路
帖 子:20
专家分:3
注 册:2012-6-15
收藏
得分:0 
    case 'B':
        {
            int i;
            char names[10];
            printf("请输入学生的姓名:\n");
            getchar();          //添加一个 接受 回车键 语句 。。。。
            gets(names);
            for(i=0;i<3;i++)
            {
                if(strcmp(names,stu[i].name)==0)//运行程序时,里面要打印的内容没办法输出,不知道怎么回事
                {
                    printf("该学生的信息为:\n");
                    printf("%-10s%5d%7d%7d\n",stu[i].name,stu[i].id,stu[i].cn,stu[i].match);
                }   
            }
        };break;
    default:printf("error!\n");

改 了一下 这样就可以 运行了  
 for(i=0;i<3;i++)
             {
                 if(strcmp(gets(names),stu[i].name)==0)//运行程序时,里面要打印的内容没办法输出,不知道怎么回事
                 {
                         printf("该学生的信息为:\n");
                         printf("%-10s%5d%7d%7d\n",stu[i].name,stu[i].id,stu[i].cn,stu[i].match);
                 }   
             }
gets(names) 写在for循环外面 。。。 否则 你的 pang 要输入 3次 才找得到 zhang 2次
因为他 每次进去的时候 都是 和只和 当前 stu[i].name 比较 其他的都比较 。。。
2012-07-15 16:01
kennel2009
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:157
注 册:2011-12-13
收藏
得分:0 
程序代码:
printf("请输入学生的姓名:\n");
printf("%c \n", names);//输出$,没弄明白
gets(names);
printf("%c \n", names);
gets(names);
for(i=0;i<3;i++)
{
    if(strcmp(names,stu[i].name)==0)//运行程序时,里面要打印的内容没办法输出,不知道怎么回事
    {
        printf("该学生的信息为:\n");
        printf("%-10s%5d%7d%7d\n",stu[i].name,stu[i].id,stu[i].cn,stu[i].match);
    }   
    printf("%c\n", names);
}

很多人不愿意回帖的一个原因是此贴没分.

[ 本帖最后由 kennel2009 于 2012-7-15 16:12 编辑 ]
2012-07-15 16:06
clyde3
Rank: 2
等 级:论坛游民
帖 子:68
专家分:65
注 册:2012-7-10
收藏
得分:0 
我只是来学习的!

堇色安年,谁许我一世荒芜→→玖零逅.那扯蛋的青春!
2012-07-15 16:22
the_27th
Rank: 2
等 级:论坛游民
帖 子:29
专家分:29
注 册:2012-7-10
收藏
得分:0 
回复 3楼 doing8
谢谢大师啊
2012-07-15 23:57
circlemiss
Rank: 2
等 级:论坛游民
帖 子:30
专家分:51
注 册:2012-7-19
收藏
得分:0 
你输完B接着输你要输入的姓名别按\n,gets函数遇'\n'自动转'\0','\0'正好是字符串结束标志,所以你输入的姓名相当于什么也没输入,自然不会有输出了。
2012-07-22 21:48
circlemiss
Rank: 2
等 级:论坛游民
帖 子:30
专家分:51
注 册:2012-7-19
收藏
得分:0 
程序没问题时,一定要小心输入,输入不正确自然不会得到预期的结果。
2012-07-22 21:51
快速回复:大神们,麻烦帮忙看看这个程序
数据加载中...
 
   



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

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