| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 790 人关注过本帖
标题:这个程序为什么不能正常输入所需要的数据,怎样修改?
只看楼主 加入收藏
呆呆521
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-5-30
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
这个程序为什么不能正常输入所需要的数据,怎样修改?
#define N 5
#include"string.h"
#include"stdio.h"
struct zg_type
{
   char num;
   char name[21];
   char sex;
   char bm;   
}s[N];
typedef struct zg_type S;
input(S s[])
{
   int i;
   for(i=0;i<N;i++)
   {
 
   
     printf("请输入工号、姓名、性别、部门\n");
     scanf("%5s%5c%5s",s[i].num,s[i].name,&s[i].sex,s[i].bm);
     printf("输出");
   }
}
void print(S s[])
{
    int i;
    for(i=0;i<N;i++)
       printf("输出工号、姓名、性别、部门\n");
       printf("%5s %5s %5s %5s",s[i].num,s[i].name,s[i].sex,s[i].bm);
}
void sort(S s[])
{
    int t,i,j;
    for(i=0;i<N-1;i++)
    {
        for(j=i+1;j<N;j++)
        {  
           if(s[i].num>s[j].num)
           {
               t=s[i].num;
               s[i].num=s[j].num;
               s[j].num=t;
           }
        }
    }
    for(i=0;i<N;i++)
    {
        printf("输出工号、姓名、性别、部门\n");
        printf("%s %s %c %s",s[i].num,s[i].name,s[i].sex,s[i].bm);
    }
}
main()
{
    input(s);
    print(s);
    sort(s);
}
搜索更多相关主题的帖子: include 姓名 
2014-09-02 18:14
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:5 
scanf("%5s%5c%5s",s[i].num,s[i].name,&s[i].sex,s[i].bm);

坚持----------------------------------唯一的道路
shit ! ! !
2014-09-02 18:28
呆呆521
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-5-30
收藏
得分:0 
回复 2 楼 wssy213
scanf("%5d%5s%5c%5s",&s[i].num,s[i].name,&s[i].sex,s[i].bm);修改之后还是不能正常运行。
2014-09-02 19:46
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:5 

scanf("%5d%5s%5c%5s",&s[i].num,s[i].name,&s[i].sex,s[i].bm);修改之后还是不能正常运行。

简单说说:
在调试阶段尽量不要用复杂语句
试试
scanf("%d%s%c%s",&s[i].num,s[i].name,&s[i].sex,&s[i].bm);
2014-09-02 20:40
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:0 
以下是引用呆呆521在2014-9-2 19:46:14的发言:

scanf("%5d%5s%5c%5s",&s.num,s.name,&s.sex,s.bm);修改之后还是不能正常运行。

你确定修改完了?

坚持----------------------------------唯一的道路
shit ! ! !
2014-09-02 20:49
便便编编
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2014-9-2
收藏
得分:5 
scanf中数字5去掉,应该可以吧!
2014-09-02 21:15
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:0 
以下是引用便便编编在2014-9-2 21:15:29的发言:

scanf中数字5去掉,应该可以吧!

你试过了吗?

坚持----------------------------------唯一的道路
shit ! ! !
2014-09-02 22:41
呆呆521
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-5-30
收藏
得分:0 
回复 5 楼 wssy213
我找不到其他错误,帮忙修改一下。
2014-09-03 20:08
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:0 
scanf(格式控制,地址表列);
格式控制字符串中的格式声明要与后面的地址表列一一对应,数据类型也要求一致;在scanf函数中,格式声明中%和格式字符之间一般不要加入数字。再者,既然是 地址表列,那么表列中的元素就得代表地址(如指针,数组名....)


你还是将前面的基础打好吧

坚持----------------------------------唯一的道路
shit ! ! !
2014-09-03 20:35
Coincedence4
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:52
专家分:151
注 册:2014-9-4
收藏
得分:5 
输入格式不对,只有数组才是%s,其他都是%c.还有最好不要输入格式上限制位宽这样多余的会被截掉(输入和输出位域作用不是一样的),另外你这输入格式是连着的,你在连着输入的过程中编译器不知道怎么截取。可行办法:
 1.讲结构体中数据都用数组格式,统一%s格式输入输出
 2.scanf("%5c,%5s,%5c,%5c",&s[i].num,s[i].name,&s[i].sex,&s[i].bm);其他输入输出格式依次类推(最好位宽,或者加大位宽)
2014-09-05 00:44
快速回复:这个程序为什么不能正常输入所需要的数据,怎样修改?
数据加载中...
 
   



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

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