白书问答系列之输入函数的顺序

话不多说,先来一个没有问题的代码:

#include <stdio.h>
int main()
{
 char num[12],name[10],sex,id[100],salary[100],address[100];
// 
 gets(num);
 gets(name);
 printf("职工号:%s 名字:%s ",num,name);
//
 gets(id);
 gets(salary);
 gets(address);
 printf("身份证号:%s 工资:%s 地址:%s ",id,salary,address);
//
 sex=getchar();
 if (sex == 'm' ||sex == 'M')
  printf("性别:男 ");
 else if (sex == 'w' ||sex == 'W')
  printf("性别:女 ");
 
 return 0;
}

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YeH5bm95ri455m95Lmm,size_20,color_FFFFFF,t_70,g_se,x_16

 

以上是没有问题的代码,是可以运行的。哎呀我很调皮,如果我把 sex=getchar(); 这一行代码放在gets(address)之前的话,会有什么的情况发生?

#include <stdio.h>

int main()

{

 char num[12],name[10],sex,id[100],salary[100],address[100];

// 

 gets(num);

 gets(name);

 printf("职工号:%s 名字:%s ",num,name);

//

 gets(id);

 gets(salary);

 sex=getchar();

 gets(address);

 printf("身份证号:%s 工资:%s 地址:%s ",id,salary,address);

//

// sex=getchar();

 if (sex == 'm' ||sex == 'M')

  printf("性别:男 ");

 else if (sex == 'w' ||sex == 'W')

  printf("性别:女 ");

 

 return 0;

}

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YeH5bm95ri455m95Lmm,size_20,color_FFFFFF,t_70,g_se,x_16

 什么情况?地址中的第一个字母去哪里了?性别去哪里了?!!

别急,因为我们把sex=getchar(); 这一行代码放在gets(address)之前了,所以地址中的第一个字符被性别用去了,但又由于性别的字符识别是wWmM,而被用去的字符是b,识别不了,所以性别的信息才输不出来。

那我们要怎么做呢?来,我们一起来看

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YeH5bm95ri455m95Lmm,size_20,color_FFFFFF,t_70,g_se,x_16

 这样,只要我们在地址的输入字符串中第一个输入性别能够识别的字符,这样的话,性别还有地址的信息也就对了。

如果你把性别放在其他的位置,相应的也要在什么的前面,加多一个性别能够识别的字符就可以了,解决方法是一样的。

哈哈哈,加油。

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值