A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 缘之有缘 中级黑马   /  2016-3-28 22:19  /  1117 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

输入的东西(变量)要保存到一个东西(变量)里面
scanf("%d%d",&a,&b);
&:获取变量的地址,这里是通过地址,将变量的数值放到变量里面。
注:当程序拿到输入的数值后,先查看目标变量(接受输入的变量)的地址,然后,将数值放到该地址的变量中。
跟收快递一样,小明买东西,快递查看小明的地址,然后把快递放到小明手上
============
有这样的一段代码:
#include
void main(){
        int age;
        char sex;
        printf("请输入年龄:");
        scanf("%d",&age);
        printf("请输入性别:");
        scanf("%c",&sex);
        printf("==================\n");
        printf("年龄是:%d\n性别是:%c\n我前面应该没有空行!\n",age,sex);
}
你会发现运行到输入性别的时候,给跳过了,这是为什么?
因为之前输入年龄的时候按了回车,回车在缓冲区,导致下次输入性别的时候,把那个回车读了进来。
这时候你运行代码的时候,会发现输出的时候,多了个换行;

如果想解决这个问题,我这里提供一个方法,你在前面加个getchar();就把那个回车过滤掉了。
我在网上看到解决这个问题的方法很多,我就记了个简单的。
这时候代码变成了:
#include
void main(){
        int age;
        char sex;
        printf("请输入年龄:");
        scanf("%d",&age);
        getchar();//等待一下
        printf("请输入性别:");
        scanf("%c",&sex);
        printf("==================\n");
        printf("年龄是:%d\n性别是:%c\n我前面应该没有空行!\n",age,sex);
}
注:getchar(); -->程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).

1 个回复

倒序浏览
感谢分享!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马