首页 新闻 搜索 专区 学院

非常非常简单的c语言代码 新人自学 不懂求助!

0
悬赏园豆:5 [已解决问题] 解决于 2020-02-23 11:06



这里的变量 asset 定义成 double 和 float 两种不同类型时 结果完全不同 不知道是为什么 甚至double类型 数值就成0了 求助!


这里我想请问一下 后续的录入 char c 为什么不是在打印前面两个变量后 录入呢?

求助大家!!

c
伴龙的呼吸的主页 伴龙的呼吸 | 初学一级 | 园豆:183
提问于:2020-02-23 10:17
< >
分享
最佳答案
1

第一个问题,scanf读取double类型的值,需要用lf修饰符,应该是:scanf("%d %lf", &age, &asset)
第二个问题,没看明白你要表达什么?你的问题是?

收获园豆:5
wengle | 小虾三级 |园豆:567 | 2020-02-23 10:41

谢谢你
我的问题是 按照我的想法 第二个程序 应该是先打印出变量 a b 的值 然后再录入 c的值 再打印c
可实际情况却是: 程序需要一次录入 a b c 的值 然后一次性全部打印

伴龙的呼吸 | 园豆:183 (初学一级) | 2020-02-23 10:44

@伴龙的呼吸: scanf的用法是:遇到format格式之后的空白字符会停止,你输入完[3,4回车]之后,实际上你是输入了[3,4\n]这四个字符,scanf遇到\n会停止,当你下次调用scanf的时候,输入缓冲区里有一个[\n]回车可以读取,所以c变量的值就是回车,你看到的现象就是只输入一次,就把原本需要输入两次的结果都打印出来了

int main(){
    int a, b;
    scanf("%d,%d", &a, &b);
    printf("%d %d\n", a, b);

    printf("input c\n");
    char c;
    scanf("\n%c", &c);
    printf("%d\n",c);
    return 0;
}

更加常用的做法是:

int main(){
    int a, b;
    scanf("%d,%d", &a, &b);
    printf("%d %d\n", a, b);

    printf("input c\n");
    char c;
    getchar(); //吃掉回车符
    scanf("%c", &c);
    printf("%d\n",c);
    return 0;
}

麻烦采纳一下~~~

wengle | 园豆:567 (小虾三级) | 2020-02-23 11:05

@wengle: 好的!!!!!谢谢你!!!!!!!

伴龙的呼吸 | 园豆:183 (初学一级) | 2020-02-23 11:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册